1116680a4aac90f2aa7413d9095a592090648e557Ben MurdochOPTION DOTNAME 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles).text$ SEGMENT ALIGN(256) 'CODE' 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 20116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_encrypt_core PROC PRIVATE 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,rdx 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,16 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov eax,DWORD PTR[240+rdx] 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,xmm9 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,XMMWORD PTR[$L$k_ipt] 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn xmm1,xmm0 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm5,XMMWORD PTR[r9] 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld xmm1,4 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm9 31116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,208 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm0,XMMWORD PTR[(($L$k_ipt+16))] 33116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,193 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm5 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r9,16 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm2 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[$L$k_mc_backward] 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$enc_entry 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 40116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_loop:: 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,xmm13 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm0,xmm12 45116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,226 46116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,195 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm4,xmm5 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm5,xmm15 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm4 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,XMMWORD PTR[((-64))+r10*1+r11] 51116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,234 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,XMMWORD PTR[r10*1+r11] 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,xmm14 54116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,211 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,xmm0 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm5 57116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,193 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r9,16 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm2 60116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,220 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,16 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm0 63116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,193 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r11,030h 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rax,1 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm3 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_entry:: 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,xmm9 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm5,xmm11 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn xmm1,xmm0 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld xmm1,4 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm9 75116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,232 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,xmm10 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm1 78116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,217 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,xmm10 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm5 81116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,224 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,xmm10 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm4,xmm5 84116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,211 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,xmm10 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm0 87116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,220 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm5,XMMWORD PTR[r9] 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm1 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$enc_loop 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,XMMWORD PTR[((-96))+r10] 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm0,XMMWORD PTR[((-80))+r10] 95116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,226 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm4,xmm5 97116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,195 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,XMMWORD PTR[64+r10*1+r11] 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm4 100116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,193 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_encrypt_core ENDP 103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 110116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_decrypt_core PROC PRIVATE 112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,rdx 113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov eax,DWORD PTR[240+rdx] 114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,xmm9 115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,XMMWORD PTR[$L$k_dipt] 116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn xmm1,xmm0 117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,rax 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld xmm1,4 119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm5,XMMWORD PTR[r9] 120116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shl r11,4 121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm9 122116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,208 123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm0,XMMWORD PTR[(($L$k_dipt+16))] 124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r11,030h 125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[$L$k_dsbd] 126116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,193 127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r11,030h 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm5 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm5,XMMWORD PTR[(($L$k_mc_forward+48))] 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm2 131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r9,16 132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r11,r10 133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$dec_entry 134116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 135116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_loop:: 137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,XMMWORD PTR[((-32))+r10] 141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,XMMWORD PTR[((-16))+r10] 142116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,226 143116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,203 144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm4 145116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,XMMWORD PTR[r10] 146116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm1 147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,XMMWORD PTR[16+r10] 148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 149116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,226 150116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,197 151116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,203 152116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm4 153116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,XMMWORD PTR[32+r10] 154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm1 155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,XMMWORD PTR[48+r10] 156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 157116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,226 158116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,197 159116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,203 160116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm4 161116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,XMMWORD PTR[64+r10] 162116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm1 163116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,XMMWORD PTR[80+r10] 164116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 165116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,226 166116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,197 167116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,203 168116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm4 169116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r9,16 170116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,58,15,237,12 171116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm1 172116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rax,1 173116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 174116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_entry:: 175116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 176116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,xmm9 177116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn xmm1,xmm0 178116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,xmm11 179116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld xmm1,4 180116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm9 181116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,208 182116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,xmm10 183116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm1 184116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,217 185116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,xmm10 186116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm2 187116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,224 188116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm4,xmm2 189116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,xmm10 190116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,211 191116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,xmm10 192116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm0 193116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,220 194116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm0,XMMWORD PTR[r9] 195116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm1 196116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$dec_loop 197116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 198116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 199116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,XMMWORD PTR[96+r10] 200116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,226 201116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm4,xmm0 202116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm0,XMMWORD PTR[112+r10] 203116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,XMMWORD PTR[((-352))+r11] 204116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,195 205116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm4 206116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,194 207116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_decrypt_core ENDP 209116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 210116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 211116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 212116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 213116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 214116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 215116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 216116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 217116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_core PROC PRIVATE 218116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 219116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 220116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 221116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 222116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 223116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_preheat 224116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm8,XMMWORD PTR[$L$k_rcon] 225116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm0,XMMWORD PTR[rdi] 226116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 227116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 228116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,xmm0 229116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[$L$k_ipt] 230116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_transform 231116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm7,xmm0 232116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 233116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[$L$k_sr] 234116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch test rcx,rcx 235116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$schedule_am_decrypting 236116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 237116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 238116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu XMMWORD PTR[rdx],xmm0 239116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$schedule_go 240116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 241116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_am_decrypting:: 242116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 243116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,XMMWORD PTR[r10*1+r8] 244116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,217 245116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu XMMWORD PTR[rdx],xmm3 246116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r8,030h 247116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 248116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_go:: 249116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp esi,192 250116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ja $L$schedule_256 251116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch je $L$schedule_192 252116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 253116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 254116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 255116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 256116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 257116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 258116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 259116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 260116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 261116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 262116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_128:: 263116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov esi,10 264116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 265116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$oop_schedule_128:: 266116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_round 267116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dec rsi 268116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jz $L$schedule_mangle_last 269116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_mangle 270116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$oop_schedule_128 271116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 272116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 273116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 274116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 275116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 276116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 277116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 278116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 279116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 280116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 281116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 282116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 283116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 284116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 285116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 286116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 287116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 288116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_192:: 289116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm0,XMMWORD PTR[8+rdi] 290116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_transform 291116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm6,xmm0 292116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm4,xmm4 293116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movhlps xmm6,xmm4 294116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov esi,4 295116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 296116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$oop_schedule_192:: 297116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_round 298116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,58,15,198,8 299116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_mangle 300116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_192_smear 301116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_mangle 302116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_round 303116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dec rsi 304116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jz $L$schedule_mangle_last 305116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_mangle 306116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_192_smear 307116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$oop_schedule_192 308116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 309116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 310116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 311116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 312116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 313116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 314116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 315116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 316116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 317116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 318116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 319116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 320116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_256:: 321116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm0,XMMWORD PTR[16+rdi] 322116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_transform 323116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov esi,7 324116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 325116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$oop_schedule_256:: 326116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_mangle 327116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm6,xmm0 328116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 329116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 330116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_round 331116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dec rsi 332116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jz $L$schedule_mangle_last 333116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_mangle 334116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 335116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 336116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pshufd xmm0,xmm0,0FFh 337116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm5,xmm7 338116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm7,xmm6 339116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_low_round 340116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm7,xmm5 341116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 342116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$oop_schedule_256 343116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 344116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 345116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 346116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 347116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 348116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 349116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 350116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 351116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 352116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 353116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 354116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 355116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 356116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_mangle_last:: 357116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 358116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[$L$k_deskew] 359116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch test rcx,rcx 360116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$schedule_mangle_last_dec 361116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 362116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 363116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,XMMWORD PTR[r10*1+r8] 364116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,193 365116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[$L$k_opt] 366116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdx,32 367116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 368116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_mangle_last_dec:: 369116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdx,-16 370116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,XMMWORD PTR[$L$k_s63] 371116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_transform 372116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu XMMWORD PTR[rdx],xmm0 373116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 374116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 375116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm0 376116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm1,xmm1 377116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm2 378116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm3 379116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm4,xmm4 380116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm5,xmm5 381116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm6,xmm6 382116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm7,xmm7 383116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 384116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_core ENDP 385116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 386116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 387116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 388116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 389116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 390116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 391116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 392116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 393116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 394116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 395116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 396116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 397116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 398116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 399116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 400116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 401116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 402116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_192_smear PROC PRIVATE 403116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pshufd xmm1,xmm6,080h 404116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pshufd xmm0,xmm7,0FEh 405116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm6,xmm1 406116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm1,xmm1 407116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm6,xmm0 408116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm0,xmm6 409116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movhlps xmm6,xmm1 410116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 411116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_192_smear ENDP 412116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 413116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 414116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 415116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 416116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 417116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 418116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 419116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 420116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 421116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 422116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 423116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 424116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 425116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 426116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 427116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 428116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 429116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 430116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 431116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 432116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 433116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_round PROC PRIVATE 434116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 435116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm1,xmm1 436116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,65,15,58,15,200,15 437116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,69,15,58,15,192,15 438116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm7,xmm1 439116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 440116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 441116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pshufd xmm0,xmm0,0FFh 442116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,58,15,192,1 443116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 444116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 445116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 446116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 447116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_low_round:: 448116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 449116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,xmm7 450116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pslldq xmm7,4 451116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm7,xmm1 452116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,xmm7 453116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pslldq xmm7,8 454116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm7,xmm1 455116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm7,XMMWORD PTR[$L$k_s63] 456116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 457116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 458116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,xmm9 459116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn xmm1,xmm0 460116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld xmm1,4 461116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm9 462116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,xmm11 463116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,208 464116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm1 465116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,xmm10 466116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,217 467116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm2 468116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,xmm10 469116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,224 470116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm4,xmm2 471116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,xmm10 472116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,211 473116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm0 474116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,xmm10 475116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,220 476116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm1 477116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,xmm13 478116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,226 479116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm0,xmm12 480116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,195 481116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm4 482116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 483116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 484116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm7 485116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm7,xmm0 486116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 487116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_round ENDP 488116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 489116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 490116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 491116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 492116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 493116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 494116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 495116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 496116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 497116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 498116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 499116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 500116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_transform PROC PRIVATE 501116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,xmm9 502116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn xmm1,xmm0 503116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld xmm1,4 504116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm0,xmm9 505116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,XMMWORD PTR[r11] 506116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,208 507116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm0,XMMWORD PTR[16+r11] 508116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,193 509116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm2 510116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 511116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_transform ENDP 512116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 513116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 514116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 515116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 516116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 517116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 518116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 519116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 520116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 521116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 522116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 523116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 524116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 525116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 526116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 527116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 528116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 529116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 530116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 531116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 532116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 533116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 534116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 535116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 536116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 537116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 538116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_mangle PROC PRIVATE 539116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm4,xmm0 540116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm5,XMMWORD PTR[$L$k_mc_forward] 541116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch test rcx,rcx 542116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnz $L$schedule_mangle_dec 543116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 544116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 545116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdx,16 546116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm4,XMMWORD PTR[$L$k_s63] 547116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,229 548116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,xmm4 549116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,229 550116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm4 551116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,229 552116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm4 553116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 554116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$schedule_mangle_both 555116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 556116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_mangle_dec:: 557116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 558116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[$L$k_dksd] 559116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,xmm9 560116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pandn xmm1,xmm4 561116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch psrld xmm1,4 562116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pand xmm4,xmm9 563116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 564116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,XMMWORD PTR[r11] 565116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,212 566116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,XMMWORD PTR[16+r11] 567116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,217 568116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm2 569116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,221 570116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 571116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,XMMWORD PTR[32+r11] 572116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,212 573116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm3 574116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,XMMWORD PTR[48+r11] 575116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,217 576116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm2 577116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,221 578116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 579116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,XMMWORD PTR[64+r11] 580116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,212 581116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm3 582116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,XMMWORD PTR[80+r11] 583116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,217 584116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm2 585116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,221 586116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 587116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm2,XMMWORD PTR[96+r11] 588116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,212 589116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm2,xmm3 590116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm3,XMMWORD PTR[112+r11] 591116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,217 592116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm3,xmm2 593116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 594116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rdx,-16 595116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 596116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$schedule_mangle_both:: 597116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm1,XMMWORD PTR[r10*1+r8] 598116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 102,15,56,0,217 599116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add r8,-16 600116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r8,030h 601116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu XMMWORD PTR[rdx],xmm3 602116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 603116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_schedule_mangle ENDP 604116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 605116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 606116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 607116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 608116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC vpaes_set_encrypt_key 609116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 610116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 611116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_set_encrypt_key PROC PUBLIC 612116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rsp],rdi ;WIN64 prologue 613116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rsp],rsi 614116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 615116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_set_encrypt_key:: 616116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rcx 617116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,rdx 618116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,r8 619116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 620116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 621116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-184))+rsp] 622116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[16+rsp],xmm6 623116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[32+rsp],xmm7 624116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[48+rsp],xmm8 625116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[64+rsp],xmm9 626116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[80+rsp],xmm10 627116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[96+rsp],xmm11 628116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[112+rsp],xmm12 629116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[128+rsp],xmm13 630116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[144+rsp],xmm14 631116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[160+rsp],xmm15 632116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_key_body:: 633116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov eax,esi 634116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr eax,5 635116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add eax,5 636116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov DWORD PTR[240+rdx],eax 637116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 638116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov ecx,0 639116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8d,030h 640116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_core 641116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm6,XMMWORD PTR[16+rsp] 642116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm7,XMMWORD PTR[32+rsp] 643116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm8,XMMWORD PTR[48+rsp] 644116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm9,XMMWORD PTR[64+rsp] 645116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm10,XMMWORD PTR[80+rsp] 646116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm11,XMMWORD PTR[96+rsp] 647116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm12,XMMWORD PTR[112+rsp] 648116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm13,XMMWORD PTR[128+rsp] 649116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm14,XMMWORD PTR[144+rsp] 650116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm15,XMMWORD PTR[160+rsp] 651116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[184+rsp] 652116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_key_epilogue:: 653116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor eax,eax 654116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue 655116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rsp] 656116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 657116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_set_encrypt_key:: 658116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_set_encrypt_key ENDP 659116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 660116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC vpaes_set_decrypt_key 661116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 662116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 663116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_set_decrypt_key PROC PUBLIC 664116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rsp],rdi ;WIN64 prologue 665116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rsp],rsi 666116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 667116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_set_decrypt_key:: 668116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rcx 669116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,rdx 670116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,r8 671116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 672116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 673116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-184))+rsp] 674116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[16+rsp],xmm6 675116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[32+rsp],xmm7 676116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[48+rsp],xmm8 677116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[64+rsp],xmm9 678116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[80+rsp],xmm10 679116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[96+rsp],xmm11 680116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[112+rsp],xmm12 681116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[128+rsp],xmm13 682116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[144+rsp],xmm14 683116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[160+rsp],xmm15 684116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_key_body:: 685116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov eax,esi 686116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr eax,5 687116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add eax,5 688116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov DWORD PTR[240+rdx],eax 689116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shl eax,4 690116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdx,QWORD PTR[16+rax*1+rdx] 691116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 692116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov ecx,1 693116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8d,esi 694116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch shr r8d,1 695116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch and r8d,32 696116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor r8d,32 697116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_schedule_core 698116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm6,XMMWORD PTR[16+rsp] 699116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm7,XMMWORD PTR[32+rsp] 700116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm8,XMMWORD PTR[48+rsp] 701116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm9,XMMWORD PTR[64+rsp] 702116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm10,XMMWORD PTR[80+rsp] 703116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm11,XMMWORD PTR[96+rsp] 704116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm12,XMMWORD PTR[112+rsp] 705116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm13,XMMWORD PTR[128+rsp] 706116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm14,XMMWORD PTR[144+rsp] 707116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm15,XMMWORD PTR[160+rsp] 708116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[184+rsp] 709116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_key_epilogue:: 710116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor eax,eax 711116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue 712116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rsp] 713116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 714116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_set_decrypt_key:: 715116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_set_decrypt_key ENDP 716116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 717116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC vpaes_encrypt 718116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 719116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 720116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_encrypt PROC PUBLIC 721116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rsp],rdi ;WIN64 prologue 722116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rsp],rsi 723116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 724116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_encrypt:: 725116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rcx 726116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,rdx 727116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,r8 728116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 729116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 730116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-184))+rsp] 731116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[16+rsp],xmm6 732116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[32+rsp],xmm7 733116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[48+rsp],xmm8 734116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[64+rsp],xmm9 735116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[80+rsp],xmm10 736116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[96+rsp],xmm11 737116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[112+rsp],xmm12 738116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[128+rsp],xmm13 739116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[144+rsp],xmm14 740116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[160+rsp],xmm15 741116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_body:: 742116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm0,XMMWORD PTR[rdi] 743116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_preheat 744116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_encrypt_core 745116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu XMMWORD PTR[rsi],xmm0 746116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm6,XMMWORD PTR[16+rsp] 747116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm7,XMMWORD PTR[32+rsp] 748116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm8,XMMWORD PTR[48+rsp] 749116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm9,XMMWORD PTR[64+rsp] 750116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm10,XMMWORD PTR[80+rsp] 751116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm11,XMMWORD PTR[96+rsp] 752116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm12,XMMWORD PTR[112+rsp] 753116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm13,XMMWORD PTR[128+rsp] 754116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm14,XMMWORD PTR[144+rsp] 755116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm15,XMMWORD PTR[160+rsp] 756116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[184+rsp] 757116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$enc_epilogue:: 758116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue 759116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rsp] 760116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 761116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_encrypt:: 762116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_encrypt ENDP 763116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 764116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC vpaes_decrypt 765116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 766116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 767116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_decrypt PROC PUBLIC 768116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rsp],rdi ;WIN64 prologue 769116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rsp],rsi 770116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 771116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_decrypt:: 772116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rcx 773116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,rdx 774116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,r8 775116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 776116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 777116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-184))+rsp] 778116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[16+rsp],xmm6 779116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[32+rsp],xmm7 780116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[48+rsp],xmm8 781116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[64+rsp],xmm9 782116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[80+rsp],xmm10 783116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[96+rsp],xmm11 784116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[112+rsp],xmm12 785116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[128+rsp],xmm13 786116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[144+rsp],xmm14 787116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[160+rsp],xmm15 788116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_body:: 789116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm0,XMMWORD PTR[rdi] 790116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_preheat 791116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_decrypt_core 792116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu XMMWORD PTR[rsi],xmm0 793116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm6,XMMWORD PTR[16+rsp] 794116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm7,XMMWORD PTR[32+rsp] 795116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm8,XMMWORD PTR[48+rsp] 796116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm9,XMMWORD PTR[64+rsp] 797116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm10,XMMWORD PTR[80+rsp] 798116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm11,XMMWORD PTR[96+rsp] 799116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm12,XMMWORD PTR[112+rsp] 800116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm13,XMMWORD PTR[128+rsp] 801116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm14,XMMWORD PTR[144+rsp] 802116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm15,XMMWORD PTR[160+rsp] 803116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[184+rsp] 804116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$dec_epilogue:: 805116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue 806116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rsp] 807116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 808116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_decrypt:: 809116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_decrypt ENDP 810116680a4aac90f2aa7413d9095a592090648e557Ben MurdochPUBLIC vpaes_cbc_encrypt 811116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 812116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 813116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_cbc_encrypt PROC PUBLIC 814116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[8+rsp],rdi ;WIN64 prologue 815116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[16+rsp],rsi 816116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,rsp 817116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_begin_vpaes_cbc_encrypt:: 818116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,rcx 819116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,rdx 820116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,r8 821116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rcx,r9 822116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[40+rsp] 823116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,QWORD PTR[48+rsp] 824116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 825116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 826116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xchg rdx,rcx 827116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rcx,16 828116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jc $L$cbc_abort 829116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[((-184))+rsp] 830116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[16+rsp],xmm6 831116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[32+rsp],xmm7 832116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[48+rsp],xmm8 833116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[64+rsp],xmm9 834116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[80+rsp],xmm10 835116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[96+rsp],xmm11 836116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[112+rsp],xmm12 837116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[128+rsp],xmm13 838116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[144+rsp],xmm14 839116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps XMMWORD PTR[160+rsp],xmm15 840116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_body:: 841116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm6,XMMWORD PTR[r8] 842116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rsi,rdi 843116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_preheat 844116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp r9d,0 845116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch je $L$cbc_dec_loop 846116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$cbc_enc_loop 847116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 848116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_enc_loop:: 849116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm0,XMMWORD PTR[rdi] 850116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm6 851116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_encrypt_core 852116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm6,xmm0 853116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu XMMWORD PTR[rdi*1+rsi],xmm0 854116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[16+rdi] 855116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rcx,16 856116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnc $L$cbc_enc_loop 857116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jmp $L$cbc_done 858116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 859116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_dec_loop:: 860116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu xmm0,XMMWORD PTR[rdi] 861116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm7,xmm0 862116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call _vpaes_decrypt_core 863116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pxor xmm0,xmm6 864116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm6,xmm7 865116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu XMMWORD PTR[rdi*1+rsi],xmm0 866116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[16+rdi] 867116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rcx,16 868116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jnc $L$cbc_dec_loop 869116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_done:: 870116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqu XMMWORD PTR[r8],xmm6 871116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm6,XMMWORD PTR[16+rsp] 872116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm7,XMMWORD PTR[32+rsp] 873116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm8,XMMWORD PTR[48+rsp] 874116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm9,XMMWORD PTR[64+rsp] 875116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm10,XMMWORD PTR[80+rsp] 876116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm11,XMMWORD PTR[96+rsp] 877116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm12,XMMWORD PTR[112+rsp] 878116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm13,XMMWORD PTR[128+rsp] 879116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm14,XMMWORD PTR[144+rsp] 880116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movaps xmm15,XMMWORD PTR[160+rsp] 881116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsp,QWORD PTR[184+rsp] 882116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_epilogue:: 883116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$cbc_abort:: 884116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue 885116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rsp] 886116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 887116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_end_vpaes_cbc_encrypt:: 888116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvpaes_cbc_encrypt ENDP 889116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 890116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 891116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 892116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 893116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 894116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 895116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 896116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 897116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_preheat PROC PRIVATE 898116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[$L$k_s0F] 899116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm10,XMMWORD PTR[((-32))+r10] 900116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm11,XMMWORD PTR[((-16))+r10] 901116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm9,XMMWORD PTR[r10] 902116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm13,XMMWORD PTR[48+r10] 903116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm12,XMMWORD PTR[64+r10] 904116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm15,XMMWORD PTR[80+r10] 905116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch movdqa xmm14,XMMWORD PTR[96+r10] 906116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 907116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_preheat ENDP 908116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 909116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 910116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 911116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 912116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 913116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 914116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 64 915116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch_vpaes_consts:: 916116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_inv:: 917116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00E05060F0D080180h,0040703090A0B0C02h 918116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 001040A060F0B0780h,0030D0E0C02050809h 919116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 920116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_s0F:: 921116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00F0F0F0F0F0F0F0Fh,00F0F0F0F0F0F0F0Fh 922116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 923116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_ipt:: 924116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0C2B2E8985A2A7000h,0CABAE09052227808h 925116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 04C01307D317C4D00h,0CD80B1FCB0FDCC81h 926116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 927116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_sb1:: 928116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0B19BE18FCB503E00h,0A5DF7A6E142AF544h 929116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 03618D415FAE22300h,03BF7CCC10D2ED9EFh 930116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_sb2:: 931116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0E27A93C60B712400h,05EB7E955BC982FCDh 932116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 069EB88400AE12900h,0C2A163C8AB82234Ah 933116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_sbo:: 934116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0D0D26D176FBDC700h,015AABF7AC502A878h 935116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0CFE474A55FBB6A00h,08E1E90D1412B35FAh 936116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 937116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_mc_forward:: 938116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00407060500030201h,00C0F0E0D080B0A09h 939116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0080B0A0904070605h,0000302010C0F0E0Dh 940116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00C0F0E0D080B0A09h,00407060500030201h 941116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0000302010C0F0E0Dh,0080B0A0904070605h 942116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 943116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_mc_backward:: 944116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00605040702010003h,00E0D0C0F0A09080Bh 945116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0020100030E0D0C0Fh,00A09080B06050407h 946116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00E0D0C0F0A09080Bh,00605040702010003h 947116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00A09080B06050407h,0020100030E0D0C0Fh 948116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 949116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_sr:: 950116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00706050403020100h,00F0E0D0C0B0A0908h 951116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0030E09040F0A0500h,00B06010C07020D08h 952116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00F060D040B020900h,0070E050C030A0108h 953116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00B0E0104070A0D00h,00306090C0F020508h 954116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 955116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_rcon:: 956116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 01F8391B9AF9DEEB6h,0702A98084D7C7D81h 957116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 958116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_s63:: 959116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 05B5B5B5B5B5B5B5Bh,05B5B5B5B5B5B5B5Bh 960116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 961116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_opt:: 962116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0FF9F4929D6B66000h,0F7974121DEBE6808h 963116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 001EDBD5150BCEC00h,0E10D5DB1B05C0CE0h 964116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 965116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_deskew:: 966116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 007E4A34047A4E300h,01DFEB95A5DBEF91Ah 967116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 05F36B5DC83EA6900h,02841C2ABF49D1E77h 968116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 969116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 970116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 971116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 972116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 973116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dksd:: 974116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0FEB91A5DA3E44700h,00740E3A45A1DBEF9h 975116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 041C277F4B5368300h,05FDC69EAAB289D1Eh 976116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dksb:: 977116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 09A4FCA1F8550D500h,003D653861CC94C99h 978116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0115BEDA7B6FC4A00h,0D993256F7E3482C8h 979116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dkse:: 980116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0D5031CCA1FC9D600h,053859A4C994F5086h 981116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0A23196054FDC7BE8h,0CD5EF96A20B31487h 982116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dks9:: 983116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0B6116FC87ED9A700h,04AED933482255BFCh 984116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 04576516227143300h,08BB89FACE9DAFDCEh 985116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 986116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 987116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 988116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 989116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 990116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dipt:: 991116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00F505B040B545F00h,0154A411E114E451Ah 992116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 086E383E660056500h,012771772F491F194h 993116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 994116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsb9:: 995116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0851C03539A86D600h,0CAD51F504F994CC9h 996116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0C03B1789ECD74900h,0725E2C9EB2FBA565h 997116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsbd:: 998116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 07D57CCDFE6B1A200h,0F56E9B13882A4439h 999116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 03CE2FAF724C6CB00h,02931180D15DEEFD3h 1000116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsbb:: 1001116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0D022649296B44200h,0602646F6B0F2D404h 1002116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 0C19498A6CD596700h,0F3FF0C3E3255AA6Bh 1003116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsbe:: 1004116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 046F2929626D4D000h,02242600464B4F6B0h 1005116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 00C55A6CDFFAAC100h,09467F36B98593E32h 1006116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$k_dsbo:: 1007116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 01387EA537EF94000h,0C7AA6DB9D4943E2Dh 1008116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DQ 012D7560F93441D00h,0CA4B8159D8C58E9Ch 1009116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 1010116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 1011116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 1012116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 1013116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 85,110,105,118,101,114,115,105,116,121,41,0 1014116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 64 1015116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1016116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEXTERN __imp_RtlVirtualUnwind:NEAR 1017116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1018116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 16 1019116680a4aac90f2aa7413d9095a592090648e557Ben Murdochse_handler PROC PRIVATE 1020116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rsi 1021116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rdi 1022116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbx 1023116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push rbp 1024116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r12 1025116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r13 1026116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r14 1027116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch push r15 1028116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pushfq 1029116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch sub rsp,64 1030116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1031116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[120+r8] 1032116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rbx,QWORD PTR[248+r8] 1033116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1034116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[8+r9] 1035116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r11,QWORD PTR[56+r9] 1036116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1037116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10d,DWORD PTR[r11] 1038116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[r10*1+rsi] 1039116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rbx,r10 1040116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jb $L$in_prologue 1041116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1042116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rax,QWORD PTR[152+r8] 1043116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1044116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10d,DWORD PTR[4+r11] 1045116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r10,QWORD PTR[r10*1+rsi] 1046116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch cmp rbx,r10 1047116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch jae $L$in_prologue 1048116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1049116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rsi,QWORD PTR[16+rax] 1050116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rdi,QWORD PTR[512+r8] 1051116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov ecx,20 1052116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD 0a548f3fch 1053116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea rax,QWORD PTR[184+rax] 1054116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1055116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$in_prologue:: 1056116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[8+rax] 1057116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,QWORD PTR[16+rax] 1058116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[152+r8],rax 1059116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[168+r8],rsi 1060116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[176+r8],rdi 1061116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1062116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdi,QWORD PTR[40+r9] 1063116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,r8 1064116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov ecx,154 1065116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD 0a548f3fch 1066116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1067116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rsi,r9 1068116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch xor rcx,rcx 1069116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov rdx,QWORD PTR[8+rsi] 1070116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r8,QWORD PTR[rsi] 1071116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r9,QWORD PTR[16+rsi] 1072116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov r10,QWORD PTR[40+rsi] 1073116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r11,QWORD PTR[56+rsi] 1074116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch lea r12,QWORD PTR[24+rsi] 1075116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[32+rsp],r10 1076116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[40+rsp],r11 1077116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[48+rsp],r12 1078116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov QWORD PTR[56+rsp],rcx 1079116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch call QWORD PTR[__imp_RtlVirtualUnwind] 1080116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1081116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch mov eax,1 1082116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch add rsp,64 1083116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch popfq 1084116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop r15 1085116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop r14 1086116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop r13 1087116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop r12 1088116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop rbp 1089116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop rbx 1090116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop rdi 1091116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch pop rsi 1092116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DB 0F3h,0C3h ;repret 1093116680a4aac90f2aa7413d9095a592090648e557Ben Murdochse_handler ENDP 1094116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1095116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.text$ ENDS 1096116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata SEGMENT READONLY ALIGN(4) 1097116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 4 1098116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_vpaes_set_encrypt_key 1099116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_vpaes_set_encrypt_key 1100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_vpaes_set_encrypt_key 1101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1102116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_vpaes_set_decrypt_key 1103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_vpaes_set_decrypt_key 1104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_vpaes_set_decrypt_key 1105116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_vpaes_encrypt 1107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_vpaes_encrypt 1108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_vpaes_encrypt 1109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_vpaes_decrypt 1111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_vpaes_decrypt 1112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_vpaes_decrypt 1113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_begin_vpaes_cbc_encrypt 1115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_end_vpaes_cbc_encrypt 1116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$SEH_info_vpaes_cbc_encrypt 1117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.pdata ENDS 1119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata SEGMENT READONLY ALIGN(8) 1120116680a4aac90f2aa7413d9095a592090648e557Ben MurdochALIGN 8 1121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_set_encrypt_key:: 1122116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 9,0,0,0 1123116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel se_handler 1124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$enc_key_body,imagerel $L$enc_key_epilogue 1125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_set_decrypt_key:: 1126116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 9,0,0,0 1127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel se_handler 1128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$dec_key_body,imagerel $L$dec_key_epilogue 1129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_encrypt:: 1130116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 9,0,0,0 1131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel se_handler 1132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$enc_body,imagerel $L$enc_epilogue 1133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_decrypt:: 1134116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 9,0,0,0 1135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel se_handler 1136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$dec_body,imagerel $L$dec_epilogue 1137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch$L$SEH_info_vpaes_cbc_encrypt:: 1138116680a4aac90f2aa7413d9095a592090648e557Ben MurdochDB 9,0,0,0 1139116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel se_handler 1140116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DD imagerel $L$cbc_body,imagerel $L$cbc_epilogue 1141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 1142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch.xdata ENDS 1143116680a4aac90f2aa7413d9095a592090648e557Ben MurdochEND 1144