diff options
author | valbon <valbon@yandex-team.ru> | 2022-02-10 16:47:59 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:59 +0300 |
commit | f3cec1df1d3c7b149508f3807eff6c27b593bfaa (patch) | |
tree | b222e5ac2e2e98872661c51ccceee5da0d291e13 /contrib/libs/openssl/asm/windows | |
parent | 480c782666ba932a651f049537e8b89f2a382a29 (diff) | |
download | ydb-f3cec1df1d3c7b149508f3807eff6c27b593bfaa.tar.gz |
Restoring authorship annotation for <valbon@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/openssl/asm/windows')
14 files changed, 25686 insertions, 25686 deletions
diff --git a/contrib/libs/openssl/asm/windows/crypto/aes/aesni-x86.masm b/contrib/libs/openssl/asm/windows/crypto/aes/aesni-x86.masm index 40063e77c3..b490904440 100644 --- a/contrib/libs/openssl/asm/windows/crypto/aes/aesni-x86.masm +++ b/contrib/libs/openssl/asm/windows/crypto/aes/aesni-x86.masm @@ -1,3224 +1,3224 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -;EXTERN _OPENSSL_ia32cap_P:NEAR -ALIGN 16 -_aesni_encrypt PROC PUBLIC -$L_aesni_encrypt_begin:: - mov eax,DWORD PTR 4[esp] - mov edx,DWORD PTR 12[esp] - movups xmm2,XMMWORD PTR [eax] - mov ecx,DWORD PTR 240[edx] - mov eax,DWORD PTR 8[esp] - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L000enc1_loop_1: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L000enc1_loop_1 -DB 102,15,56,221,209 - pxor xmm0,xmm0 - pxor xmm1,xmm1 - movups XMMWORD PTR [eax],xmm2 - pxor xmm2,xmm2 - ret -_aesni_encrypt ENDP -ALIGN 16 -_aesni_decrypt PROC PUBLIC -$L_aesni_decrypt_begin:: - mov eax,DWORD PTR 4[esp] - mov edx,DWORD PTR 12[esp] - movups xmm2,XMMWORD PTR [eax] - mov ecx,DWORD PTR 240[edx] - mov eax,DWORD PTR 8[esp] - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L001dec1_loop_2: -DB 102,15,56,222,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L001dec1_loop_2 -DB 102,15,56,223,209 - pxor xmm0,xmm0 - pxor xmm1,xmm1 - movups XMMWORD PTR [eax],xmm2 - pxor xmm2,xmm2 - ret -_aesni_decrypt ENDP -ALIGN 16 -__aesni_encrypt2 PROC PRIVATE - movups xmm0,XMMWORD PTR [edx] - shl ecx,4 - movups xmm1,XMMWORD PTR 16[edx] - xorps xmm2,xmm0 - pxor xmm3,xmm0 - movups xmm0,XMMWORD PTR 32[edx] - lea edx,DWORD PTR 32[ecx*1+edx] - neg ecx - add ecx,16 -$L002enc2_loop: -DB 102,15,56,220,209 -DB 102,15,56,220,217 - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L002enc2_loop -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,221,208 -DB 102,15,56,221,216 - ret -__aesni_encrypt2 ENDP -ALIGN 16 -__aesni_decrypt2 PROC PRIVATE - movups xmm0,XMMWORD PTR [edx] - shl ecx,4 - movups xmm1,XMMWORD PTR 16[edx] - xorps xmm2,xmm0 - pxor xmm3,xmm0 - movups xmm0,XMMWORD PTR 32[edx] - lea edx,DWORD PTR 32[ecx*1+edx] - neg ecx - add ecx,16 -$L003dec2_loop: -DB 102,15,56,222,209 -DB 102,15,56,222,217 - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,222,208 -DB 102,15,56,222,216 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L003dec2_loop -DB 102,15,56,222,209 -DB 102,15,56,222,217 -DB 102,15,56,223,208 -DB 102,15,56,223,216 - ret -__aesni_decrypt2 ENDP -ALIGN 16 -__aesni_encrypt3 PROC PRIVATE - movups xmm0,XMMWORD PTR [edx] - shl ecx,4 - movups xmm1,XMMWORD PTR 16[edx] - xorps xmm2,xmm0 - pxor xmm3,xmm0 - pxor xmm4,xmm0 - movups xmm0,XMMWORD PTR 32[edx] - lea edx,DWORD PTR 32[ecx*1+edx] - neg ecx - add ecx,16 -$L004enc3_loop: -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L004enc3_loop -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,221,208 -DB 102,15,56,221,216 -DB 102,15,56,221,224 - ret -__aesni_encrypt3 ENDP -ALIGN 16 -__aesni_decrypt3 PROC PRIVATE - movups xmm0,XMMWORD PTR [edx] - shl ecx,4 - movups xmm1,XMMWORD PTR 16[edx] - xorps xmm2,xmm0 - pxor xmm3,xmm0 - pxor xmm4,xmm0 - movups xmm0,XMMWORD PTR 32[edx] - lea edx,DWORD PTR 32[ecx*1+edx] - neg ecx - add ecx,16 -$L005dec3_loop: -DB 102,15,56,222,209 -DB 102,15,56,222,217 -DB 102,15,56,222,225 - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,222,208 -DB 102,15,56,222,216 -DB 102,15,56,222,224 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L005dec3_loop -DB 102,15,56,222,209 -DB 102,15,56,222,217 -DB 102,15,56,222,225 -DB 102,15,56,223,208 -DB 102,15,56,223,216 -DB 102,15,56,223,224 - ret -__aesni_decrypt3 ENDP -ALIGN 16 -__aesni_encrypt4 PROC PRIVATE - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - shl ecx,4 - xorps xmm2,xmm0 - pxor xmm3,xmm0 - pxor xmm4,xmm0 - pxor xmm5,xmm0 - movups xmm0,XMMWORD PTR 32[edx] - lea edx,DWORD PTR 32[ecx*1+edx] - neg ecx -DB 15,31,64,0 - add ecx,16 -$L006enc4_loop: -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 -DB 102,15,56,220,232 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L006enc4_loop -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,221,208 -DB 102,15,56,221,216 -DB 102,15,56,221,224 -DB 102,15,56,221,232 - ret -__aesni_encrypt4 ENDP -ALIGN 16 -__aesni_decrypt4 PROC PRIVATE - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - shl ecx,4 - xorps xmm2,xmm0 - pxor xmm3,xmm0 - pxor xmm4,xmm0 - pxor xmm5,xmm0 - movups xmm0,XMMWORD PTR 32[edx] - lea edx,DWORD PTR 32[ecx*1+edx] - neg ecx -DB 15,31,64,0 - add ecx,16 -$L007dec4_loop: -DB 102,15,56,222,209 -DB 102,15,56,222,217 -DB 102,15,56,222,225 -DB 102,15,56,222,233 - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,222,208 -DB 102,15,56,222,216 -DB 102,15,56,222,224 -DB 102,15,56,222,232 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L007dec4_loop -DB 102,15,56,222,209 -DB 102,15,56,222,217 -DB 102,15,56,222,225 -DB 102,15,56,222,233 -DB 102,15,56,223,208 -DB 102,15,56,223,216 -DB 102,15,56,223,224 -DB 102,15,56,223,232 - ret -__aesni_decrypt4 ENDP -ALIGN 16 -__aesni_encrypt6 PROC PRIVATE - movups xmm0,XMMWORD PTR [edx] - shl ecx,4 - movups xmm1,XMMWORD PTR 16[edx] - xorps xmm2,xmm0 - pxor xmm3,xmm0 - pxor xmm4,xmm0 -DB 102,15,56,220,209 - pxor xmm5,xmm0 - pxor xmm6,xmm0 -DB 102,15,56,220,217 - lea edx,DWORD PTR 32[ecx*1+edx] - neg ecx -DB 102,15,56,220,225 - pxor xmm7,xmm0 - movups xmm0,XMMWORD PTR [ecx*1+edx] - add ecx,16 - jmp $L008_aesni_encrypt6_inner -ALIGN 16 -$L009enc6_loop: -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -$L008_aesni_encrypt6_inner: -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 -$L_aesni_encrypt6_enter:: - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 -DB 102,15,56,220,224 -DB 102,15,56,220,232 -DB 102,15,56,220,240 -DB 102,15,56,220,248 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L009enc6_loop -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 -DB 102,15,56,221,208 -DB 102,15,56,221,216 -DB 102,15,56,221,224 -DB 102,15,56,221,232 -DB 102,15,56,221,240 -DB 102,15,56,221,248 - ret -__aesni_encrypt6 ENDP -ALIGN 16 -__aesni_decrypt6 PROC PRIVATE - movups xmm0,XMMWORD PTR [edx] - shl ecx,4 - movups xmm1,XMMWORD PTR 16[edx] - xorps xmm2,xmm0 - pxor xmm3,xmm0 - pxor xmm4,xmm0 -DB 102,15,56,222,209 - pxor xmm5,xmm0 - pxor xmm6,xmm0 -DB 102,15,56,222,217 - lea edx,DWORD PTR 32[ecx*1+edx] - neg ecx -DB 102,15,56,222,225 - pxor xmm7,xmm0 - movups xmm0,XMMWORD PTR [ecx*1+edx] - add ecx,16 - jmp $L010_aesni_decrypt6_inner -ALIGN 16 -$L011dec6_loop: -DB 102,15,56,222,209 -DB 102,15,56,222,217 -DB 102,15,56,222,225 -$L010_aesni_decrypt6_inner: -DB 102,15,56,222,233 -DB 102,15,56,222,241 -DB 102,15,56,222,249 -$L_aesni_decrypt6_enter:: - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,222,208 -DB 102,15,56,222,216 -DB 102,15,56,222,224 -DB 102,15,56,222,232 -DB 102,15,56,222,240 -DB 102,15,56,222,248 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L011dec6_loop -DB 102,15,56,222,209 -DB 102,15,56,222,217 -DB 102,15,56,222,225 -DB 102,15,56,222,233 -DB 102,15,56,222,241 -DB 102,15,56,222,249 -DB 102,15,56,223,208 -DB 102,15,56,223,216 -DB 102,15,56,223,224 -DB 102,15,56,223,232 -DB 102,15,56,223,240 -DB 102,15,56,223,248 - ret -__aesni_decrypt6 ENDP -ALIGN 16 -_aesni_ecb_encrypt PROC PUBLIC -$L_aesni_ecb_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - mov ebx,DWORD PTR 36[esp] - and eax,-16 - jz $L012ecb_ret - mov ecx,DWORD PTR 240[edx] - test ebx,ebx - jz $L013ecb_decrypt - mov ebp,edx - mov ebx,ecx - cmp eax,96 - jb $L014ecb_enc_tail - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - movdqu xmm5,XMMWORD PTR 48[esi] - movdqu xmm6,XMMWORD PTR 64[esi] - movdqu xmm7,XMMWORD PTR 80[esi] - lea esi,DWORD PTR 96[esi] - sub eax,96 - jmp $L015ecb_enc_loop6_enter -ALIGN 16 -$L016ecb_enc_loop6: - movups XMMWORD PTR [edi],xmm2 - movdqu xmm2,XMMWORD PTR [esi] - movups XMMWORD PTR 16[edi],xmm3 - movdqu xmm3,XMMWORD PTR 16[esi] - movups XMMWORD PTR 32[edi],xmm4 - movdqu xmm4,XMMWORD PTR 32[esi] - movups XMMWORD PTR 48[edi],xmm5 - movdqu xmm5,XMMWORD PTR 48[esi] - movups XMMWORD PTR 64[edi],xmm6 - movdqu xmm6,XMMWORD PTR 64[esi] - movups XMMWORD PTR 80[edi],xmm7 - lea edi,DWORD PTR 96[edi] - movdqu xmm7,XMMWORD PTR 80[esi] - lea esi,DWORD PTR 96[esi] -$L015ecb_enc_loop6_enter: - call __aesni_encrypt6 - mov edx,ebp - mov ecx,ebx - sub eax,96 - jnc $L016ecb_enc_loop6 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - movups XMMWORD PTR 64[edi],xmm6 - movups XMMWORD PTR 80[edi],xmm7 - lea edi,DWORD PTR 96[edi] - add eax,96 - jz $L012ecb_ret -$L014ecb_enc_tail: - movups xmm2,XMMWORD PTR [esi] - cmp eax,32 - jb $L017ecb_enc_one - movups xmm3,XMMWORD PTR 16[esi] - je $L018ecb_enc_two - movups xmm4,XMMWORD PTR 32[esi] - cmp eax,64 - jb $L019ecb_enc_three - movups xmm5,XMMWORD PTR 48[esi] - je $L020ecb_enc_four - movups xmm6,XMMWORD PTR 64[esi] - xorps xmm7,xmm7 - call __aesni_encrypt6 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - movups XMMWORD PTR 64[edi],xmm6 - jmp $L012ecb_ret -ALIGN 16 -$L017ecb_enc_one: - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L021enc1_loop_3: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L021enc1_loop_3 -DB 102,15,56,221,209 - movups XMMWORD PTR [edi],xmm2 - jmp $L012ecb_ret -ALIGN 16 -$L018ecb_enc_two: - call __aesni_encrypt2 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - jmp $L012ecb_ret -ALIGN 16 -$L019ecb_enc_three: - call __aesni_encrypt3 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - jmp $L012ecb_ret -ALIGN 16 -$L020ecb_enc_four: - call __aesni_encrypt4 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - jmp $L012ecb_ret -ALIGN 16 -$L013ecb_decrypt: - mov ebp,edx - mov ebx,ecx - cmp eax,96 - jb $L022ecb_dec_tail - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - movdqu xmm5,XMMWORD PTR 48[esi] - movdqu xmm6,XMMWORD PTR 64[esi] - movdqu xmm7,XMMWORD PTR 80[esi] - lea esi,DWORD PTR 96[esi] - sub eax,96 - jmp $L023ecb_dec_loop6_enter -ALIGN 16 -$L024ecb_dec_loop6: - movups XMMWORD PTR [edi],xmm2 - movdqu xmm2,XMMWORD PTR [esi] - movups XMMWORD PTR 16[edi],xmm3 - movdqu xmm3,XMMWORD PTR 16[esi] - movups XMMWORD PTR 32[edi],xmm4 - movdqu xmm4,XMMWORD PTR 32[esi] - movups XMMWORD PTR 48[edi],xmm5 - movdqu xmm5,XMMWORD PTR 48[esi] - movups XMMWORD PTR 64[edi],xmm6 - movdqu xmm6,XMMWORD PTR 64[esi] - movups XMMWORD PTR 80[edi],xmm7 - lea edi,DWORD PTR 96[edi] - movdqu xmm7,XMMWORD PTR 80[esi] - lea esi,DWORD PTR 96[esi] -$L023ecb_dec_loop6_enter: - call __aesni_decrypt6 - mov edx,ebp - mov ecx,ebx - sub eax,96 - jnc $L024ecb_dec_loop6 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - movups XMMWORD PTR 64[edi],xmm6 - movups XMMWORD PTR 80[edi],xmm7 - lea edi,DWORD PTR 96[edi] - add eax,96 - jz $L012ecb_ret -$L022ecb_dec_tail: - movups xmm2,XMMWORD PTR [esi] - cmp eax,32 - jb $L025ecb_dec_one - movups xmm3,XMMWORD PTR 16[esi] - je $L026ecb_dec_two - movups xmm4,XMMWORD PTR 32[esi] - cmp eax,64 - jb $L027ecb_dec_three - movups xmm5,XMMWORD PTR 48[esi] - je $L028ecb_dec_four - movups xmm6,XMMWORD PTR 64[esi] - xorps xmm7,xmm7 - call __aesni_decrypt6 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - movups XMMWORD PTR 64[edi],xmm6 - jmp $L012ecb_ret -ALIGN 16 -$L025ecb_dec_one: - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L029dec1_loop_4: -DB 102,15,56,222,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L029dec1_loop_4 -DB 102,15,56,223,209 - movups XMMWORD PTR [edi],xmm2 - jmp $L012ecb_ret -ALIGN 16 -$L026ecb_dec_two: - call __aesni_decrypt2 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - jmp $L012ecb_ret -ALIGN 16 -$L027ecb_dec_three: - call __aesni_decrypt3 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - jmp $L012ecb_ret -ALIGN 16 -$L028ecb_dec_four: - call __aesni_decrypt4 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 -$L012ecb_ret: - pxor xmm0,xmm0 - pxor xmm1,xmm1 - pxor xmm2,xmm2 - pxor xmm3,xmm3 - pxor xmm4,xmm4 - pxor xmm5,xmm5 - pxor xmm6,xmm6 - pxor xmm7,xmm7 - pop edi - pop esi - pop ebx - pop ebp - ret -_aesni_ecb_encrypt ENDP -ALIGN 16 -_aesni_ccm64_encrypt_blocks PROC PUBLIC -$L_aesni_ccm64_encrypt_blocks_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - mov ebx,DWORD PTR 36[esp] - mov ecx,DWORD PTR 40[esp] - mov ebp,esp - sub esp,60 - and esp,-16 - mov DWORD PTR 48[esp],ebp - movdqu xmm7,XMMWORD PTR [ebx] - movdqu xmm3,XMMWORD PTR [ecx] - mov ecx,DWORD PTR 240[edx] - mov DWORD PTR [esp],202182159 - mov DWORD PTR 4[esp],134810123 - mov DWORD PTR 8[esp],67438087 - mov DWORD PTR 12[esp],66051 - mov ebx,1 - xor ebp,ebp - mov DWORD PTR 16[esp],ebx - mov DWORD PTR 20[esp],ebp - mov DWORD PTR 24[esp],ebp - mov DWORD PTR 28[esp],ebp - shl ecx,4 - mov ebx,16 - lea ebp,DWORD PTR [edx] - movdqa xmm5,XMMWORD PTR [esp] - movdqa xmm2,xmm7 - lea edx,DWORD PTR 32[ecx*1+edx] - sub ebx,ecx -DB 102,15,56,0,253 -$L030ccm64_enc_outer: - movups xmm0,XMMWORD PTR [ebp] - mov ecx,ebx - movups xmm6,XMMWORD PTR [esi] - xorps xmm2,xmm0 - movups xmm1,XMMWORD PTR 16[ebp] - xorps xmm0,xmm6 - xorps xmm3,xmm0 - movups xmm0,XMMWORD PTR 32[ebp] -$L031ccm64_enc2_loop: -DB 102,15,56,220,209 -DB 102,15,56,220,217 - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L031ccm64_enc2_loop -DB 102,15,56,220,209 -DB 102,15,56,220,217 - paddq xmm7,XMMWORD PTR 16[esp] - dec eax -DB 102,15,56,221,208 -DB 102,15,56,221,216 - lea esi,DWORD PTR 16[esi] - xorps xmm6,xmm2 - movdqa xmm2,xmm7 - movups XMMWORD PTR [edi],xmm6 -DB 102,15,56,0,213 - lea edi,DWORD PTR 16[edi] - jnz $L030ccm64_enc_outer - mov esp,DWORD PTR 48[esp] - mov edi,DWORD PTR 40[esp] - movups XMMWORD PTR [edi],xmm3 - pxor xmm0,xmm0 - pxor xmm1,xmm1 - pxor xmm2,xmm2 - pxor xmm3,xmm3 - pxor xmm4,xmm4 - pxor xmm5,xmm5 - pxor xmm6,xmm6 - pxor xmm7,xmm7 - pop edi - pop esi - pop ebx - pop ebp - ret -_aesni_ccm64_encrypt_blocks ENDP -ALIGN 16 -_aesni_ccm64_decrypt_blocks PROC PUBLIC -$L_aesni_ccm64_decrypt_blocks_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - mov ebx,DWORD PTR 36[esp] - mov ecx,DWORD PTR 40[esp] - mov ebp,esp - sub esp,60 - and esp,-16 - mov DWORD PTR 48[esp],ebp - movdqu xmm7,XMMWORD PTR [ebx] - movdqu xmm3,XMMWORD PTR [ecx] - mov ecx,DWORD PTR 240[edx] - mov DWORD PTR [esp],202182159 - mov DWORD PTR 4[esp],134810123 - mov DWORD PTR 8[esp],67438087 - mov DWORD PTR 12[esp],66051 - mov ebx,1 - xor ebp,ebp - mov DWORD PTR 16[esp],ebx - mov DWORD PTR 20[esp],ebp - mov DWORD PTR 24[esp],ebp - mov DWORD PTR 28[esp],ebp - movdqa xmm5,XMMWORD PTR [esp] - movdqa xmm2,xmm7 - mov ebp,edx - mov ebx,ecx -DB 102,15,56,0,253 - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L032enc1_loop_5: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L032enc1_loop_5 -DB 102,15,56,221,209 - shl ebx,4 - mov ecx,16 - movups xmm6,XMMWORD PTR [esi] - paddq xmm7,XMMWORD PTR 16[esp] - lea esi,QWORD PTR 16[esi] - sub ecx,ebx - lea edx,DWORD PTR 32[ebx*1+ebp] - mov ebx,ecx - jmp $L033ccm64_dec_outer -ALIGN 16 -$L033ccm64_dec_outer: - xorps xmm6,xmm2 - movdqa xmm2,xmm7 - movups XMMWORD PTR [edi],xmm6 - lea edi,DWORD PTR 16[edi] -DB 102,15,56,0,213 - sub eax,1 - jz $L034ccm64_dec_break - movups xmm0,XMMWORD PTR [ebp] - mov ecx,ebx - movups xmm1,XMMWORD PTR 16[ebp] - xorps xmm6,xmm0 - xorps xmm2,xmm0 - xorps xmm3,xmm6 - movups xmm0,XMMWORD PTR 32[ebp] -$L035ccm64_dec2_loop: -DB 102,15,56,220,209 -DB 102,15,56,220,217 - movups xmm1,XMMWORD PTR [ecx*1+edx] - add ecx,32 -DB 102,15,56,220,208 -DB 102,15,56,220,216 - movups xmm0,XMMWORD PTR [ecx*1+edx-16] - jnz $L035ccm64_dec2_loop - movups xmm6,XMMWORD PTR [esi] - paddq xmm7,XMMWORD PTR 16[esp] -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,221,208 -DB 102,15,56,221,216 - lea esi,QWORD PTR 16[esi] - jmp $L033ccm64_dec_outer -ALIGN 16 -$L034ccm64_dec_break: - mov ecx,DWORD PTR 240[ebp] - mov edx,ebp - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - xorps xmm6,xmm0 - lea edx,DWORD PTR 32[edx] - xorps xmm3,xmm6 -$L036enc1_loop_6: -DB 102,15,56,220,217 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L036enc1_loop_6 -DB 102,15,56,221,217 - mov esp,DWORD PTR 48[esp] - mov edi,DWORD PTR 40[esp] - movups XMMWORD PTR [edi],xmm3 - pxor xmm0,xmm0 - pxor xmm1,xmm1 - pxor xmm2,xmm2 - pxor xmm3,xmm3 - pxor xmm4,xmm4 - pxor xmm5,xmm5 - pxor xmm6,xmm6 - pxor xmm7,xmm7 - pop edi - pop esi - pop ebx - pop ebp - ret -_aesni_ccm64_decrypt_blocks ENDP -ALIGN 16 -_aesni_ctr32_encrypt_blocks PROC PUBLIC -$L_aesni_ctr32_encrypt_blocks_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - mov ebx,DWORD PTR 36[esp] - mov ebp,esp - sub esp,88 - and esp,-16 - mov DWORD PTR 80[esp],ebp - cmp eax,1 - je $L037ctr32_one_shortcut - movdqu xmm7,XMMWORD PTR [ebx] - mov DWORD PTR [esp],202182159 - mov DWORD PTR 4[esp],134810123 - mov DWORD PTR 8[esp],67438087 - mov DWORD PTR 12[esp],66051 - mov ecx,6 - xor ebp,ebp - mov DWORD PTR 16[esp],ecx - mov DWORD PTR 20[esp],ecx - mov DWORD PTR 24[esp],ecx - mov DWORD PTR 28[esp],ebp -DB 102,15,58,22,251,3 -DB 102,15,58,34,253,3 - mov ecx,DWORD PTR 240[edx] - bswap ebx - pxor xmm0,xmm0 - pxor xmm1,xmm1 - movdqa xmm2,XMMWORD PTR [esp] -DB 102,15,58,34,195,0 - lea ebp,DWORD PTR 3[ebx] -DB 102,15,58,34,205,0 - inc ebx -DB 102,15,58,34,195,1 - inc ebp -DB 102,15,58,34,205,1 - inc ebx -DB 102,15,58,34,195,2 - inc ebp -DB 102,15,58,34,205,2 - movdqa XMMWORD PTR 48[esp],xmm0 -DB 102,15,56,0,194 - movdqu xmm6,XMMWORD PTR [edx] - movdqa XMMWORD PTR 64[esp],xmm1 -DB 102,15,56,0,202 - pshufd xmm2,xmm0,192 - pshufd xmm3,xmm0,128 - cmp eax,6 - jb $L038ctr32_tail - pxor xmm7,xmm6 - shl ecx,4 - mov ebx,16 - movdqa XMMWORD PTR 32[esp],xmm7 - mov ebp,edx - sub ebx,ecx - lea edx,DWORD PTR 32[ecx*1+edx] - sub eax,6 - jmp $L039ctr32_loop6 -ALIGN 16 -$L039ctr32_loop6: - pshufd xmm4,xmm0,64 - movdqa xmm0,XMMWORD PTR 32[esp] - pshufd xmm5,xmm1,192 - pxor xmm2,xmm0 - pshufd xmm6,xmm1,128 - pxor xmm3,xmm0 - pshufd xmm7,xmm1,64 - movups xmm1,XMMWORD PTR 16[ebp] - pxor xmm4,xmm0 - pxor xmm5,xmm0 -DB 102,15,56,220,209 - pxor xmm6,xmm0 - pxor xmm7,xmm0 -DB 102,15,56,220,217 - movups xmm0,XMMWORD PTR 32[ebp] - mov ecx,ebx -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 - call $L_aesni_encrypt6_enter - movups xmm1,XMMWORD PTR [esi] - movups xmm0,XMMWORD PTR 16[esi] - xorps xmm2,xmm1 - movups xmm1,XMMWORD PTR 32[esi] - xorps xmm3,xmm0 - movups XMMWORD PTR [edi],xmm2 - movdqa xmm0,XMMWORD PTR 16[esp] - xorps xmm4,xmm1 - movdqa xmm1,XMMWORD PTR 64[esp] - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - paddd xmm1,xmm0 - paddd xmm0,XMMWORD PTR 48[esp] - movdqa xmm2,XMMWORD PTR [esp] - movups xmm3,XMMWORD PTR 48[esi] - movups xmm4,XMMWORD PTR 64[esi] - xorps xmm5,xmm3 - movups xmm3,XMMWORD PTR 80[esi] - lea esi,DWORD PTR 96[esi] - movdqa XMMWORD PTR 48[esp],xmm0 -DB 102,15,56,0,194 - xorps xmm6,xmm4 - movups XMMWORD PTR 48[edi],xmm5 - xorps xmm7,xmm3 - movdqa XMMWORD PTR 64[esp],xmm1 -DB 102,15,56,0,202 - movups XMMWORD PTR 64[edi],xmm6 - pshufd xmm2,xmm0,192 - movups XMMWORD PTR 80[edi],xmm7 - lea edi,DWORD PTR 96[edi] - pshufd xmm3,xmm0,128 - sub eax,6 - jnc $L039ctr32_loop6 - add eax,6 - jz $L040ctr32_ret - movdqu xmm7,XMMWORD PTR [ebp] - mov edx,ebp - pxor xmm7,XMMWORD PTR 32[esp] - mov ecx,DWORD PTR 240[ebp] -$L038ctr32_tail: - por xmm2,xmm7 - cmp eax,2 - jb $L041ctr32_one - pshufd xmm4,xmm0,64 - por xmm3,xmm7 - je $L042ctr32_two - pshufd xmm5,xmm1,192 - por xmm4,xmm7 - cmp eax,4 - jb $L043ctr32_three - pshufd xmm6,xmm1,128 - por xmm5,xmm7 - je $L044ctr32_four - por xmm6,xmm7 - call __aesni_encrypt6 - movups xmm1,XMMWORD PTR [esi] - movups xmm0,XMMWORD PTR 16[esi] - xorps xmm2,xmm1 - movups xmm1,XMMWORD PTR 32[esi] - xorps xmm3,xmm0 - movups xmm0,XMMWORD PTR 48[esi] - xorps xmm4,xmm1 - movups xmm1,XMMWORD PTR 64[esi] - xorps xmm5,xmm0 - movups XMMWORD PTR [edi],xmm2 - xorps xmm6,xmm1 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - movups XMMWORD PTR 64[edi],xmm6 - jmp $L040ctr32_ret -ALIGN 16 -$L037ctr32_one_shortcut: - movups xmm2,XMMWORD PTR [ebx] - mov ecx,DWORD PTR 240[edx] -$L041ctr32_one: - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L045enc1_loop_7: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L045enc1_loop_7 -DB 102,15,56,221,209 - movups xmm6,XMMWORD PTR [esi] - xorps xmm6,xmm2 - movups XMMWORD PTR [edi],xmm6 - jmp $L040ctr32_ret -ALIGN 16 -$L042ctr32_two: - call __aesni_encrypt2 - movups xmm5,XMMWORD PTR [esi] - movups xmm6,XMMWORD PTR 16[esi] - xorps xmm2,xmm5 - xorps xmm3,xmm6 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - jmp $L040ctr32_ret -ALIGN 16 -$L043ctr32_three: - call __aesni_encrypt3 - movups xmm5,XMMWORD PTR [esi] - movups xmm6,XMMWORD PTR 16[esi] - xorps xmm2,xmm5 - movups xmm7,XMMWORD PTR 32[esi] - xorps xmm3,xmm6 - movups XMMWORD PTR [edi],xmm2 - xorps xmm4,xmm7 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - jmp $L040ctr32_ret -ALIGN 16 -$L044ctr32_four: - call __aesni_encrypt4 - movups xmm6,XMMWORD PTR [esi] - movups xmm7,XMMWORD PTR 16[esi] - movups xmm1,XMMWORD PTR 32[esi] - xorps xmm2,xmm6 - movups xmm0,XMMWORD PTR 48[esi] - xorps xmm3,xmm7 - movups XMMWORD PTR [edi],xmm2 - xorps xmm4,xmm1 - movups XMMWORD PTR 16[edi],xmm3 - xorps xmm5,xmm0 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 -$L040ctr32_ret: - pxor xmm0,xmm0 - pxor xmm1,xmm1 - pxor xmm2,xmm2 - pxor xmm3,xmm3 - pxor xmm4,xmm4 - movdqa XMMWORD PTR 32[esp],xmm0 - pxor xmm5,xmm5 - movdqa XMMWORD PTR 48[esp],xmm0 - pxor xmm6,xmm6 - movdqa XMMWORD PTR 64[esp],xmm0 - pxor xmm7,xmm7 - mov esp,DWORD PTR 80[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -_aesni_ctr32_encrypt_blocks ENDP -ALIGN 16 -_aesni_xts_encrypt PROC PUBLIC -$L_aesni_xts_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov edx,DWORD PTR 36[esp] - mov esi,DWORD PTR 40[esp] - mov ecx,DWORD PTR 240[edx] - movups xmm2,XMMWORD PTR [esi] - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L046enc1_loop_8: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L046enc1_loop_8 -DB 102,15,56,221,209 - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - mov ebp,esp - sub esp,120 - mov ecx,DWORD PTR 240[edx] - and esp,-16 - mov DWORD PTR 96[esp],135 - mov DWORD PTR 100[esp],0 - mov DWORD PTR 104[esp],1 - mov DWORD PTR 108[esp],0 - mov DWORD PTR 112[esp],eax - mov DWORD PTR 116[esp],ebp - movdqa xmm1,xmm2 - pxor xmm0,xmm0 - movdqa xmm3,XMMWORD PTR 96[esp] - pcmpgtd xmm0,xmm1 - and eax,-16 - mov ebp,edx - mov ebx,ecx - sub eax,96 - jc $L047xts_enc_short - shl ecx,4 - mov ebx,16 - sub ebx,ecx - lea edx,DWORD PTR 32[ecx*1+edx] - jmp $L048xts_enc_loop6 -ALIGN 16 -$L048xts_enc_loop6: - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa XMMWORD PTR [esp],xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa XMMWORD PTR 16[esp],xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa XMMWORD PTR 32[esp],xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa XMMWORD PTR 48[esp],xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - pshufd xmm7,xmm0,19 - movdqa XMMWORD PTR 64[esp],xmm1 - paddq xmm1,xmm1 - movups xmm0,XMMWORD PTR [ebp] - pand xmm7,xmm3 - movups xmm2,XMMWORD PTR [esi] - pxor xmm7,xmm1 - mov ecx,ebx - movdqu xmm3,XMMWORD PTR 16[esi] - xorps xmm2,xmm0 - movdqu xmm4,XMMWORD PTR 32[esi] - pxor xmm3,xmm0 - movdqu xmm5,XMMWORD PTR 48[esi] - pxor xmm4,xmm0 - movdqu xmm6,XMMWORD PTR 64[esi] - pxor xmm5,xmm0 - movdqu xmm1,XMMWORD PTR 80[esi] - pxor xmm6,xmm0 - lea esi,DWORD PTR 96[esi] - pxor xmm2,XMMWORD PTR [esp] - movdqa XMMWORD PTR 80[esp],xmm7 - pxor xmm7,xmm1 - movups xmm1,XMMWORD PTR 16[ebp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] -DB 102,15,56,220,209 - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,XMMWORD PTR 64[esp] -DB 102,15,56,220,217 - pxor xmm7,xmm0 - movups xmm0,XMMWORD PTR 32[ebp] -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 - call $L_aesni_encrypt6_enter - movdqa xmm1,XMMWORD PTR 80[esp] - pxor xmm0,xmm0 - xorps xmm2,XMMWORD PTR [esp] - pcmpgtd xmm0,xmm1 - xorps xmm3,XMMWORD PTR 16[esp] - movups XMMWORD PTR [edi],xmm2 - xorps xmm4,XMMWORD PTR 32[esp] - movups XMMWORD PTR 16[edi],xmm3 - xorps xmm5,XMMWORD PTR 48[esp] - movups XMMWORD PTR 32[edi],xmm4 - xorps xmm6,XMMWORD PTR 64[esp] - movups XMMWORD PTR 48[edi],xmm5 - xorps xmm7,xmm1 - movups XMMWORD PTR 64[edi],xmm6 - pshufd xmm2,xmm0,19 - movups XMMWORD PTR 80[edi],xmm7 - lea edi,DWORD PTR 96[edi] - movdqa xmm3,XMMWORD PTR 96[esp] - pxor xmm0,xmm0 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - sub eax,96 - jnc $L048xts_enc_loop6 - mov ecx,DWORD PTR 240[ebp] - mov edx,ebp - mov ebx,ecx -$L047xts_enc_short: - add eax,96 - jz $L049xts_enc_done6x - movdqa xmm5,xmm1 - cmp eax,32 - jb $L050xts_enc_one - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - je $L051xts_enc_two - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa xmm6,xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - cmp eax,64 - jb $L052xts_enc_three - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa xmm7,xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - movdqa XMMWORD PTR [esp],xmm5 - movdqa XMMWORD PTR 16[esp],xmm6 - je $L053xts_enc_four - movdqa XMMWORD PTR 32[esp],xmm7 - pshufd xmm7,xmm0,19 - movdqa XMMWORD PTR 48[esp],xmm1 - paddq xmm1,xmm1 - pand xmm7,xmm3 - pxor xmm7,xmm1 - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - pxor xmm2,XMMWORD PTR [esp] - movdqu xmm5,XMMWORD PTR 48[esi] - pxor xmm3,XMMWORD PTR 16[esp] - movdqu xmm6,XMMWORD PTR 64[esi] - pxor xmm4,XMMWORD PTR 32[esp] - lea esi,DWORD PTR 80[esi] - pxor xmm5,XMMWORD PTR 48[esp] - movdqa XMMWORD PTR 64[esp],xmm7 - pxor xmm6,xmm7 - call __aesni_encrypt6 - movaps xmm1,XMMWORD PTR 64[esp] - xorps xmm2,XMMWORD PTR [esp] - xorps xmm3,XMMWORD PTR 16[esp] - xorps xmm4,XMMWORD PTR 32[esp] - movups XMMWORD PTR [edi],xmm2 - xorps xmm5,XMMWORD PTR 48[esp] - movups XMMWORD PTR 16[edi],xmm3 - xorps xmm6,xmm1 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - movups XMMWORD PTR 64[edi],xmm6 - lea edi,DWORD PTR 80[edi] - jmp $L054xts_enc_done -ALIGN 16 -$L050xts_enc_one: - movups xmm2,XMMWORD PTR [esi] - lea esi,DWORD PTR 16[esi] - xorps xmm2,xmm5 - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L055enc1_loop_9: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L055enc1_loop_9 -DB 102,15,56,221,209 - xorps xmm2,xmm5 - movups XMMWORD PTR [edi],xmm2 - lea edi,DWORD PTR 16[edi] - movdqa xmm1,xmm5 - jmp $L054xts_enc_done -ALIGN 16 -$L051xts_enc_two: - movaps xmm6,xmm1 - movups xmm2,XMMWORD PTR [esi] - movups xmm3,XMMWORD PTR 16[esi] - lea esi,DWORD PTR 32[esi] - xorps xmm2,xmm5 - xorps xmm3,xmm6 - call __aesni_encrypt2 - xorps xmm2,xmm5 - xorps xmm3,xmm6 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - lea edi,DWORD PTR 32[edi] - movdqa xmm1,xmm6 - jmp $L054xts_enc_done -ALIGN 16 -$L052xts_enc_three: - movaps xmm7,xmm1 - movups xmm2,XMMWORD PTR [esi] - movups xmm3,XMMWORD PTR 16[esi] - movups xmm4,XMMWORD PTR 32[esi] - lea esi,DWORD PTR 48[esi] - xorps xmm2,xmm5 - xorps xmm3,xmm6 - xorps xmm4,xmm7 - call __aesni_encrypt3 - xorps xmm2,xmm5 - xorps xmm3,xmm6 - xorps xmm4,xmm7 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - lea edi,DWORD PTR 48[edi] - movdqa xmm1,xmm7 - jmp $L054xts_enc_done -ALIGN 16 -$L053xts_enc_four: - movaps xmm6,xmm1 - movups xmm2,XMMWORD PTR [esi] - movups xmm3,XMMWORD PTR 16[esi] - movups xmm4,XMMWORD PTR 32[esi] - xorps xmm2,XMMWORD PTR [esp] - movups xmm5,XMMWORD PTR 48[esi] - lea esi,DWORD PTR 64[esi] - xorps xmm3,XMMWORD PTR 16[esp] - xorps xmm4,xmm7 - xorps xmm5,xmm6 - call __aesni_encrypt4 - xorps xmm2,XMMWORD PTR [esp] - xorps xmm3,XMMWORD PTR 16[esp] - xorps xmm4,xmm7 - movups XMMWORD PTR [edi],xmm2 - xorps xmm5,xmm6 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - lea edi,DWORD PTR 64[edi] - movdqa xmm1,xmm6 - jmp $L054xts_enc_done -ALIGN 16 -$L049xts_enc_done6x: - mov eax,DWORD PTR 112[esp] - and eax,15 - jz $L056xts_enc_ret - movdqa xmm5,xmm1 - mov DWORD PTR 112[esp],eax - jmp $L057xts_enc_steal -ALIGN 16 -$L054xts_enc_done: - mov eax,DWORD PTR 112[esp] - pxor xmm0,xmm0 - and eax,15 - jz $L056xts_enc_ret - pcmpgtd xmm0,xmm1 - mov DWORD PTR 112[esp],eax - pshufd xmm5,xmm0,19 - paddq xmm1,xmm1 - pand xmm5,XMMWORD PTR 96[esp] - pxor xmm5,xmm1 -$L057xts_enc_steal: - movzx ecx,BYTE PTR [esi] - movzx edx,BYTE PTR [edi-16] - lea esi,DWORD PTR 1[esi] - mov BYTE PTR [edi-16],cl - mov BYTE PTR [edi],dl - lea edi,DWORD PTR 1[edi] - sub eax,1 - jnz $L057xts_enc_steal - sub edi,DWORD PTR 112[esp] - mov edx,ebp - mov ecx,ebx - movups xmm2,XMMWORD PTR [edi-16] - xorps xmm2,xmm5 - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L058enc1_loop_10: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L058enc1_loop_10 -DB 102,15,56,221,209 - xorps xmm2,xmm5 - movups XMMWORD PTR [edi-16],xmm2 -$L056xts_enc_ret: - pxor xmm0,xmm0 - pxor xmm1,xmm1 - pxor xmm2,xmm2 - movdqa XMMWORD PTR [esp],xmm0 - pxor xmm3,xmm3 - movdqa XMMWORD PTR 16[esp],xmm0 - pxor xmm4,xmm4 - movdqa XMMWORD PTR 32[esp],xmm0 - pxor xmm5,xmm5 - movdqa XMMWORD PTR 48[esp],xmm0 - pxor xmm6,xmm6 - movdqa XMMWORD PTR 64[esp],xmm0 - pxor xmm7,xmm7 - movdqa XMMWORD PTR 80[esp],xmm0 - mov esp,DWORD PTR 116[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -_aesni_xts_encrypt ENDP -ALIGN 16 -_aesni_xts_decrypt PROC PUBLIC -$L_aesni_xts_decrypt_begin:: - push ebp - push ebx - push esi - push edi - mov edx,DWORD PTR 36[esp] - mov esi,DWORD PTR 40[esp] - mov ecx,DWORD PTR 240[edx] - movups xmm2,XMMWORD PTR [esi] - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L059enc1_loop_11: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L059enc1_loop_11 -DB 102,15,56,221,209 - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - mov ebp,esp - sub esp,120 - and esp,-16 - xor ebx,ebx - test eax,15 - setnz bl - shl ebx,4 - sub eax,ebx - mov DWORD PTR 96[esp],135 - mov DWORD PTR 100[esp],0 - mov DWORD PTR 104[esp],1 - mov DWORD PTR 108[esp],0 - mov DWORD PTR 112[esp],eax - mov DWORD PTR 116[esp],ebp - mov ecx,DWORD PTR 240[edx] - mov ebp,edx - mov ebx,ecx - movdqa xmm1,xmm2 - pxor xmm0,xmm0 - movdqa xmm3,XMMWORD PTR 96[esp] - pcmpgtd xmm0,xmm1 - and eax,-16 - sub eax,96 - jc $L060xts_dec_short - shl ecx,4 - mov ebx,16 - sub ebx,ecx - lea edx,DWORD PTR 32[ecx*1+edx] - jmp $L061xts_dec_loop6 -ALIGN 16 -$L061xts_dec_loop6: - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa XMMWORD PTR [esp],xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa XMMWORD PTR 16[esp],xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa XMMWORD PTR 32[esp],xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa XMMWORD PTR 48[esp],xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - pshufd xmm7,xmm0,19 - movdqa XMMWORD PTR 64[esp],xmm1 - paddq xmm1,xmm1 - movups xmm0,XMMWORD PTR [ebp] - pand xmm7,xmm3 - movups xmm2,XMMWORD PTR [esi] - pxor xmm7,xmm1 - mov ecx,ebx - movdqu xmm3,XMMWORD PTR 16[esi] - xorps xmm2,xmm0 - movdqu xmm4,XMMWORD PTR 32[esi] - pxor xmm3,xmm0 - movdqu xmm5,XMMWORD PTR 48[esi] - pxor xmm4,xmm0 - movdqu xmm6,XMMWORD PTR 64[esi] - pxor xmm5,xmm0 - movdqu xmm1,XMMWORD PTR 80[esi] - pxor xmm6,xmm0 - lea esi,DWORD PTR 96[esi] - pxor xmm2,XMMWORD PTR [esp] - movdqa XMMWORD PTR 80[esp],xmm7 - pxor xmm7,xmm1 - movups xmm1,XMMWORD PTR 16[ebp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] -DB 102,15,56,222,209 - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,XMMWORD PTR 64[esp] -DB 102,15,56,222,217 - pxor xmm7,xmm0 - movups xmm0,XMMWORD PTR 32[ebp] -DB 102,15,56,222,225 -DB 102,15,56,222,233 -DB 102,15,56,222,241 -DB 102,15,56,222,249 - call $L_aesni_decrypt6_enter - movdqa xmm1,XMMWORD PTR 80[esp] - pxor xmm0,xmm0 - xorps xmm2,XMMWORD PTR [esp] - pcmpgtd xmm0,xmm1 - xorps xmm3,XMMWORD PTR 16[esp] - movups XMMWORD PTR [edi],xmm2 - xorps xmm4,XMMWORD PTR 32[esp] - movups XMMWORD PTR 16[edi],xmm3 - xorps xmm5,XMMWORD PTR 48[esp] - movups XMMWORD PTR 32[edi],xmm4 - xorps xmm6,XMMWORD PTR 64[esp] - movups XMMWORD PTR 48[edi],xmm5 - xorps xmm7,xmm1 - movups XMMWORD PTR 64[edi],xmm6 - pshufd xmm2,xmm0,19 - movups XMMWORD PTR 80[edi],xmm7 - lea edi,DWORD PTR 96[edi] - movdqa xmm3,XMMWORD PTR 96[esp] - pxor xmm0,xmm0 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - sub eax,96 - jnc $L061xts_dec_loop6 - mov ecx,DWORD PTR 240[ebp] - mov edx,ebp - mov ebx,ecx -$L060xts_dec_short: - add eax,96 - jz $L062xts_dec_done6x - movdqa xmm5,xmm1 - cmp eax,32 - jb $L063xts_dec_one - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - je $L064xts_dec_two - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa xmm6,xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - cmp eax,64 - jb $L065xts_dec_three - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa xmm7,xmm1 - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 - movdqa XMMWORD PTR [esp],xmm5 - movdqa XMMWORD PTR 16[esp],xmm6 - je $L066xts_dec_four - movdqa XMMWORD PTR 32[esp],xmm7 - pshufd xmm7,xmm0,19 - movdqa XMMWORD PTR 48[esp],xmm1 - paddq xmm1,xmm1 - pand xmm7,xmm3 - pxor xmm7,xmm1 - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - pxor xmm2,XMMWORD PTR [esp] - movdqu xmm5,XMMWORD PTR 48[esi] - pxor xmm3,XMMWORD PTR 16[esp] - movdqu xmm6,XMMWORD PTR 64[esi] - pxor xmm4,XMMWORD PTR 32[esp] - lea esi,DWORD PTR 80[esi] - pxor xmm5,XMMWORD PTR 48[esp] - movdqa XMMWORD PTR 64[esp],xmm7 - pxor xmm6,xmm7 - call __aesni_decrypt6 - movaps xmm1,XMMWORD PTR 64[esp] - xorps xmm2,XMMWORD PTR [esp] - xorps xmm3,XMMWORD PTR 16[esp] - xorps xmm4,XMMWORD PTR 32[esp] - movups XMMWORD PTR [edi],xmm2 - xorps xmm5,XMMWORD PTR 48[esp] - movups XMMWORD PTR 16[edi],xmm3 - xorps xmm6,xmm1 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - movups XMMWORD PTR 64[edi],xmm6 - lea edi,DWORD PTR 80[edi] - jmp $L067xts_dec_done -ALIGN 16 -$L063xts_dec_one: - movups xmm2,XMMWORD PTR [esi] - lea esi,DWORD PTR 16[esi] - xorps xmm2,xmm5 - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L068dec1_loop_12: -DB 102,15,56,222,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L068dec1_loop_12 -DB 102,15,56,223,209 - xorps xmm2,xmm5 - movups XMMWORD PTR [edi],xmm2 - lea edi,DWORD PTR 16[edi] - movdqa xmm1,xmm5 - jmp $L067xts_dec_done -ALIGN 16 -$L064xts_dec_two: - movaps xmm6,xmm1 - movups xmm2,XMMWORD PTR [esi] - movups xmm3,XMMWORD PTR 16[esi] - lea esi,DWORD PTR 32[esi] - xorps xmm2,xmm5 - xorps xmm3,xmm6 - call __aesni_decrypt2 - xorps xmm2,xmm5 - xorps xmm3,xmm6 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - lea edi,DWORD PTR 32[edi] - movdqa xmm1,xmm6 - jmp $L067xts_dec_done -ALIGN 16 -$L065xts_dec_three: - movaps xmm7,xmm1 - movups xmm2,XMMWORD PTR [esi] - movups xmm3,XMMWORD PTR 16[esi] - movups xmm4,XMMWORD PTR 32[esi] - lea esi,DWORD PTR 48[esi] - xorps xmm2,xmm5 - xorps xmm3,xmm6 - xorps xmm4,xmm7 - call __aesni_decrypt3 - xorps xmm2,xmm5 - xorps xmm3,xmm6 - xorps xmm4,xmm7 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - lea edi,DWORD PTR 48[edi] - movdqa xmm1,xmm7 - jmp $L067xts_dec_done -ALIGN 16 -$L066xts_dec_four: - movaps xmm6,xmm1 - movups xmm2,XMMWORD PTR [esi] - movups xmm3,XMMWORD PTR 16[esi] - movups xmm4,XMMWORD PTR 32[esi] - xorps xmm2,XMMWORD PTR [esp] - movups xmm5,XMMWORD PTR 48[esi] - lea esi,DWORD PTR 64[esi] - xorps xmm3,XMMWORD PTR 16[esp] - xorps xmm4,xmm7 - xorps xmm5,xmm6 - call __aesni_decrypt4 - xorps xmm2,XMMWORD PTR [esp] - xorps xmm3,XMMWORD PTR 16[esp] - xorps xmm4,xmm7 - movups XMMWORD PTR [edi],xmm2 - xorps xmm5,xmm6 - movups XMMWORD PTR 16[edi],xmm3 - movups XMMWORD PTR 32[edi],xmm4 - movups XMMWORD PTR 48[edi],xmm5 - lea edi,DWORD PTR 64[edi] - movdqa xmm1,xmm6 - jmp $L067xts_dec_done -ALIGN 16 -$L062xts_dec_done6x: - mov eax,DWORD PTR 112[esp] - and eax,15 - jz $L069xts_dec_ret - mov DWORD PTR 112[esp],eax - jmp $L070xts_dec_only_one_more -ALIGN 16 -$L067xts_dec_done: - mov eax,DWORD PTR 112[esp] - pxor xmm0,xmm0 - and eax,15 - jz $L069xts_dec_ret - pcmpgtd xmm0,xmm1 - mov DWORD PTR 112[esp],eax - pshufd xmm2,xmm0,19 - pxor xmm0,xmm0 - movdqa xmm3,XMMWORD PTR 96[esp] - paddq xmm1,xmm1 - pand xmm2,xmm3 - pcmpgtd xmm0,xmm1 - pxor xmm1,xmm2 -$L070xts_dec_only_one_more: - pshufd xmm5,xmm0,19 - movdqa xmm6,xmm1 - paddq xmm1,xmm1 - pand xmm5,xmm3 - pxor xmm5,xmm1 - mov edx,ebp - mov ecx,ebx - movups xmm2,XMMWORD PTR [esi] - xorps xmm2,xmm5 - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L071dec1_loop_13: -DB 102,15,56,222,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L071dec1_loop_13 -DB 102,15,56,223,209 - xorps xmm2,xmm5 - movups XMMWORD PTR [edi],xmm2 -$L072xts_dec_steal: - movzx ecx,BYTE PTR 16[esi] - movzx edx,BYTE PTR [edi] - lea esi,DWORD PTR 1[esi] - mov BYTE PTR [edi],cl - mov BYTE PTR 16[edi],dl - lea edi,DWORD PTR 1[edi] - sub eax,1 - jnz $L072xts_dec_steal - sub edi,DWORD PTR 112[esp] - mov edx,ebp - mov ecx,ebx - movups xmm2,XMMWORD PTR [edi] - xorps xmm2,xmm6 - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L073dec1_loop_14: -DB 102,15,56,222,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L073dec1_loop_14 -DB 102,15,56,223,209 - xorps xmm2,xmm6 - movups XMMWORD PTR [edi],xmm2 -$L069xts_dec_ret: - pxor xmm0,xmm0 - pxor xmm1,xmm1 - pxor xmm2,xmm2 - movdqa XMMWORD PTR [esp],xmm0 - pxor xmm3,xmm3 - movdqa XMMWORD PTR 16[esp],xmm0 - pxor xmm4,xmm4 - movdqa XMMWORD PTR 32[esp],xmm0 - pxor xmm5,xmm5 - movdqa XMMWORD PTR 48[esp],xmm0 - pxor xmm6,xmm6 - movdqa XMMWORD PTR 64[esp],xmm0 - pxor xmm7,xmm7 - movdqa XMMWORD PTR 80[esp],xmm0 - mov esp,DWORD PTR 116[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -_aesni_xts_decrypt ENDP -ALIGN 16 -_aesni_ocb_encrypt PROC PUBLIC -$L_aesni_ocb_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov ecx,DWORD PTR 40[esp] - mov ebx,DWORD PTR 48[esp] - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - movdqu xmm0,XMMWORD PTR [ecx] - mov ebp,DWORD PTR 36[esp] - movdqu xmm1,XMMWORD PTR [ebx] - mov ebx,DWORD PTR 44[esp] - mov ecx,esp - sub esp,132 - and esp,-16 - sub edi,esi - shl eax,4 - lea eax,DWORD PTR [eax*1+esi-96] - mov DWORD PTR 120[esp],edi - mov DWORD PTR 124[esp],eax - mov DWORD PTR 128[esp],ecx - mov ecx,DWORD PTR 240[edx] - test ebp,1 - jnz $L074odd - bsf eax,ebp - add ebp,1 - shl eax,4 - movdqu xmm7,XMMWORD PTR [eax*1+ebx] - mov eax,edx - movdqu xmm2,XMMWORD PTR [esi] - lea esi,DWORD PTR 16[esi] - pxor xmm7,xmm0 - pxor xmm1,xmm2 - pxor xmm2,xmm7 - movdqa xmm6,xmm1 - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L075enc1_loop_15: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L075enc1_loop_15 -DB 102,15,56,221,209 - xorps xmm2,xmm7 - movdqa xmm0,xmm7 - movdqa xmm1,xmm6 - movups XMMWORD PTR [esi*1+edi-16],xmm2 - mov ecx,DWORD PTR 240[eax] - mov edx,eax - mov eax,DWORD PTR 124[esp] -$L074odd: - shl ecx,4 - mov edi,16 - sub edi,ecx - mov DWORD PTR 112[esp],edx - lea edx,DWORD PTR 32[ecx*1+edx] - mov DWORD PTR 116[esp],edi - cmp esi,eax - ja $L076short - jmp $L077grandloop -ALIGN 32 -$L077grandloop: - lea ecx,DWORD PTR 1[ebp] - lea eax,DWORD PTR 3[ebp] - lea edi,DWORD PTR 5[ebp] - add ebp,6 - bsf ecx,ecx - bsf eax,eax - bsf edi,edi - shl ecx,4 - shl eax,4 - shl edi,4 - movdqu xmm2,XMMWORD PTR [ebx] - movdqu xmm3,XMMWORD PTR [ecx*1+ebx] - mov ecx,DWORD PTR 116[esp] - movdqa xmm4,xmm2 - movdqu xmm5,XMMWORD PTR [eax*1+ebx] - movdqa xmm6,xmm2 - movdqu xmm7,XMMWORD PTR [edi*1+ebx] - pxor xmm2,xmm0 - pxor xmm3,xmm2 - movdqa XMMWORD PTR [esp],xmm2 - pxor xmm4,xmm3 - movdqa XMMWORD PTR 16[esp],xmm3 - pxor xmm5,xmm4 - movdqa XMMWORD PTR 32[esp],xmm4 - pxor xmm6,xmm5 - movdqa XMMWORD PTR 48[esp],xmm5 - pxor xmm7,xmm6 - movdqa XMMWORD PTR 64[esp],xmm6 - movdqa XMMWORD PTR 80[esp],xmm7 - movups xmm0,XMMWORD PTR [ecx*1+edx-48] - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - movdqu xmm5,XMMWORD PTR 48[esi] - movdqu xmm6,XMMWORD PTR 64[esi] - movdqu xmm7,XMMWORD PTR 80[esi] - lea esi,DWORD PTR 96[esi] - pxor xmm1,xmm2 - pxor xmm2,xmm0 - pxor xmm1,xmm3 - pxor xmm3,xmm0 - pxor xmm1,xmm4 - pxor xmm4,xmm0 - pxor xmm1,xmm5 - pxor xmm5,xmm0 - pxor xmm1,xmm6 - pxor xmm6,xmm0 - pxor xmm1,xmm7 - pxor xmm7,xmm0 - movdqa XMMWORD PTR 96[esp],xmm1 - movups xmm1,XMMWORD PTR [ecx*1+edx-32] - pxor xmm2,XMMWORD PTR [esp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,XMMWORD PTR 64[esp] - pxor xmm7,XMMWORD PTR 80[esp] - movups xmm0,XMMWORD PTR [ecx*1+edx-16] -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 - mov edi,DWORD PTR 120[esp] - mov eax,DWORD PTR 124[esp] - call $L_aesni_encrypt6_enter - movdqa xmm0,XMMWORD PTR 80[esp] - pxor xmm2,XMMWORD PTR [esp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,XMMWORD PTR 64[esp] - pxor xmm7,xmm0 - movdqa xmm1,XMMWORD PTR 96[esp] - movdqu XMMWORD PTR [esi*1+edi-96],xmm2 - movdqu XMMWORD PTR [esi*1+edi-80],xmm3 - movdqu XMMWORD PTR [esi*1+edi-64],xmm4 - movdqu XMMWORD PTR [esi*1+edi-48],xmm5 - movdqu XMMWORD PTR [esi*1+edi-32],xmm6 - movdqu XMMWORD PTR [esi*1+edi-16],xmm7 - cmp esi,eax - jb $L077grandloop -$L076short: - add eax,96 - sub eax,esi - jz $L078done - cmp eax,32 - jb $L079one - je $L080two - cmp eax,64 - jb $L081three - je $L082four - lea ecx,DWORD PTR 1[ebp] - lea eax,DWORD PTR 3[ebp] - bsf ecx,ecx - bsf eax,eax - shl ecx,4 - shl eax,4 - movdqu xmm2,XMMWORD PTR [ebx] - movdqu xmm3,XMMWORD PTR [ecx*1+ebx] - mov ecx,DWORD PTR 116[esp] - movdqa xmm4,xmm2 - movdqu xmm5,XMMWORD PTR [eax*1+ebx] - movdqa xmm6,xmm2 - pxor xmm2,xmm0 - pxor xmm3,xmm2 - movdqa XMMWORD PTR [esp],xmm2 - pxor xmm4,xmm3 - movdqa XMMWORD PTR 16[esp],xmm3 - pxor xmm5,xmm4 - movdqa XMMWORD PTR 32[esp],xmm4 - pxor xmm6,xmm5 - movdqa XMMWORD PTR 48[esp],xmm5 - pxor xmm7,xmm6 - movdqa XMMWORD PTR 64[esp],xmm6 - movups xmm0,XMMWORD PTR [ecx*1+edx-48] - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - movdqu xmm5,XMMWORD PTR 48[esi] - movdqu xmm6,XMMWORD PTR 64[esi] - pxor xmm7,xmm7 - pxor xmm1,xmm2 - pxor xmm2,xmm0 - pxor xmm1,xmm3 - pxor xmm3,xmm0 - pxor xmm1,xmm4 - pxor xmm4,xmm0 - pxor xmm1,xmm5 - pxor xmm5,xmm0 - pxor xmm1,xmm6 - pxor xmm6,xmm0 - movdqa XMMWORD PTR 96[esp],xmm1 - movups xmm1,XMMWORD PTR [ecx*1+edx-32] - pxor xmm2,XMMWORD PTR [esp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,XMMWORD PTR 64[esp] - movups xmm0,XMMWORD PTR [ecx*1+edx-16] -DB 102,15,56,220,209 -DB 102,15,56,220,217 -DB 102,15,56,220,225 -DB 102,15,56,220,233 -DB 102,15,56,220,241 -DB 102,15,56,220,249 - mov edi,DWORD PTR 120[esp] - call $L_aesni_encrypt6_enter - movdqa xmm0,XMMWORD PTR 64[esp] - pxor xmm2,XMMWORD PTR [esp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,xmm0 - movdqa xmm1,XMMWORD PTR 96[esp] - movdqu XMMWORD PTR [esi*1+edi],xmm2 - movdqu XMMWORD PTR 16[esi*1+edi],xmm3 - movdqu XMMWORD PTR 32[esi*1+edi],xmm4 - movdqu XMMWORD PTR 48[esi*1+edi],xmm5 - movdqu XMMWORD PTR 64[esi*1+edi],xmm6 - jmp $L078done -ALIGN 16 -$L079one: - movdqu xmm7,XMMWORD PTR [ebx] - mov edx,DWORD PTR 112[esp] - movdqu xmm2,XMMWORD PTR [esi] - mov ecx,DWORD PTR 240[edx] - pxor xmm7,xmm0 - pxor xmm1,xmm2 - pxor xmm2,xmm7 - movdqa xmm6,xmm1 - mov edi,DWORD PTR 120[esp] - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L083enc1_loop_16: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L083enc1_loop_16 -DB 102,15,56,221,209 - xorps xmm2,xmm7 - movdqa xmm0,xmm7 - movdqa xmm1,xmm6 - movups XMMWORD PTR [esi*1+edi],xmm2 - jmp $L078done -ALIGN 16 -$L080two: - lea ecx,DWORD PTR 1[ebp] - mov edx,DWORD PTR 112[esp] - bsf ecx,ecx - shl ecx,4 - movdqu xmm6,XMMWORD PTR [ebx] - movdqu xmm7,XMMWORD PTR [ecx*1+ebx] - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - mov ecx,DWORD PTR 240[edx] - pxor xmm6,xmm0 - pxor xmm7,xmm6 - pxor xmm1,xmm2 - pxor xmm2,xmm6 - pxor xmm1,xmm3 - pxor xmm3,xmm7 - movdqa xmm5,xmm1 - mov edi,DWORD PTR 120[esp] - call __aesni_encrypt2 - xorps xmm2,xmm6 - xorps xmm3,xmm7 - movdqa xmm0,xmm7 - movdqa xmm1,xmm5 - movups XMMWORD PTR [esi*1+edi],xmm2 - movups XMMWORD PTR 16[esi*1+edi],xmm3 - jmp $L078done -ALIGN 16 -$L081three: - lea ecx,DWORD PTR 1[ebp] - mov edx,DWORD PTR 112[esp] - bsf ecx,ecx - shl ecx,4 - movdqu xmm5,XMMWORD PTR [ebx] - movdqu xmm6,XMMWORD PTR [ecx*1+ebx] - movdqa xmm7,xmm5 - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - mov ecx,DWORD PTR 240[edx] - pxor xmm5,xmm0 - pxor xmm6,xmm5 - pxor xmm7,xmm6 - pxor xmm1,xmm2 - pxor xmm2,xmm5 - pxor xmm1,xmm3 - pxor xmm3,xmm6 - pxor xmm1,xmm4 - pxor xmm4,xmm7 - movdqa XMMWORD PTR 96[esp],xmm1 - mov edi,DWORD PTR 120[esp] - call __aesni_encrypt3 - xorps xmm2,xmm5 - xorps xmm3,xmm6 - xorps xmm4,xmm7 - movdqa xmm0,xmm7 - movdqa xmm1,XMMWORD PTR 96[esp] - movups XMMWORD PTR [esi*1+edi],xmm2 - movups XMMWORD PTR 16[esi*1+edi],xmm3 - movups XMMWORD PTR 32[esi*1+edi],xmm4 - jmp $L078done -ALIGN 16 -$L082four: - lea ecx,DWORD PTR 1[ebp] - lea eax,DWORD PTR 3[ebp] - bsf ecx,ecx - bsf eax,eax - mov edx,DWORD PTR 112[esp] - shl ecx,4 - shl eax,4 - movdqu xmm4,XMMWORD PTR [ebx] - movdqu xmm5,XMMWORD PTR [ecx*1+ebx] - movdqa xmm6,xmm4 - movdqu xmm7,XMMWORD PTR [eax*1+ebx] - pxor xmm4,xmm0 - movdqu xmm2,XMMWORD PTR [esi] - pxor xmm5,xmm4 - movdqu xmm3,XMMWORD PTR 16[esi] - pxor xmm6,xmm5 - movdqa XMMWORD PTR [esp],xmm4 - pxor xmm7,xmm6 - movdqa XMMWORD PTR 16[esp],xmm5 - movdqu xmm4,XMMWORD PTR 32[esi] - movdqu xmm5,XMMWORD PTR 48[esi] - mov ecx,DWORD PTR 240[edx] - pxor xmm1,xmm2 - pxor xmm2,XMMWORD PTR [esp] - pxor xmm1,xmm3 - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm1,xmm4 - pxor xmm4,xmm6 - pxor xmm1,xmm5 - pxor xmm5,xmm7 - movdqa XMMWORD PTR 96[esp],xmm1 - mov edi,DWORD PTR 120[esp] - call __aesni_encrypt4 - xorps xmm2,XMMWORD PTR [esp] - xorps xmm3,XMMWORD PTR 16[esp] - xorps xmm4,xmm6 - movups XMMWORD PTR [esi*1+edi],xmm2 - xorps xmm5,xmm7 - movups XMMWORD PTR 16[esi*1+edi],xmm3 - movdqa xmm0,xmm7 - movups XMMWORD PTR 32[esi*1+edi],xmm4 - movdqa xmm1,XMMWORD PTR 96[esp] - movups XMMWORD PTR 48[esi*1+edi],xmm5 -$L078done: - mov edx,DWORD PTR 128[esp] - pxor xmm2,xmm2 - pxor xmm3,xmm3 - movdqa XMMWORD PTR [esp],xmm2 - pxor xmm4,xmm4 - movdqa XMMWORD PTR 16[esp],xmm2 - pxor xmm5,xmm5 - movdqa XMMWORD PTR 32[esp],xmm2 - pxor xmm6,xmm6 - movdqa XMMWORD PTR 48[esp],xmm2 - pxor xmm7,xmm7 - movdqa XMMWORD PTR 64[esp],xmm2 - movdqa XMMWORD PTR 80[esp],xmm2 - movdqa XMMWORD PTR 96[esp],xmm2 - lea esp,DWORD PTR [edx] - mov ecx,DWORD PTR 40[esp] - mov ebx,DWORD PTR 48[esp] - movdqu XMMWORD PTR [ecx],xmm0 - pxor xmm0,xmm0 - movdqu XMMWORD PTR [ebx],xmm1 - pxor xmm1,xmm1 - pop edi - pop esi - pop ebx - pop ebp - ret -_aesni_ocb_encrypt ENDP -ALIGN 16 -_aesni_ocb_decrypt PROC PUBLIC -$L_aesni_ocb_decrypt_begin:: - push ebp - push ebx - push esi - push edi - mov ecx,DWORD PTR 40[esp] - mov ebx,DWORD PTR 48[esp] - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - movdqu xmm0,XMMWORD PTR [ecx] - mov ebp,DWORD PTR 36[esp] - movdqu xmm1,XMMWORD PTR [ebx] - mov ebx,DWORD PTR 44[esp] - mov ecx,esp - sub esp,132 - and esp,-16 - sub edi,esi - shl eax,4 - lea eax,DWORD PTR [eax*1+esi-96] - mov DWORD PTR 120[esp],edi - mov DWORD PTR 124[esp],eax - mov DWORD PTR 128[esp],ecx - mov ecx,DWORD PTR 240[edx] - test ebp,1 - jnz $L084odd - bsf eax,ebp - add ebp,1 - shl eax,4 - movdqu xmm7,XMMWORD PTR [eax*1+ebx] - mov eax,edx - movdqu xmm2,XMMWORD PTR [esi] - lea esi,DWORD PTR 16[esi] - pxor xmm7,xmm0 - pxor xmm2,xmm7 - movdqa xmm6,xmm1 - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L085dec1_loop_17: -DB 102,15,56,222,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L085dec1_loop_17 -DB 102,15,56,223,209 - xorps xmm2,xmm7 - movaps xmm1,xmm6 - movdqa xmm0,xmm7 - xorps xmm1,xmm2 - movups XMMWORD PTR [esi*1+edi-16],xmm2 - mov ecx,DWORD PTR 240[eax] - mov edx,eax - mov eax,DWORD PTR 124[esp] -$L084odd: - shl ecx,4 - mov edi,16 - sub edi,ecx - mov DWORD PTR 112[esp],edx - lea edx,DWORD PTR 32[ecx*1+edx] - mov DWORD PTR 116[esp],edi - cmp esi,eax - ja $L086short - jmp $L087grandloop -ALIGN 32 -$L087grandloop: - lea ecx,DWORD PTR 1[ebp] - lea eax,DWORD PTR 3[ebp] - lea edi,DWORD PTR 5[ebp] - add ebp,6 - bsf ecx,ecx - bsf eax,eax - bsf edi,edi - shl ecx,4 - shl eax,4 - shl edi,4 - movdqu xmm2,XMMWORD PTR [ebx] - movdqu xmm3,XMMWORD PTR [ecx*1+ebx] - mov ecx,DWORD PTR 116[esp] - movdqa xmm4,xmm2 - movdqu xmm5,XMMWORD PTR [eax*1+ebx] - movdqa xmm6,xmm2 - movdqu xmm7,XMMWORD PTR [edi*1+ebx] - pxor xmm2,xmm0 - pxor xmm3,xmm2 - movdqa XMMWORD PTR [esp],xmm2 - pxor xmm4,xmm3 - movdqa XMMWORD PTR 16[esp],xmm3 - pxor xmm5,xmm4 - movdqa XMMWORD PTR 32[esp],xmm4 - pxor xmm6,xmm5 - movdqa XMMWORD PTR 48[esp],xmm5 - pxor xmm7,xmm6 - movdqa XMMWORD PTR 64[esp],xmm6 - movdqa XMMWORD PTR 80[esp],xmm7 - movups xmm0,XMMWORD PTR [ecx*1+edx-48] - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - movdqu xmm5,XMMWORD PTR 48[esi] - movdqu xmm6,XMMWORD PTR 64[esi] - movdqu xmm7,XMMWORD PTR 80[esi] - lea esi,DWORD PTR 96[esi] - movdqa XMMWORD PTR 96[esp],xmm1 - pxor xmm2,xmm0 - pxor xmm3,xmm0 - pxor xmm4,xmm0 - pxor xmm5,xmm0 - pxor xmm6,xmm0 - pxor xmm7,xmm0 - movups xmm1,XMMWORD PTR [ecx*1+edx-32] - pxor xmm2,XMMWORD PTR [esp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,XMMWORD PTR 64[esp] - pxor xmm7,XMMWORD PTR 80[esp] - movups xmm0,XMMWORD PTR [ecx*1+edx-16] -DB 102,15,56,222,209 -DB 102,15,56,222,217 -DB 102,15,56,222,225 -DB 102,15,56,222,233 -DB 102,15,56,222,241 -DB 102,15,56,222,249 - mov edi,DWORD PTR 120[esp] - mov eax,DWORD PTR 124[esp] - call $L_aesni_decrypt6_enter - movdqa xmm0,XMMWORD PTR 80[esp] - pxor xmm2,XMMWORD PTR [esp] - movdqa xmm1,XMMWORD PTR 96[esp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,XMMWORD PTR 64[esp] - pxor xmm7,xmm0 - pxor xmm1,xmm2 - movdqu XMMWORD PTR [esi*1+edi-96],xmm2 - pxor xmm1,xmm3 - movdqu XMMWORD PTR [esi*1+edi-80],xmm3 - pxor xmm1,xmm4 - movdqu XMMWORD PTR [esi*1+edi-64],xmm4 - pxor xmm1,xmm5 - movdqu XMMWORD PTR [esi*1+edi-48],xmm5 - pxor xmm1,xmm6 - movdqu XMMWORD PTR [esi*1+edi-32],xmm6 - pxor xmm1,xmm7 - movdqu XMMWORD PTR [esi*1+edi-16],xmm7 - cmp esi,eax - jb $L087grandloop -$L086short: - add eax,96 - sub eax,esi - jz $L088done - cmp eax,32 - jb $L089one - je $L090two - cmp eax,64 - jb $L091three - je $L092four - lea ecx,DWORD PTR 1[ebp] - lea eax,DWORD PTR 3[ebp] - bsf ecx,ecx - bsf eax,eax - shl ecx,4 - shl eax,4 - movdqu xmm2,XMMWORD PTR [ebx] - movdqu xmm3,XMMWORD PTR [ecx*1+ebx] - mov ecx,DWORD PTR 116[esp] - movdqa xmm4,xmm2 - movdqu xmm5,XMMWORD PTR [eax*1+ebx] - movdqa xmm6,xmm2 - pxor xmm2,xmm0 - pxor xmm3,xmm2 - movdqa XMMWORD PTR [esp],xmm2 - pxor xmm4,xmm3 - movdqa XMMWORD PTR 16[esp],xmm3 - pxor xmm5,xmm4 - movdqa XMMWORD PTR 32[esp],xmm4 - pxor xmm6,xmm5 - movdqa XMMWORD PTR 48[esp],xmm5 - pxor xmm7,xmm6 - movdqa XMMWORD PTR 64[esp],xmm6 - movups xmm0,XMMWORD PTR [ecx*1+edx-48] - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - movdqu xmm5,XMMWORD PTR 48[esi] - movdqu xmm6,XMMWORD PTR 64[esi] - pxor xmm7,xmm7 - movdqa XMMWORD PTR 96[esp],xmm1 - pxor xmm2,xmm0 - pxor xmm3,xmm0 - pxor xmm4,xmm0 - pxor xmm5,xmm0 - pxor xmm6,xmm0 - movups xmm1,XMMWORD PTR [ecx*1+edx-32] - pxor xmm2,XMMWORD PTR [esp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,XMMWORD PTR 64[esp] - movups xmm0,XMMWORD PTR [ecx*1+edx-16] -DB 102,15,56,222,209 -DB 102,15,56,222,217 -DB 102,15,56,222,225 -DB 102,15,56,222,233 -DB 102,15,56,222,241 -DB 102,15,56,222,249 - mov edi,DWORD PTR 120[esp] - call $L_aesni_decrypt6_enter - movdqa xmm0,XMMWORD PTR 64[esp] - pxor xmm2,XMMWORD PTR [esp] - movdqa xmm1,XMMWORD PTR 96[esp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,XMMWORD PTR 32[esp] - pxor xmm5,XMMWORD PTR 48[esp] - pxor xmm6,xmm0 - pxor xmm1,xmm2 - movdqu XMMWORD PTR [esi*1+edi],xmm2 - pxor xmm1,xmm3 - movdqu XMMWORD PTR 16[esi*1+edi],xmm3 - pxor xmm1,xmm4 - movdqu XMMWORD PTR 32[esi*1+edi],xmm4 - pxor xmm1,xmm5 - movdqu XMMWORD PTR 48[esi*1+edi],xmm5 - pxor xmm1,xmm6 - movdqu XMMWORD PTR 64[esi*1+edi],xmm6 - jmp $L088done -ALIGN 16 -$L089one: - movdqu xmm7,XMMWORD PTR [ebx] - mov edx,DWORD PTR 112[esp] - movdqu xmm2,XMMWORD PTR [esi] - mov ecx,DWORD PTR 240[edx] - pxor xmm7,xmm0 - pxor xmm2,xmm7 - movdqa xmm6,xmm1 - mov edi,DWORD PTR 120[esp] - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L093dec1_loop_18: -DB 102,15,56,222,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L093dec1_loop_18 -DB 102,15,56,223,209 - xorps xmm2,xmm7 - movaps xmm1,xmm6 - movdqa xmm0,xmm7 - xorps xmm1,xmm2 - movups XMMWORD PTR [esi*1+edi],xmm2 - jmp $L088done -ALIGN 16 -$L090two: - lea ecx,DWORD PTR 1[ebp] - mov edx,DWORD PTR 112[esp] - bsf ecx,ecx - shl ecx,4 - movdqu xmm6,XMMWORD PTR [ebx] - movdqu xmm7,XMMWORD PTR [ecx*1+ebx] - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - mov ecx,DWORD PTR 240[edx] - movdqa xmm5,xmm1 - pxor xmm6,xmm0 - pxor xmm7,xmm6 - pxor xmm2,xmm6 - pxor xmm3,xmm7 - mov edi,DWORD PTR 120[esp] - call __aesni_decrypt2 - xorps xmm2,xmm6 - xorps xmm3,xmm7 - movdqa xmm0,xmm7 - xorps xmm5,xmm2 - movups XMMWORD PTR [esi*1+edi],xmm2 - xorps xmm5,xmm3 - movups XMMWORD PTR 16[esi*1+edi],xmm3 - movaps xmm1,xmm5 - jmp $L088done -ALIGN 16 -$L091three: - lea ecx,DWORD PTR 1[ebp] - mov edx,DWORD PTR 112[esp] - bsf ecx,ecx - shl ecx,4 - movdqu xmm5,XMMWORD PTR [ebx] - movdqu xmm6,XMMWORD PTR [ecx*1+ebx] - movdqa xmm7,xmm5 - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - mov ecx,DWORD PTR 240[edx] - movdqa XMMWORD PTR 96[esp],xmm1 - pxor xmm5,xmm0 - pxor xmm6,xmm5 - pxor xmm7,xmm6 - pxor xmm2,xmm5 - pxor xmm3,xmm6 - pxor xmm4,xmm7 - mov edi,DWORD PTR 120[esp] - call __aesni_decrypt3 - movdqa xmm1,XMMWORD PTR 96[esp] - xorps xmm2,xmm5 - xorps xmm3,xmm6 - xorps xmm4,xmm7 - movups XMMWORD PTR [esi*1+edi],xmm2 - pxor xmm1,xmm2 - movdqa xmm0,xmm7 - movups XMMWORD PTR 16[esi*1+edi],xmm3 - pxor xmm1,xmm3 - movups XMMWORD PTR 32[esi*1+edi],xmm4 - pxor xmm1,xmm4 - jmp $L088done -ALIGN 16 -$L092four: - lea ecx,DWORD PTR 1[ebp] - lea eax,DWORD PTR 3[ebp] - bsf ecx,ecx - bsf eax,eax - mov edx,DWORD PTR 112[esp] - shl ecx,4 - shl eax,4 - movdqu xmm4,XMMWORD PTR [ebx] - movdqu xmm5,XMMWORD PTR [ecx*1+ebx] - movdqa xmm6,xmm4 - movdqu xmm7,XMMWORD PTR [eax*1+ebx] - pxor xmm4,xmm0 - movdqu xmm2,XMMWORD PTR [esi] - pxor xmm5,xmm4 - movdqu xmm3,XMMWORD PTR 16[esi] - pxor xmm6,xmm5 - movdqa XMMWORD PTR [esp],xmm4 - pxor xmm7,xmm6 - movdqa XMMWORD PTR 16[esp],xmm5 - movdqu xmm4,XMMWORD PTR 32[esi] - movdqu xmm5,XMMWORD PTR 48[esi] - mov ecx,DWORD PTR 240[edx] - movdqa XMMWORD PTR 96[esp],xmm1 - pxor xmm2,XMMWORD PTR [esp] - pxor xmm3,XMMWORD PTR 16[esp] - pxor xmm4,xmm6 - pxor xmm5,xmm7 - mov edi,DWORD PTR 120[esp] - call __aesni_decrypt4 - movdqa xmm1,XMMWORD PTR 96[esp] - xorps xmm2,XMMWORD PTR [esp] - xorps xmm3,XMMWORD PTR 16[esp] - xorps xmm4,xmm6 - movups XMMWORD PTR [esi*1+edi],xmm2 - pxor xmm1,xmm2 - xorps xmm5,xmm7 - movups XMMWORD PTR 16[esi*1+edi],xmm3 - pxor xmm1,xmm3 - movdqa xmm0,xmm7 - movups XMMWORD PTR 32[esi*1+edi],xmm4 - pxor xmm1,xmm4 - movups XMMWORD PTR 48[esi*1+edi],xmm5 - pxor xmm1,xmm5 -$L088done: - mov edx,DWORD PTR 128[esp] - pxor xmm2,xmm2 - pxor xmm3,xmm3 - movdqa XMMWORD PTR [esp],xmm2 - pxor xmm4,xmm4 - movdqa XMMWORD PTR 16[esp],xmm2 - pxor xmm5,xmm5 - movdqa XMMWORD PTR 32[esp],xmm2 - pxor xmm6,xmm6 - movdqa XMMWORD PTR 48[esp],xmm2 - pxor xmm7,xmm7 - movdqa XMMWORD PTR 64[esp],xmm2 - movdqa XMMWORD PTR 80[esp],xmm2 - movdqa XMMWORD PTR 96[esp],xmm2 - lea esp,DWORD PTR [edx] - mov ecx,DWORD PTR 40[esp] - mov ebx,DWORD PTR 48[esp] - movdqu XMMWORD PTR [ecx],xmm0 - pxor xmm0,xmm0 - movdqu XMMWORD PTR [ebx],xmm1 - pxor xmm1,xmm1 - pop edi - pop esi - pop ebx - pop ebp - ret -_aesni_ocb_decrypt ENDP -ALIGN 16 -_aesni_cbc_encrypt PROC PUBLIC -$L_aesni_cbc_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov ebx,esp - mov edi,DWORD PTR 24[esp] - sub ebx,24 - mov eax,DWORD PTR 28[esp] - and ebx,-16 - mov edx,DWORD PTR 32[esp] - mov ebp,DWORD PTR 36[esp] - test eax,eax - jz $L094cbc_abort - cmp DWORD PTR 40[esp],0 - xchg ebx,esp - movups xmm7,XMMWORD PTR [ebp] - mov ecx,DWORD PTR 240[edx] - mov ebp,edx - mov DWORD PTR 16[esp],ebx - mov ebx,ecx - je $L095cbc_decrypt - movaps xmm2,xmm7 - cmp eax,16 - jb $L096cbc_enc_tail - sub eax,16 - jmp $L097cbc_enc_loop -ALIGN 16 -$L097cbc_enc_loop: - movups xmm7,XMMWORD PTR [esi] - lea esi,DWORD PTR 16[esi] - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - xorps xmm7,xmm0 - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm7 -$L098enc1_loop_19: -DB 102,15,56,220,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L098enc1_loop_19 -DB 102,15,56,221,209 - mov ecx,ebx - mov edx,ebp - movups XMMWORD PTR [edi],xmm2 - lea edi,DWORD PTR 16[edi] - sub eax,16 - jnc $L097cbc_enc_loop - add eax,16 - jnz $L096cbc_enc_tail - movaps xmm7,xmm2 - pxor xmm2,xmm2 - jmp $L099cbc_ret -$L096cbc_enc_tail: - mov ecx,eax -DD 2767451785 - mov ecx,16 - sub ecx,eax - xor eax,eax -DD 2868115081 - lea edi,DWORD PTR [edi-16] - mov ecx,ebx - mov esi,edi - mov edx,ebp - jmp $L097cbc_enc_loop -ALIGN 16 -$L095cbc_decrypt: - cmp eax,80 - jbe $L100cbc_dec_tail - movaps XMMWORD PTR [esp],xmm7 - sub eax,80 - jmp $L101cbc_dec_loop6_enter -ALIGN 16 -$L102cbc_dec_loop6: - movaps XMMWORD PTR [esp],xmm0 - movups XMMWORD PTR [edi],xmm7 - lea edi,DWORD PTR 16[edi] -$L101cbc_dec_loop6_enter: - movdqu xmm2,XMMWORD PTR [esi] - movdqu xmm3,XMMWORD PTR 16[esi] - movdqu xmm4,XMMWORD PTR 32[esi] - movdqu xmm5,XMMWORD PTR 48[esi] - movdqu xmm6,XMMWORD PTR 64[esi] - movdqu xmm7,XMMWORD PTR 80[esi] - call __aesni_decrypt6 - movups xmm1,XMMWORD PTR [esi] - movups xmm0,XMMWORD PTR 16[esi] - xorps xmm2,XMMWORD PTR [esp] - xorps xmm3,xmm1 - movups xmm1,XMMWORD PTR 32[esi] - xorps xmm4,xmm0 - movups xmm0,XMMWORD PTR 48[esi] - xorps xmm5,xmm1 - movups xmm1,XMMWORD PTR 64[esi] - xorps xmm6,xmm0 - movups xmm0,XMMWORD PTR 80[esi] - xorps xmm7,xmm1 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - lea esi,DWORD PTR 96[esi] - movups XMMWORD PTR 32[edi],xmm4 - mov ecx,ebx - movups XMMWORD PTR 48[edi],xmm5 - mov edx,ebp - movups XMMWORD PTR 64[edi],xmm6 - lea edi,DWORD PTR 80[edi] - sub eax,96 - ja $L102cbc_dec_loop6 - movaps xmm2,xmm7 - movaps xmm7,xmm0 - add eax,80 - jle $L103cbc_dec_clear_tail_collected - movups XMMWORD PTR [edi],xmm2 - lea edi,DWORD PTR 16[edi] -$L100cbc_dec_tail: - movups xmm2,XMMWORD PTR [esi] - movaps xmm6,xmm2 - cmp eax,16 - jbe $L104cbc_dec_one - movups xmm3,XMMWORD PTR 16[esi] - movaps xmm5,xmm3 - cmp eax,32 - jbe $L105cbc_dec_two - movups xmm4,XMMWORD PTR 32[esi] - cmp eax,48 - jbe $L106cbc_dec_three - movups xmm5,XMMWORD PTR 48[esi] - cmp eax,64 - jbe $L107cbc_dec_four - movups xmm6,XMMWORD PTR 64[esi] - movaps XMMWORD PTR [esp],xmm7 - movups xmm2,XMMWORD PTR [esi] - xorps xmm7,xmm7 - call __aesni_decrypt6 - movups xmm1,XMMWORD PTR [esi] - movups xmm0,XMMWORD PTR 16[esi] - xorps xmm2,XMMWORD PTR [esp] - xorps xmm3,xmm1 - movups xmm1,XMMWORD PTR 32[esi] - xorps xmm4,xmm0 - movups xmm0,XMMWORD PTR 48[esi] - xorps xmm5,xmm1 - movups xmm7,XMMWORD PTR 64[esi] - xorps xmm6,xmm0 - movups XMMWORD PTR [edi],xmm2 - movups XMMWORD PTR 16[edi],xmm3 - pxor xmm3,xmm3 - movups XMMWORD PTR 32[edi],xmm4 - pxor xmm4,xmm4 - movups XMMWORD PTR 48[edi],xmm5 - pxor xmm5,xmm5 - lea edi,DWORD PTR 64[edi] - movaps xmm2,xmm6 - pxor xmm6,xmm6 - sub eax,80 - jmp $L108cbc_dec_tail_collected -ALIGN 16 -$L104cbc_dec_one: - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR 16[edx] - lea edx,DWORD PTR 32[edx] - xorps xmm2,xmm0 -$L109dec1_loop_20: -DB 102,15,56,222,209 - dec ecx - movups xmm1,XMMWORD PTR [edx] - lea edx,DWORD PTR 16[edx] - jnz $L109dec1_loop_20 -DB 102,15,56,223,209 - xorps xmm2,xmm7 - movaps xmm7,xmm6 - sub eax,16 - jmp $L108cbc_dec_tail_collected -ALIGN 16 -$L105cbc_dec_two: - call __aesni_decrypt2 - xorps xmm2,xmm7 - xorps xmm3,xmm6 - movups XMMWORD PTR [edi],xmm2 - movaps xmm2,xmm3 - pxor xmm3,xmm3 - lea edi,DWORD PTR 16[edi] - movaps xmm7,xmm5 - sub eax,32 - jmp $L108cbc_dec_tail_collected -ALIGN 16 -$L106cbc_dec_three: - call __aesni_decrypt3 - xorps xmm2,xmm7 - xorps xmm3,xmm6 - xorps xmm4,xmm5 - movups XMMWORD PTR [edi],xmm2 - movaps xmm2,xmm4 - pxor xmm4,xmm4 - movups XMMWORD PTR 16[edi],xmm3 - pxor xmm3,xmm3 - lea edi,DWORD PTR 32[edi] - movups xmm7,XMMWORD PTR 32[esi] - sub eax,48 - jmp $L108cbc_dec_tail_collected -ALIGN 16 -$L107cbc_dec_four: - call __aesni_decrypt4 - movups xmm1,XMMWORD PTR 16[esi] - movups xmm0,XMMWORD PTR 32[esi] - xorps xmm2,xmm7 - movups xmm7,XMMWORD PTR 48[esi] - xorps xmm3,xmm6 - movups XMMWORD PTR [edi],xmm2 - xorps xmm4,xmm1 - movups XMMWORD PTR 16[edi],xmm3 - pxor xmm3,xmm3 - xorps xmm5,xmm0 - movups XMMWORD PTR 32[edi],xmm4 - pxor xmm4,xmm4 - lea edi,DWORD PTR 48[edi] - movaps xmm2,xmm5 - pxor xmm5,xmm5 - sub eax,64 - jmp $L108cbc_dec_tail_collected -ALIGN 16 -$L103cbc_dec_clear_tail_collected: - pxor xmm3,xmm3 - pxor xmm4,xmm4 - pxor xmm5,xmm5 - pxor xmm6,xmm6 -$L108cbc_dec_tail_collected: - and eax,15 - jnz $L110cbc_dec_tail_partial - movups XMMWORD PTR [edi],xmm2 - pxor xmm0,xmm0 - jmp $L099cbc_ret -ALIGN 16 -$L110cbc_dec_tail_partial: - movaps XMMWORD PTR [esp],xmm2 - pxor xmm0,xmm0 - mov ecx,16 - mov esi,esp - sub ecx,eax -DD 2767451785 - movdqa XMMWORD PTR [esp],xmm2 -$L099cbc_ret: - mov esp,DWORD PTR 16[esp] - mov ebp,DWORD PTR 36[esp] - pxor xmm2,xmm2 - pxor xmm1,xmm1 - movups XMMWORD PTR [ebp],xmm7 - pxor xmm7,xmm7 -$L094cbc_abort: - pop edi - pop esi - pop ebx - pop ebp - ret -_aesni_cbc_encrypt ENDP -ALIGN 16 -__aesni_set_encrypt_key PROC PRIVATE - push ebp - push ebx - test eax,eax - jz $L111bad_pointer - test edx,edx - jz $L111bad_pointer - call $L112pic -$L112pic: - pop ebx - lea ebx,DWORD PTR ($Lkey_const-$L112pic)[ebx] - lea ebp,DWORD PTR _OPENSSL_ia32cap_P - movups xmm0,XMMWORD PTR [eax] - xorps xmm4,xmm4 - mov ebp,DWORD PTR 4[ebp] - lea edx,DWORD PTR 16[edx] - and ebp,268437504 - cmp ecx,256 - je $L11314rounds - cmp ecx,192 - je $L11412rounds - cmp ecx,128 - jne $L115bad_keybits -ALIGN 16 -$L11610rounds: - cmp ebp,268435456 - je $L11710rounds_alt - mov ecx,9 - movups XMMWORD PTR [edx-16],xmm0 -DB 102,15,58,223,200,1 - call $L118key_128_cold -DB 102,15,58,223,200,2 - call $L119key_128 -DB 102,15,58,223,200,4 - call $L119key_128 -DB 102,15,58,223,200,8 - call $L119key_128 -DB 102,15,58,223,200,16 - call $L119key_128 -DB 102,15,58,223,200,32 - call $L119key_128 -DB 102,15,58,223,200,64 - call $L119key_128 -DB 102,15,58,223,200,128 - call $L119key_128 -DB 102,15,58,223,200,27 - call $L119key_128 -DB 102,15,58,223,200,54 - call $L119key_128 - movups XMMWORD PTR [edx],xmm0 - mov DWORD PTR 80[edx],ecx - jmp $L120good_key -ALIGN 16 -$L119key_128: - movups XMMWORD PTR [edx],xmm0 - lea edx,DWORD PTR 16[edx] -$L118key_128_cold: - shufps xmm4,xmm0,16 - xorps xmm0,xmm4 - shufps xmm4,xmm0,140 - xorps xmm0,xmm4 - shufps xmm1,xmm1,255 - xorps xmm0,xmm1 - ret -ALIGN 16 -$L11710rounds_alt: - movdqa xmm5,XMMWORD PTR [ebx] - mov ecx,8 - movdqa xmm4,XMMWORD PTR 32[ebx] - movdqa xmm2,xmm0 - movdqu XMMWORD PTR [edx-16],xmm0 -$L121loop_key128: -DB 102,15,56,0,197 -DB 102,15,56,221,196 - pslld xmm4,1 - lea edx,DWORD PTR 16[edx] - movdqa xmm3,xmm2 - pslldq xmm2,4 - pxor xmm3,xmm2 - pslldq xmm2,4 - pxor xmm3,xmm2 - pslldq xmm2,4 - pxor xmm2,xmm3 - pxor xmm0,xmm2 - movdqu XMMWORD PTR [edx-16],xmm0 - movdqa xmm2,xmm0 - dec ecx - jnz $L121loop_key128 - movdqa xmm4,XMMWORD PTR 48[ebx] -DB 102,15,56,0,197 -DB 102,15,56,221,196 - pslld xmm4,1 - movdqa xmm3,xmm2 - pslldq xmm2,4 - pxor xmm3,xmm2 - pslldq xmm2,4 - pxor xmm3,xmm2 - pslldq xmm2,4 - pxor xmm2,xmm3 - pxor xmm0,xmm2 - movdqu XMMWORD PTR [edx],xmm0 - movdqa xmm2,xmm0 -DB 102,15,56,0,197 -DB 102,15,56,221,196 - movdqa xmm3,xmm2 - pslldq xmm2,4 - pxor xmm3,xmm2 - pslldq xmm2,4 - pxor xmm3,xmm2 - pslldq xmm2,4 - pxor xmm2,xmm3 - pxor xmm0,xmm2 - movdqu XMMWORD PTR 16[edx],xmm0 - mov ecx,9 - mov DWORD PTR 96[edx],ecx - jmp $L120good_key -ALIGN 16 -$L11412rounds: - movq xmm2,QWORD PTR 16[eax] - cmp ebp,268435456 - je $L12212rounds_alt - mov ecx,11 - movups XMMWORD PTR [edx-16],xmm0 -DB 102,15,58,223,202,1 - call $L123key_192a_cold -DB 102,15,58,223,202,2 - call $L124key_192b -DB 102,15,58,223,202,4 - call $L125key_192a -DB 102,15,58,223,202,8 - call $L124key_192b -DB 102,15,58,223,202,16 - call $L125key_192a -DB 102,15,58,223,202,32 - call $L124key_192b -DB 102,15,58,223,202,64 - call $L125key_192a -DB 102,15,58,223,202,128 - call $L124key_192b - movups XMMWORD PTR [edx],xmm0 - mov DWORD PTR 48[edx],ecx - jmp $L120good_key -ALIGN 16 -$L125key_192a: - movups XMMWORD PTR [edx],xmm0 - lea edx,DWORD PTR 16[edx] -ALIGN 16 -$L123key_192a_cold: - movaps xmm5,xmm2 -$L126key_192b_warm: - shufps xmm4,xmm0,16 - movdqa xmm3,xmm2 - xorps xmm0,xmm4 - shufps xmm4,xmm0,140 - pslldq xmm3,4 - xorps xmm0,xmm4 - pshufd xmm1,xmm1,85 - pxor xmm2,xmm3 - pxor xmm0,xmm1 - pshufd xmm3,xmm0,255 - pxor xmm2,xmm3 - ret -ALIGN 16 -$L124key_192b: - movaps xmm3,xmm0 - shufps xmm5,xmm0,68 - movups XMMWORD PTR [edx],xmm5 - shufps xmm3,xmm2,78 - movups XMMWORD PTR 16[edx],xmm3 - lea edx,DWORD PTR 32[edx] - jmp $L126key_192b_warm -ALIGN 16 -$L12212rounds_alt: - movdqa xmm5,XMMWORD PTR 16[ebx] - movdqa xmm4,XMMWORD PTR 32[ebx] - mov ecx,8 - movdqu XMMWORD PTR [edx-16],xmm0 -$L127loop_key192: - movq QWORD PTR [edx],xmm2 - movdqa xmm1,xmm2 -DB 102,15,56,0,213 -DB 102,15,56,221,212 - pslld xmm4,1 - lea edx,DWORD PTR 24[edx] - movdqa xmm3,xmm0 - pslldq xmm0,4 - pxor xmm3,xmm0 - pslldq xmm0,4 - pxor xmm3,xmm0 - pslldq xmm0,4 - pxor xmm0,xmm3 - pshufd xmm3,xmm0,255 - pxor xmm3,xmm1 - pslldq xmm1,4 - pxor xmm3,xmm1 - pxor xmm0,xmm2 - pxor xmm2,xmm3 - movdqu XMMWORD PTR [edx-16],xmm0 - dec ecx - jnz $L127loop_key192 - mov ecx,11 - mov DWORD PTR 32[edx],ecx - jmp $L120good_key -ALIGN 16 -$L11314rounds: - movups xmm2,XMMWORD PTR 16[eax] - lea edx,DWORD PTR 16[edx] - cmp ebp,268435456 - je $L12814rounds_alt - mov ecx,13 - movups XMMWORD PTR [edx-32],xmm0 - movups XMMWORD PTR [edx-16],xmm2 -DB 102,15,58,223,202,1 - call $L129key_256a_cold -DB 102,15,58,223,200,1 - call $L130key_256b -DB 102,15,58,223,202,2 - call $L131key_256a -DB 102,15,58,223,200,2 - call $L130key_256b -DB 102,15,58,223,202,4 - call $L131key_256a -DB 102,15,58,223,200,4 - call $L130key_256b -DB 102,15,58,223,202,8 - call $L131key_256a -DB 102,15,58,223,200,8 - call $L130key_256b -DB 102,15,58,223,202,16 - call $L131key_256a -DB 102,15,58,223,200,16 - call $L130key_256b -DB 102,15,58,223,202,32 - call $L131key_256a -DB 102,15,58,223,200,32 - call $L130key_256b -DB 102,15,58,223,202,64 - call $L131key_256a - movups XMMWORD PTR [edx],xmm0 - mov DWORD PTR 16[edx],ecx - xor eax,eax - jmp $L120good_key -ALIGN 16 -$L131key_256a: - movups XMMWORD PTR [edx],xmm2 - lea edx,DWORD PTR 16[edx] -$L129key_256a_cold: - shufps xmm4,xmm0,16 - xorps xmm0,xmm4 - shufps xmm4,xmm0,140 - xorps xmm0,xmm4 - shufps xmm1,xmm1,255 - xorps xmm0,xmm1 - ret -ALIGN 16 -$L130key_256b: - movups XMMWORD PTR [edx],xmm0 - lea edx,DWORD PTR 16[edx] - shufps xmm4,xmm2,16 - xorps xmm2,xmm4 - shufps xmm4,xmm2,140 - xorps xmm2,xmm4 - shufps xmm1,xmm1,170 - xorps xmm2,xmm1 - ret -ALIGN 16 -$L12814rounds_alt: - movdqa xmm5,XMMWORD PTR [ebx] - movdqa xmm4,XMMWORD PTR 32[ebx] - mov ecx,7 - movdqu XMMWORD PTR [edx-32],xmm0 - movdqa xmm1,xmm2 - movdqu XMMWORD PTR [edx-16],xmm2 -$L132loop_key256: -DB 102,15,56,0,213 -DB 102,15,56,221,212 - movdqa xmm3,xmm0 - pslldq xmm0,4 - pxor xmm3,xmm0 - pslldq xmm0,4 - pxor xmm3,xmm0 - pslldq xmm0,4 - pxor xmm0,xmm3 - pslld xmm4,1 - pxor xmm0,xmm2 - movdqu XMMWORD PTR [edx],xmm0 - dec ecx - jz $L133done_key256 - pshufd xmm2,xmm0,255 - pxor xmm3,xmm3 -DB 102,15,56,221,211 - movdqa xmm3,xmm1 - pslldq xmm1,4 - pxor xmm3,xmm1 - pslldq xmm1,4 - pxor xmm3,xmm1 - pslldq xmm1,4 - pxor xmm1,xmm3 - pxor xmm2,xmm1 - movdqu XMMWORD PTR 16[edx],xmm2 - lea edx,DWORD PTR 32[edx] - movdqa xmm1,xmm2 - jmp $L132loop_key256 -$L133done_key256: - mov ecx,13 - mov DWORD PTR 16[edx],ecx -$L120good_key: - pxor xmm0,xmm0 - pxor xmm1,xmm1 - pxor xmm2,xmm2 - pxor xmm3,xmm3 - pxor xmm4,xmm4 - pxor xmm5,xmm5 - xor eax,eax - pop ebx - pop ebp - ret -ALIGN 4 -$L111bad_pointer: - mov eax,-1 - pop ebx - pop ebp - ret -ALIGN 4 -$L115bad_keybits: - pxor xmm0,xmm0 - mov eax,-2 - pop ebx - pop ebp - ret -__aesni_set_encrypt_key ENDP -ALIGN 16 -_aesni_set_encrypt_key PROC PUBLIC -$L_aesni_set_encrypt_key_begin:: - mov eax,DWORD PTR 4[esp] - mov ecx,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] - call __aesni_set_encrypt_key - ret -_aesni_set_encrypt_key ENDP -ALIGN 16 -_aesni_set_decrypt_key PROC PUBLIC -$L_aesni_set_decrypt_key_begin:: - mov eax,DWORD PTR 4[esp] - mov ecx,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] - call __aesni_set_encrypt_key - mov edx,DWORD PTR 12[esp] - shl ecx,4 - test eax,eax - jnz $L134dec_key_ret - lea eax,DWORD PTR 16[ecx*1+edx] - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR [eax] - movups XMMWORD PTR [eax],xmm0 - movups XMMWORD PTR [edx],xmm1 - lea edx,DWORD PTR 16[edx] - lea eax,DWORD PTR [eax-16] -$L135dec_key_inverse: - movups xmm0,XMMWORD PTR [edx] - movups xmm1,XMMWORD PTR [eax] -DB 102,15,56,219,192 -DB 102,15,56,219,201 - lea edx,DWORD PTR 16[edx] - lea eax,DWORD PTR [eax-16] - movups XMMWORD PTR 16[eax],xmm0 - movups XMMWORD PTR [edx-16],xmm1 - cmp eax,edx - ja $L135dec_key_inverse - movups xmm0,XMMWORD PTR [edx] -DB 102,15,56,219,192 - movups XMMWORD PTR [edx],xmm0 - pxor xmm0,xmm0 - pxor xmm1,xmm1 - xor eax,eax -$L134dec_key_ret: - ret -_aesni_set_decrypt_key ENDP -ALIGN 64 -$Lkey_const:: -DD 202313229,202313229,202313229,202313229 -DD 67569157,67569157,67569157,67569157 -DD 1,1,1,1 -DD 27,27,27,27 -DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 -DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 -DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 -DB 115,108,46,111,114,103,62,0 -.text$ ENDS -.bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:DWORD:4 -.bss ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +;EXTERN _OPENSSL_ia32cap_P:NEAR +ALIGN 16 +_aesni_encrypt PROC PUBLIC +$L_aesni_encrypt_begin:: + mov eax,DWORD PTR 4[esp] + mov edx,DWORD PTR 12[esp] + movups xmm2,XMMWORD PTR [eax] + mov ecx,DWORD PTR 240[edx] + mov eax,DWORD PTR 8[esp] + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L000enc1_loop_1: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L000enc1_loop_1 +DB 102,15,56,221,209 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movups XMMWORD PTR [eax],xmm2 + pxor xmm2,xmm2 + ret +_aesni_encrypt ENDP +ALIGN 16 +_aesni_decrypt PROC PUBLIC +$L_aesni_decrypt_begin:: + mov eax,DWORD PTR 4[esp] + mov edx,DWORD PTR 12[esp] + movups xmm2,XMMWORD PTR [eax] + mov ecx,DWORD PTR 240[edx] + mov eax,DWORD PTR 8[esp] + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L001dec1_loop_2: +DB 102,15,56,222,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L001dec1_loop_2 +DB 102,15,56,223,209 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movups XMMWORD PTR [eax],xmm2 + pxor xmm2,xmm2 + ret +_aesni_decrypt ENDP +ALIGN 16 +__aesni_encrypt2 PROC PRIVATE + movups xmm0,XMMWORD PTR [edx] + shl ecx,4 + movups xmm1,XMMWORD PTR 16[edx] + xorps xmm2,xmm0 + pxor xmm3,xmm0 + movups xmm0,XMMWORD PTR 32[edx] + lea edx,DWORD PTR 32[ecx*1+edx] + neg ecx + add ecx,16 +$L002enc2_loop: +DB 102,15,56,220,209 +DB 102,15,56,220,217 + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L002enc2_loop +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,221,208 +DB 102,15,56,221,216 + ret +__aesni_encrypt2 ENDP +ALIGN 16 +__aesni_decrypt2 PROC PRIVATE + movups xmm0,XMMWORD PTR [edx] + shl ecx,4 + movups xmm1,XMMWORD PTR 16[edx] + xorps xmm2,xmm0 + pxor xmm3,xmm0 + movups xmm0,XMMWORD PTR 32[edx] + lea edx,DWORD PTR 32[ecx*1+edx] + neg ecx + add ecx,16 +$L003dec2_loop: +DB 102,15,56,222,209 +DB 102,15,56,222,217 + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,222,208 +DB 102,15,56,222,216 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L003dec2_loop +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,223,208 +DB 102,15,56,223,216 + ret +__aesni_decrypt2 ENDP +ALIGN 16 +__aesni_encrypt3 PROC PRIVATE + movups xmm0,XMMWORD PTR [edx] + shl ecx,4 + movups xmm1,XMMWORD PTR 16[edx] + xorps xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 + movups xmm0,XMMWORD PTR 32[edx] + lea edx,DWORD PTR 32[ecx*1+edx] + neg ecx + add ecx,16 +$L004enc3_loop: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L004enc3_loop +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,221,208 +DB 102,15,56,221,216 +DB 102,15,56,221,224 + ret +__aesni_encrypt3 ENDP +ALIGN 16 +__aesni_decrypt3 PROC PRIVATE + movups xmm0,XMMWORD PTR [edx] + shl ecx,4 + movups xmm1,XMMWORD PTR 16[edx] + xorps xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 + movups xmm0,XMMWORD PTR 32[edx] + lea edx,DWORD PTR 32[ecx*1+edx] + neg ecx + add ecx,16 +$L005dec3_loop: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L005dec3_loop +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,223,208 +DB 102,15,56,223,216 +DB 102,15,56,223,224 + ret +__aesni_decrypt3 ENDP +ALIGN 16 +__aesni_encrypt4 PROC PRIVATE + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + shl ecx,4 + xorps xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 + pxor xmm5,xmm0 + movups xmm0,XMMWORD PTR 32[edx] + lea edx,DWORD PTR 32[ecx*1+edx] + neg ecx +DB 15,31,64,0 + add ecx,16 +$L006enc4_loop: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L006enc4_loop +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,221,208 +DB 102,15,56,221,216 +DB 102,15,56,221,224 +DB 102,15,56,221,232 + ret +__aesni_encrypt4 ENDP +ALIGN 16 +__aesni_decrypt4 PROC PRIVATE + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + shl ecx,4 + xorps xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 + pxor xmm5,xmm0 + movups xmm0,XMMWORD PTR 32[edx] + lea edx,DWORD PTR 32[ecx*1+edx] + neg ecx +DB 15,31,64,0 + add ecx,16 +$L007dec4_loop: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L007dec4_loop +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,223,208 +DB 102,15,56,223,216 +DB 102,15,56,223,224 +DB 102,15,56,223,232 + ret +__aesni_decrypt4 ENDP +ALIGN 16 +__aesni_encrypt6 PROC PRIVATE + movups xmm0,XMMWORD PTR [edx] + shl ecx,4 + movups xmm1,XMMWORD PTR 16[edx] + xorps xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 +DB 102,15,56,220,209 + pxor xmm5,xmm0 + pxor xmm6,xmm0 +DB 102,15,56,220,217 + lea edx,DWORD PTR 32[ecx*1+edx] + neg ecx +DB 102,15,56,220,225 + pxor xmm7,xmm0 + movups xmm0,XMMWORD PTR [ecx*1+edx] + add ecx,16 + jmp $L008_aesni_encrypt6_inner +ALIGN 16 +$L009enc6_loop: +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +$L008_aesni_encrypt6_inner: +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 +$L_aesni_encrypt6_enter:: + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 +DB 102,15,56,220,224 +DB 102,15,56,220,232 +DB 102,15,56,220,240 +DB 102,15,56,220,248 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L009enc6_loop +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 +DB 102,15,56,221,208 +DB 102,15,56,221,216 +DB 102,15,56,221,224 +DB 102,15,56,221,232 +DB 102,15,56,221,240 +DB 102,15,56,221,248 + ret +__aesni_encrypt6 ENDP +ALIGN 16 +__aesni_decrypt6 PROC PRIVATE + movups xmm0,XMMWORD PTR [edx] + shl ecx,4 + movups xmm1,XMMWORD PTR 16[edx] + xorps xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 +DB 102,15,56,222,209 + pxor xmm5,xmm0 + pxor xmm6,xmm0 +DB 102,15,56,222,217 + lea edx,DWORD PTR 32[ecx*1+edx] + neg ecx +DB 102,15,56,222,225 + pxor xmm7,xmm0 + movups xmm0,XMMWORD PTR [ecx*1+edx] + add ecx,16 + jmp $L010_aesni_decrypt6_inner +ALIGN 16 +$L011dec6_loop: +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +$L010_aesni_decrypt6_inner: +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +$L_aesni_decrypt6_enter:: + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,222,208 +DB 102,15,56,222,216 +DB 102,15,56,222,224 +DB 102,15,56,222,232 +DB 102,15,56,222,240 +DB 102,15,56,222,248 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L011dec6_loop +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 +DB 102,15,56,223,208 +DB 102,15,56,223,216 +DB 102,15,56,223,224 +DB 102,15,56,223,232 +DB 102,15,56,223,240 +DB 102,15,56,223,248 + ret +__aesni_decrypt6 ENDP +ALIGN 16 +_aesni_ecb_encrypt PROC PUBLIC +$L_aesni_ecb_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + mov ebx,DWORD PTR 36[esp] + and eax,-16 + jz $L012ecb_ret + mov ecx,DWORD PTR 240[edx] + test ebx,ebx + jz $L013ecb_decrypt + mov ebp,edx + mov ebx,ecx + cmp eax,96 + jb $L014ecb_enc_tail + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + movdqu xmm5,XMMWORD PTR 48[esi] + movdqu xmm6,XMMWORD PTR 64[esi] + movdqu xmm7,XMMWORD PTR 80[esi] + lea esi,DWORD PTR 96[esi] + sub eax,96 + jmp $L015ecb_enc_loop6_enter +ALIGN 16 +$L016ecb_enc_loop6: + movups XMMWORD PTR [edi],xmm2 + movdqu xmm2,XMMWORD PTR [esi] + movups XMMWORD PTR 16[edi],xmm3 + movdqu xmm3,XMMWORD PTR 16[esi] + movups XMMWORD PTR 32[edi],xmm4 + movdqu xmm4,XMMWORD PTR 32[esi] + movups XMMWORD PTR 48[edi],xmm5 + movdqu xmm5,XMMWORD PTR 48[esi] + movups XMMWORD PTR 64[edi],xmm6 + movdqu xmm6,XMMWORD PTR 64[esi] + movups XMMWORD PTR 80[edi],xmm7 + lea edi,DWORD PTR 96[edi] + movdqu xmm7,XMMWORD PTR 80[esi] + lea esi,DWORD PTR 96[esi] +$L015ecb_enc_loop6_enter: + call __aesni_encrypt6 + mov edx,ebp + mov ecx,ebx + sub eax,96 + jnc $L016ecb_enc_loop6 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + movups XMMWORD PTR 64[edi],xmm6 + movups XMMWORD PTR 80[edi],xmm7 + lea edi,DWORD PTR 96[edi] + add eax,96 + jz $L012ecb_ret +$L014ecb_enc_tail: + movups xmm2,XMMWORD PTR [esi] + cmp eax,32 + jb $L017ecb_enc_one + movups xmm3,XMMWORD PTR 16[esi] + je $L018ecb_enc_two + movups xmm4,XMMWORD PTR 32[esi] + cmp eax,64 + jb $L019ecb_enc_three + movups xmm5,XMMWORD PTR 48[esi] + je $L020ecb_enc_four + movups xmm6,XMMWORD PTR 64[esi] + xorps xmm7,xmm7 + call __aesni_encrypt6 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + movups XMMWORD PTR 64[edi],xmm6 + jmp $L012ecb_ret +ALIGN 16 +$L017ecb_enc_one: + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L021enc1_loop_3: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L021enc1_loop_3 +DB 102,15,56,221,209 + movups XMMWORD PTR [edi],xmm2 + jmp $L012ecb_ret +ALIGN 16 +$L018ecb_enc_two: + call __aesni_encrypt2 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + jmp $L012ecb_ret +ALIGN 16 +$L019ecb_enc_three: + call __aesni_encrypt3 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + jmp $L012ecb_ret +ALIGN 16 +$L020ecb_enc_four: + call __aesni_encrypt4 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + jmp $L012ecb_ret +ALIGN 16 +$L013ecb_decrypt: + mov ebp,edx + mov ebx,ecx + cmp eax,96 + jb $L022ecb_dec_tail + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + movdqu xmm5,XMMWORD PTR 48[esi] + movdqu xmm6,XMMWORD PTR 64[esi] + movdqu xmm7,XMMWORD PTR 80[esi] + lea esi,DWORD PTR 96[esi] + sub eax,96 + jmp $L023ecb_dec_loop6_enter +ALIGN 16 +$L024ecb_dec_loop6: + movups XMMWORD PTR [edi],xmm2 + movdqu xmm2,XMMWORD PTR [esi] + movups XMMWORD PTR 16[edi],xmm3 + movdqu xmm3,XMMWORD PTR 16[esi] + movups XMMWORD PTR 32[edi],xmm4 + movdqu xmm4,XMMWORD PTR 32[esi] + movups XMMWORD PTR 48[edi],xmm5 + movdqu xmm5,XMMWORD PTR 48[esi] + movups XMMWORD PTR 64[edi],xmm6 + movdqu xmm6,XMMWORD PTR 64[esi] + movups XMMWORD PTR 80[edi],xmm7 + lea edi,DWORD PTR 96[edi] + movdqu xmm7,XMMWORD PTR 80[esi] + lea esi,DWORD PTR 96[esi] +$L023ecb_dec_loop6_enter: + call __aesni_decrypt6 + mov edx,ebp + mov ecx,ebx + sub eax,96 + jnc $L024ecb_dec_loop6 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + movups XMMWORD PTR 64[edi],xmm6 + movups XMMWORD PTR 80[edi],xmm7 + lea edi,DWORD PTR 96[edi] + add eax,96 + jz $L012ecb_ret +$L022ecb_dec_tail: + movups xmm2,XMMWORD PTR [esi] + cmp eax,32 + jb $L025ecb_dec_one + movups xmm3,XMMWORD PTR 16[esi] + je $L026ecb_dec_two + movups xmm4,XMMWORD PTR 32[esi] + cmp eax,64 + jb $L027ecb_dec_three + movups xmm5,XMMWORD PTR 48[esi] + je $L028ecb_dec_four + movups xmm6,XMMWORD PTR 64[esi] + xorps xmm7,xmm7 + call __aesni_decrypt6 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + movups XMMWORD PTR 64[edi],xmm6 + jmp $L012ecb_ret +ALIGN 16 +$L025ecb_dec_one: + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L029dec1_loop_4: +DB 102,15,56,222,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L029dec1_loop_4 +DB 102,15,56,223,209 + movups XMMWORD PTR [edi],xmm2 + jmp $L012ecb_ret +ALIGN 16 +$L026ecb_dec_two: + call __aesni_decrypt2 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + jmp $L012ecb_ret +ALIGN 16 +$L027ecb_dec_three: + call __aesni_decrypt3 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + jmp $L012ecb_ret +ALIGN 16 +$L028ecb_dec_four: + call __aesni_decrypt4 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 +$L012ecb_ret: + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + pxor xmm6,xmm6 + pxor xmm7,xmm7 + pop edi + pop esi + pop ebx + pop ebp + ret +_aesni_ecb_encrypt ENDP +ALIGN 16 +_aesni_ccm64_encrypt_blocks PROC PUBLIC +$L_aesni_ccm64_encrypt_blocks_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + mov ebx,DWORD PTR 36[esp] + mov ecx,DWORD PTR 40[esp] + mov ebp,esp + sub esp,60 + and esp,-16 + mov DWORD PTR 48[esp],ebp + movdqu xmm7,XMMWORD PTR [ebx] + movdqu xmm3,XMMWORD PTR [ecx] + mov ecx,DWORD PTR 240[edx] + mov DWORD PTR [esp],202182159 + mov DWORD PTR 4[esp],134810123 + mov DWORD PTR 8[esp],67438087 + mov DWORD PTR 12[esp],66051 + mov ebx,1 + xor ebp,ebp + mov DWORD PTR 16[esp],ebx + mov DWORD PTR 20[esp],ebp + mov DWORD PTR 24[esp],ebp + mov DWORD PTR 28[esp],ebp + shl ecx,4 + mov ebx,16 + lea ebp,DWORD PTR [edx] + movdqa xmm5,XMMWORD PTR [esp] + movdqa xmm2,xmm7 + lea edx,DWORD PTR 32[ecx*1+edx] + sub ebx,ecx +DB 102,15,56,0,253 +$L030ccm64_enc_outer: + movups xmm0,XMMWORD PTR [ebp] + mov ecx,ebx + movups xmm6,XMMWORD PTR [esi] + xorps xmm2,xmm0 + movups xmm1,XMMWORD PTR 16[ebp] + xorps xmm0,xmm6 + xorps xmm3,xmm0 + movups xmm0,XMMWORD PTR 32[ebp] +$L031ccm64_enc2_loop: +DB 102,15,56,220,209 +DB 102,15,56,220,217 + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L031ccm64_enc2_loop +DB 102,15,56,220,209 +DB 102,15,56,220,217 + paddq xmm7,XMMWORD PTR 16[esp] + dec eax +DB 102,15,56,221,208 +DB 102,15,56,221,216 + lea esi,DWORD PTR 16[esi] + xorps xmm6,xmm2 + movdqa xmm2,xmm7 + movups XMMWORD PTR [edi],xmm6 +DB 102,15,56,0,213 + lea edi,DWORD PTR 16[edi] + jnz $L030ccm64_enc_outer + mov esp,DWORD PTR 48[esp] + mov edi,DWORD PTR 40[esp] + movups XMMWORD PTR [edi],xmm3 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + pxor xmm6,xmm6 + pxor xmm7,xmm7 + pop edi + pop esi + pop ebx + pop ebp + ret +_aesni_ccm64_encrypt_blocks ENDP +ALIGN 16 +_aesni_ccm64_decrypt_blocks PROC PUBLIC +$L_aesni_ccm64_decrypt_blocks_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + mov ebx,DWORD PTR 36[esp] + mov ecx,DWORD PTR 40[esp] + mov ebp,esp + sub esp,60 + and esp,-16 + mov DWORD PTR 48[esp],ebp + movdqu xmm7,XMMWORD PTR [ebx] + movdqu xmm3,XMMWORD PTR [ecx] + mov ecx,DWORD PTR 240[edx] + mov DWORD PTR [esp],202182159 + mov DWORD PTR 4[esp],134810123 + mov DWORD PTR 8[esp],67438087 + mov DWORD PTR 12[esp],66051 + mov ebx,1 + xor ebp,ebp + mov DWORD PTR 16[esp],ebx + mov DWORD PTR 20[esp],ebp + mov DWORD PTR 24[esp],ebp + mov DWORD PTR 28[esp],ebp + movdqa xmm5,XMMWORD PTR [esp] + movdqa xmm2,xmm7 + mov ebp,edx + mov ebx,ecx +DB 102,15,56,0,253 + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L032enc1_loop_5: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L032enc1_loop_5 +DB 102,15,56,221,209 + shl ebx,4 + mov ecx,16 + movups xmm6,XMMWORD PTR [esi] + paddq xmm7,XMMWORD PTR 16[esp] + lea esi,QWORD PTR 16[esi] + sub ecx,ebx + lea edx,DWORD PTR 32[ebx*1+ebp] + mov ebx,ecx + jmp $L033ccm64_dec_outer +ALIGN 16 +$L033ccm64_dec_outer: + xorps xmm6,xmm2 + movdqa xmm2,xmm7 + movups XMMWORD PTR [edi],xmm6 + lea edi,DWORD PTR 16[edi] +DB 102,15,56,0,213 + sub eax,1 + jz $L034ccm64_dec_break + movups xmm0,XMMWORD PTR [ebp] + mov ecx,ebx + movups xmm1,XMMWORD PTR 16[ebp] + xorps xmm6,xmm0 + xorps xmm2,xmm0 + xorps xmm3,xmm6 + movups xmm0,XMMWORD PTR 32[ebp] +$L035ccm64_dec2_loop: +DB 102,15,56,220,209 +DB 102,15,56,220,217 + movups xmm1,XMMWORD PTR [ecx*1+edx] + add ecx,32 +DB 102,15,56,220,208 +DB 102,15,56,220,216 + movups xmm0,XMMWORD PTR [ecx*1+edx-16] + jnz $L035ccm64_dec2_loop + movups xmm6,XMMWORD PTR [esi] + paddq xmm7,XMMWORD PTR 16[esp] +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,221,208 +DB 102,15,56,221,216 + lea esi,QWORD PTR 16[esi] + jmp $L033ccm64_dec_outer +ALIGN 16 +$L034ccm64_dec_break: + mov ecx,DWORD PTR 240[ebp] + mov edx,ebp + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + xorps xmm6,xmm0 + lea edx,DWORD PTR 32[edx] + xorps xmm3,xmm6 +$L036enc1_loop_6: +DB 102,15,56,220,217 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L036enc1_loop_6 +DB 102,15,56,221,217 + mov esp,DWORD PTR 48[esp] + mov edi,DWORD PTR 40[esp] + movups XMMWORD PTR [edi],xmm3 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + pxor xmm6,xmm6 + pxor xmm7,xmm7 + pop edi + pop esi + pop ebx + pop ebp + ret +_aesni_ccm64_decrypt_blocks ENDP +ALIGN 16 +_aesni_ctr32_encrypt_blocks PROC PUBLIC +$L_aesni_ctr32_encrypt_blocks_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + mov ebx,DWORD PTR 36[esp] + mov ebp,esp + sub esp,88 + and esp,-16 + mov DWORD PTR 80[esp],ebp + cmp eax,1 + je $L037ctr32_one_shortcut + movdqu xmm7,XMMWORD PTR [ebx] + mov DWORD PTR [esp],202182159 + mov DWORD PTR 4[esp],134810123 + mov DWORD PTR 8[esp],67438087 + mov DWORD PTR 12[esp],66051 + mov ecx,6 + xor ebp,ebp + mov DWORD PTR 16[esp],ecx + mov DWORD PTR 20[esp],ecx + mov DWORD PTR 24[esp],ecx + mov DWORD PTR 28[esp],ebp +DB 102,15,58,22,251,3 +DB 102,15,58,34,253,3 + mov ecx,DWORD PTR 240[edx] + bswap ebx + pxor xmm0,xmm0 + pxor xmm1,xmm1 + movdqa xmm2,XMMWORD PTR [esp] +DB 102,15,58,34,195,0 + lea ebp,DWORD PTR 3[ebx] +DB 102,15,58,34,205,0 + inc ebx +DB 102,15,58,34,195,1 + inc ebp +DB 102,15,58,34,205,1 + inc ebx +DB 102,15,58,34,195,2 + inc ebp +DB 102,15,58,34,205,2 + movdqa XMMWORD PTR 48[esp],xmm0 +DB 102,15,56,0,194 + movdqu xmm6,XMMWORD PTR [edx] + movdqa XMMWORD PTR 64[esp],xmm1 +DB 102,15,56,0,202 + pshufd xmm2,xmm0,192 + pshufd xmm3,xmm0,128 + cmp eax,6 + jb $L038ctr32_tail + pxor xmm7,xmm6 + shl ecx,4 + mov ebx,16 + movdqa XMMWORD PTR 32[esp],xmm7 + mov ebp,edx + sub ebx,ecx + lea edx,DWORD PTR 32[ecx*1+edx] + sub eax,6 + jmp $L039ctr32_loop6 +ALIGN 16 +$L039ctr32_loop6: + pshufd xmm4,xmm0,64 + movdqa xmm0,XMMWORD PTR 32[esp] + pshufd xmm5,xmm1,192 + pxor xmm2,xmm0 + pshufd xmm6,xmm1,128 + pxor xmm3,xmm0 + pshufd xmm7,xmm1,64 + movups xmm1,XMMWORD PTR 16[ebp] + pxor xmm4,xmm0 + pxor xmm5,xmm0 +DB 102,15,56,220,209 + pxor xmm6,xmm0 + pxor xmm7,xmm0 +DB 102,15,56,220,217 + movups xmm0,XMMWORD PTR 32[ebp] + mov ecx,ebx +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 + call $L_aesni_encrypt6_enter + movups xmm1,XMMWORD PTR [esi] + movups xmm0,XMMWORD PTR 16[esi] + xorps xmm2,xmm1 + movups xmm1,XMMWORD PTR 32[esi] + xorps xmm3,xmm0 + movups XMMWORD PTR [edi],xmm2 + movdqa xmm0,XMMWORD PTR 16[esp] + xorps xmm4,xmm1 + movdqa xmm1,XMMWORD PTR 64[esp] + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + paddd xmm1,xmm0 + paddd xmm0,XMMWORD PTR 48[esp] + movdqa xmm2,XMMWORD PTR [esp] + movups xmm3,XMMWORD PTR 48[esi] + movups xmm4,XMMWORD PTR 64[esi] + xorps xmm5,xmm3 + movups xmm3,XMMWORD PTR 80[esi] + lea esi,DWORD PTR 96[esi] + movdqa XMMWORD PTR 48[esp],xmm0 +DB 102,15,56,0,194 + xorps xmm6,xmm4 + movups XMMWORD PTR 48[edi],xmm5 + xorps xmm7,xmm3 + movdqa XMMWORD PTR 64[esp],xmm1 +DB 102,15,56,0,202 + movups XMMWORD PTR 64[edi],xmm6 + pshufd xmm2,xmm0,192 + movups XMMWORD PTR 80[edi],xmm7 + lea edi,DWORD PTR 96[edi] + pshufd xmm3,xmm0,128 + sub eax,6 + jnc $L039ctr32_loop6 + add eax,6 + jz $L040ctr32_ret + movdqu xmm7,XMMWORD PTR [ebp] + mov edx,ebp + pxor xmm7,XMMWORD PTR 32[esp] + mov ecx,DWORD PTR 240[ebp] +$L038ctr32_tail: + por xmm2,xmm7 + cmp eax,2 + jb $L041ctr32_one + pshufd xmm4,xmm0,64 + por xmm3,xmm7 + je $L042ctr32_two + pshufd xmm5,xmm1,192 + por xmm4,xmm7 + cmp eax,4 + jb $L043ctr32_three + pshufd xmm6,xmm1,128 + por xmm5,xmm7 + je $L044ctr32_four + por xmm6,xmm7 + call __aesni_encrypt6 + movups xmm1,XMMWORD PTR [esi] + movups xmm0,XMMWORD PTR 16[esi] + xorps xmm2,xmm1 + movups xmm1,XMMWORD PTR 32[esi] + xorps xmm3,xmm0 + movups xmm0,XMMWORD PTR 48[esi] + xorps xmm4,xmm1 + movups xmm1,XMMWORD PTR 64[esi] + xorps xmm5,xmm0 + movups XMMWORD PTR [edi],xmm2 + xorps xmm6,xmm1 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + movups XMMWORD PTR 64[edi],xmm6 + jmp $L040ctr32_ret +ALIGN 16 +$L037ctr32_one_shortcut: + movups xmm2,XMMWORD PTR [ebx] + mov ecx,DWORD PTR 240[edx] +$L041ctr32_one: + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L045enc1_loop_7: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L045enc1_loop_7 +DB 102,15,56,221,209 + movups xmm6,XMMWORD PTR [esi] + xorps xmm6,xmm2 + movups XMMWORD PTR [edi],xmm6 + jmp $L040ctr32_ret +ALIGN 16 +$L042ctr32_two: + call __aesni_encrypt2 + movups xmm5,XMMWORD PTR [esi] + movups xmm6,XMMWORD PTR 16[esi] + xorps xmm2,xmm5 + xorps xmm3,xmm6 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + jmp $L040ctr32_ret +ALIGN 16 +$L043ctr32_three: + call __aesni_encrypt3 + movups xmm5,XMMWORD PTR [esi] + movups xmm6,XMMWORD PTR 16[esi] + xorps xmm2,xmm5 + movups xmm7,XMMWORD PTR 32[esi] + xorps xmm3,xmm6 + movups XMMWORD PTR [edi],xmm2 + xorps xmm4,xmm7 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + jmp $L040ctr32_ret +ALIGN 16 +$L044ctr32_four: + call __aesni_encrypt4 + movups xmm6,XMMWORD PTR [esi] + movups xmm7,XMMWORD PTR 16[esi] + movups xmm1,XMMWORD PTR 32[esi] + xorps xmm2,xmm6 + movups xmm0,XMMWORD PTR 48[esi] + xorps xmm3,xmm7 + movups XMMWORD PTR [edi],xmm2 + xorps xmm4,xmm1 + movups XMMWORD PTR 16[edi],xmm3 + xorps xmm5,xmm0 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 +$L040ctr32_ret: + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + movdqa XMMWORD PTR 32[esp],xmm0 + pxor xmm5,xmm5 + movdqa XMMWORD PTR 48[esp],xmm0 + pxor xmm6,xmm6 + movdqa XMMWORD PTR 64[esp],xmm0 + pxor xmm7,xmm7 + mov esp,DWORD PTR 80[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +_aesni_ctr32_encrypt_blocks ENDP +ALIGN 16 +_aesni_xts_encrypt PROC PUBLIC +$L_aesni_xts_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edx,DWORD PTR 36[esp] + mov esi,DWORD PTR 40[esp] + mov ecx,DWORD PTR 240[edx] + movups xmm2,XMMWORD PTR [esi] + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L046enc1_loop_8: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L046enc1_loop_8 +DB 102,15,56,221,209 + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + mov ebp,esp + sub esp,120 + mov ecx,DWORD PTR 240[edx] + and esp,-16 + mov DWORD PTR 96[esp],135 + mov DWORD PTR 100[esp],0 + mov DWORD PTR 104[esp],1 + mov DWORD PTR 108[esp],0 + mov DWORD PTR 112[esp],eax + mov DWORD PTR 116[esp],ebp + movdqa xmm1,xmm2 + pxor xmm0,xmm0 + movdqa xmm3,XMMWORD PTR 96[esp] + pcmpgtd xmm0,xmm1 + and eax,-16 + mov ebp,edx + mov ebx,ecx + sub eax,96 + jc $L047xts_enc_short + shl ecx,4 + mov ebx,16 + sub ebx,ecx + lea edx,DWORD PTR 32[ecx*1+edx] + jmp $L048xts_enc_loop6 +ALIGN 16 +$L048xts_enc_loop6: + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa XMMWORD PTR [esp],xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa XMMWORD PTR 16[esp],xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa XMMWORD PTR 32[esp],xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa XMMWORD PTR 48[esp],xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + pshufd xmm7,xmm0,19 + movdqa XMMWORD PTR 64[esp],xmm1 + paddq xmm1,xmm1 + movups xmm0,XMMWORD PTR [ebp] + pand xmm7,xmm3 + movups xmm2,XMMWORD PTR [esi] + pxor xmm7,xmm1 + mov ecx,ebx + movdqu xmm3,XMMWORD PTR 16[esi] + xorps xmm2,xmm0 + movdqu xmm4,XMMWORD PTR 32[esi] + pxor xmm3,xmm0 + movdqu xmm5,XMMWORD PTR 48[esi] + pxor xmm4,xmm0 + movdqu xmm6,XMMWORD PTR 64[esi] + pxor xmm5,xmm0 + movdqu xmm1,XMMWORD PTR 80[esi] + pxor xmm6,xmm0 + lea esi,DWORD PTR 96[esi] + pxor xmm2,XMMWORD PTR [esp] + movdqa XMMWORD PTR 80[esp],xmm7 + pxor xmm7,xmm1 + movups xmm1,XMMWORD PTR 16[ebp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] +DB 102,15,56,220,209 + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,XMMWORD PTR 64[esp] +DB 102,15,56,220,217 + pxor xmm7,xmm0 + movups xmm0,XMMWORD PTR 32[ebp] +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 + call $L_aesni_encrypt6_enter + movdqa xmm1,XMMWORD PTR 80[esp] + pxor xmm0,xmm0 + xorps xmm2,XMMWORD PTR [esp] + pcmpgtd xmm0,xmm1 + xorps xmm3,XMMWORD PTR 16[esp] + movups XMMWORD PTR [edi],xmm2 + xorps xmm4,XMMWORD PTR 32[esp] + movups XMMWORD PTR 16[edi],xmm3 + xorps xmm5,XMMWORD PTR 48[esp] + movups XMMWORD PTR 32[edi],xmm4 + xorps xmm6,XMMWORD PTR 64[esp] + movups XMMWORD PTR 48[edi],xmm5 + xorps xmm7,xmm1 + movups XMMWORD PTR 64[edi],xmm6 + pshufd xmm2,xmm0,19 + movups XMMWORD PTR 80[edi],xmm7 + lea edi,DWORD PTR 96[edi] + movdqa xmm3,XMMWORD PTR 96[esp] + pxor xmm0,xmm0 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + sub eax,96 + jnc $L048xts_enc_loop6 + mov ecx,DWORD PTR 240[ebp] + mov edx,ebp + mov ebx,ecx +$L047xts_enc_short: + add eax,96 + jz $L049xts_enc_done6x + movdqa xmm5,xmm1 + cmp eax,32 + jb $L050xts_enc_one + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + je $L051xts_enc_two + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa xmm6,xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + cmp eax,64 + jb $L052xts_enc_three + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa xmm7,xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + movdqa XMMWORD PTR [esp],xmm5 + movdqa XMMWORD PTR 16[esp],xmm6 + je $L053xts_enc_four + movdqa XMMWORD PTR 32[esp],xmm7 + pshufd xmm7,xmm0,19 + movdqa XMMWORD PTR 48[esp],xmm1 + paddq xmm1,xmm1 + pand xmm7,xmm3 + pxor xmm7,xmm1 + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + pxor xmm2,XMMWORD PTR [esp] + movdqu xmm5,XMMWORD PTR 48[esi] + pxor xmm3,XMMWORD PTR 16[esp] + movdqu xmm6,XMMWORD PTR 64[esi] + pxor xmm4,XMMWORD PTR 32[esp] + lea esi,DWORD PTR 80[esi] + pxor xmm5,XMMWORD PTR 48[esp] + movdqa XMMWORD PTR 64[esp],xmm7 + pxor xmm6,xmm7 + call __aesni_encrypt6 + movaps xmm1,XMMWORD PTR 64[esp] + xorps xmm2,XMMWORD PTR [esp] + xorps xmm3,XMMWORD PTR 16[esp] + xorps xmm4,XMMWORD PTR 32[esp] + movups XMMWORD PTR [edi],xmm2 + xorps xmm5,XMMWORD PTR 48[esp] + movups XMMWORD PTR 16[edi],xmm3 + xorps xmm6,xmm1 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + movups XMMWORD PTR 64[edi],xmm6 + lea edi,DWORD PTR 80[edi] + jmp $L054xts_enc_done +ALIGN 16 +$L050xts_enc_one: + movups xmm2,XMMWORD PTR [esi] + lea esi,DWORD PTR 16[esi] + xorps xmm2,xmm5 + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L055enc1_loop_9: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L055enc1_loop_9 +DB 102,15,56,221,209 + xorps xmm2,xmm5 + movups XMMWORD PTR [edi],xmm2 + lea edi,DWORD PTR 16[edi] + movdqa xmm1,xmm5 + jmp $L054xts_enc_done +ALIGN 16 +$L051xts_enc_two: + movaps xmm6,xmm1 + movups xmm2,XMMWORD PTR [esi] + movups xmm3,XMMWORD PTR 16[esi] + lea esi,DWORD PTR 32[esi] + xorps xmm2,xmm5 + xorps xmm3,xmm6 + call __aesni_encrypt2 + xorps xmm2,xmm5 + xorps xmm3,xmm6 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + lea edi,DWORD PTR 32[edi] + movdqa xmm1,xmm6 + jmp $L054xts_enc_done +ALIGN 16 +$L052xts_enc_three: + movaps xmm7,xmm1 + movups xmm2,XMMWORD PTR [esi] + movups xmm3,XMMWORD PTR 16[esi] + movups xmm4,XMMWORD PTR 32[esi] + lea esi,DWORD PTR 48[esi] + xorps xmm2,xmm5 + xorps xmm3,xmm6 + xorps xmm4,xmm7 + call __aesni_encrypt3 + xorps xmm2,xmm5 + xorps xmm3,xmm6 + xorps xmm4,xmm7 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + lea edi,DWORD PTR 48[edi] + movdqa xmm1,xmm7 + jmp $L054xts_enc_done +ALIGN 16 +$L053xts_enc_four: + movaps xmm6,xmm1 + movups xmm2,XMMWORD PTR [esi] + movups xmm3,XMMWORD PTR 16[esi] + movups xmm4,XMMWORD PTR 32[esi] + xorps xmm2,XMMWORD PTR [esp] + movups xmm5,XMMWORD PTR 48[esi] + lea esi,DWORD PTR 64[esi] + xorps xmm3,XMMWORD PTR 16[esp] + xorps xmm4,xmm7 + xorps xmm5,xmm6 + call __aesni_encrypt4 + xorps xmm2,XMMWORD PTR [esp] + xorps xmm3,XMMWORD PTR 16[esp] + xorps xmm4,xmm7 + movups XMMWORD PTR [edi],xmm2 + xorps xmm5,xmm6 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + lea edi,DWORD PTR 64[edi] + movdqa xmm1,xmm6 + jmp $L054xts_enc_done +ALIGN 16 +$L049xts_enc_done6x: + mov eax,DWORD PTR 112[esp] + and eax,15 + jz $L056xts_enc_ret + movdqa xmm5,xmm1 + mov DWORD PTR 112[esp],eax + jmp $L057xts_enc_steal +ALIGN 16 +$L054xts_enc_done: + mov eax,DWORD PTR 112[esp] + pxor xmm0,xmm0 + and eax,15 + jz $L056xts_enc_ret + pcmpgtd xmm0,xmm1 + mov DWORD PTR 112[esp],eax + pshufd xmm5,xmm0,19 + paddq xmm1,xmm1 + pand xmm5,XMMWORD PTR 96[esp] + pxor xmm5,xmm1 +$L057xts_enc_steal: + movzx ecx,BYTE PTR [esi] + movzx edx,BYTE PTR [edi-16] + lea esi,DWORD PTR 1[esi] + mov BYTE PTR [edi-16],cl + mov BYTE PTR [edi],dl + lea edi,DWORD PTR 1[edi] + sub eax,1 + jnz $L057xts_enc_steal + sub edi,DWORD PTR 112[esp] + mov edx,ebp + mov ecx,ebx + movups xmm2,XMMWORD PTR [edi-16] + xorps xmm2,xmm5 + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L058enc1_loop_10: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L058enc1_loop_10 +DB 102,15,56,221,209 + xorps xmm2,xmm5 + movups XMMWORD PTR [edi-16],xmm2 +$L056xts_enc_ret: + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + movdqa XMMWORD PTR [esp],xmm0 + pxor xmm3,xmm3 + movdqa XMMWORD PTR 16[esp],xmm0 + pxor xmm4,xmm4 + movdqa XMMWORD PTR 32[esp],xmm0 + pxor xmm5,xmm5 + movdqa XMMWORD PTR 48[esp],xmm0 + pxor xmm6,xmm6 + movdqa XMMWORD PTR 64[esp],xmm0 + pxor xmm7,xmm7 + movdqa XMMWORD PTR 80[esp],xmm0 + mov esp,DWORD PTR 116[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +_aesni_xts_encrypt ENDP +ALIGN 16 +_aesni_xts_decrypt PROC PUBLIC +$L_aesni_xts_decrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edx,DWORD PTR 36[esp] + mov esi,DWORD PTR 40[esp] + mov ecx,DWORD PTR 240[edx] + movups xmm2,XMMWORD PTR [esi] + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L059enc1_loop_11: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L059enc1_loop_11 +DB 102,15,56,221,209 + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + mov ebp,esp + sub esp,120 + and esp,-16 + xor ebx,ebx + test eax,15 + setnz bl + shl ebx,4 + sub eax,ebx + mov DWORD PTR 96[esp],135 + mov DWORD PTR 100[esp],0 + mov DWORD PTR 104[esp],1 + mov DWORD PTR 108[esp],0 + mov DWORD PTR 112[esp],eax + mov DWORD PTR 116[esp],ebp + mov ecx,DWORD PTR 240[edx] + mov ebp,edx + mov ebx,ecx + movdqa xmm1,xmm2 + pxor xmm0,xmm0 + movdqa xmm3,XMMWORD PTR 96[esp] + pcmpgtd xmm0,xmm1 + and eax,-16 + sub eax,96 + jc $L060xts_dec_short + shl ecx,4 + mov ebx,16 + sub ebx,ecx + lea edx,DWORD PTR 32[ecx*1+edx] + jmp $L061xts_dec_loop6 +ALIGN 16 +$L061xts_dec_loop6: + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa XMMWORD PTR [esp],xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa XMMWORD PTR 16[esp],xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa XMMWORD PTR 32[esp],xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa XMMWORD PTR 48[esp],xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + pshufd xmm7,xmm0,19 + movdqa XMMWORD PTR 64[esp],xmm1 + paddq xmm1,xmm1 + movups xmm0,XMMWORD PTR [ebp] + pand xmm7,xmm3 + movups xmm2,XMMWORD PTR [esi] + pxor xmm7,xmm1 + mov ecx,ebx + movdqu xmm3,XMMWORD PTR 16[esi] + xorps xmm2,xmm0 + movdqu xmm4,XMMWORD PTR 32[esi] + pxor xmm3,xmm0 + movdqu xmm5,XMMWORD PTR 48[esi] + pxor xmm4,xmm0 + movdqu xmm6,XMMWORD PTR 64[esi] + pxor xmm5,xmm0 + movdqu xmm1,XMMWORD PTR 80[esi] + pxor xmm6,xmm0 + lea esi,DWORD PTR 96[esi] + pxor xmm2,XMMWORD PTR [esp] + movdqa XMMWORD PTR 80[esp],xmm7 + pxor xmm7,xmm1 + movups xmm1,XMMWORD PTR 16[ebp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] +DB 102,15,56,222,209 + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,XMMWORD PTR 64[esp] +DB 102,15,56,222,217 + pxor xmm7,xmm0 + movups xmm0,XMMWORD PTR 32[ebp] +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 + call $L_aesni_decrypt6_enter + movdqa xmm1,XMMWORD PTR 80[esp] + pxor xmm0,xmm0 + xorps xmm2,XMMWORD PTR [esp] + pcmpgtd xmm0,xmm1 + xorps xmm3,XMMWORD PTR 16[esp] + movups XMMWORD PTR [edi],xmm2 + xorps xmm4,XMMWORD PTR 32[esp] + movups XMMWORD PTR 16[edi],xmm3 + xorps xmm5,XMMWORD PTR 48[esp] + movups XMMWORD PTR 32[edi],xmm4 + xorps xmm6,XMMWORD PTR 64[esp] + movups XMMWORD PTR 48[edi],xmm5 + xorps xmm7,xmm1 + movups XMMWORD PTR 64[edi],xmm6 + pshufd xmm2,xmm0,19 + movups XMMWORD PTR 80[edi],xmm7 + lea edi,DWORD PTR 96[edi] + movdqa xmm3,XMMWORD PTR 96[esp] + pxor xmm0,xmm0 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + sub eax,96 + jnc $L061xts_dec_loop6 + mov ecx,DWORD PTR 240[ebp] + mov edx,ebp + mov ebx,ecx +$L060xts_dec_short: + add eax,96 + jz $L062xts_dec_done6x + movdqa xmm5,xmm1 + cmp eax,32 + jb $L063xts_dec_one + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + je $L064xts_dec_two + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa xmm6,xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + cmp eax,64 + jb $L065xts_dec_three + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa xmm7,xmm1 + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 + movdqa XMMWORD PTR [esp],xmm5 + movdqa XMMWORD PTR 16[esp],xmm6 + je $L066xts_dec_four + movdqa XMMWORD PTR 32[esp],xmm7 + pshufd xmm7,xmm0,19 + movdqa XMMWORD PTR 48[esp],xmm1 + paddq xmm1,xmm1 + pand xmm7,xmm3 + pxor xmm7,xmm1 + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + pxor xmm2,XMMWORD PTR [esp] + movdqu xmm5,XMMWORD PTR 48[esi] + pxor xmm3,XMMWORD PTR 16[esp] + movdqu xmm6,XMMWORD PTR 64[esi] + pxor xmm4,XMMWORD PTR 32[esp] + lea esi,DWORD PTR 80[esi] + pxor xmm5,XMMWORD PTR 48[esp] + movdqa XMMWORD PTR 64[esp],xmm7 + pxor xmm6,xmm7 + call __aesni_decrypt6 + movaps xmm1,XMMWORD PTR 64[esp] + xorps xmm2,XMMWORD PTR [esp] + xorps xmm3,XMMWORD PTR 16[esp] + xorps xmm4,XMMWORD PTR 32[esp] + movups XMMWORD PTR [edi],xmm2 + xorps xmm5,XMMWORD PTR 48[esp] + movups XMMWORD PTR 16[edi],xmm3 + xorps xmm6,xmm1 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + movups XMMWORD PTR 64[edi],xmm6 + lea edi,DWORD PTR 80[edi] + jmp $L067xts_dec_done +ALIGN 16 +$L063xts_dec_one: + movups xmm2,XMMWORD PTR [esi] + lea esi,DWORD PTR 16[esi] + xorps xmm2,xmm5 + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L068dec1_loop_12: +DB 102,15,56,222,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L068dec1_loop_12 +DB 102,15,56,223,209 + xorps xmm2,xmm5 + movups XMMWORD PTR [edi],xmm2 + lea edi,DWORD PTR 16[edi] + movdqa xmm1,xmm5 + jmp $L067xts_dec_done +ALIGN 16 +$L064xts_dec_two: + movaps xmm6,xmm1 + movups xmm2,XMMWORD PTR [esi] + movups xmm3,XMMWORD PTR 16[esi] + lea esi,DWORD PTR 32[esi] + xorps xmm2,xmm5 + xorps xmm3,xmm6 + call __aesni_decrypt2 + xorps xmm2,xmm5 + xorps xmm3,xmm6 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + lea edi,DWORD PTR 32[edi] + movdqa xmm1,xmm6 + jmp $L067xts_dec_done +ALIGN 16 +$L065xts_dec_three: + movaps xmm7,xmm1 + movups xmm2,XMMWORD PTR [esi] + movups xmm3,XMMWORD PTR 16[esi] + movups xmm4,XMMWORD PTR 32[esi] + lea esi,DWORD PTR 48[esi] + xorps xmm2,xmm5 + xorps xmm3,xmm6 + xorps xmm4,xmm7 + call __aesni_decrypt3 + xorps xmm2,xmm5 + xorps xmm3,xmm6 + xorps xmm4,xmm7 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + lea edi,DWORD PTR 48[edi] + movdqa xmm1,xmm7 + jmp $L067xts_dec_done +ALIGN 16 +$L066xts_dec_four: + movaps xmm6,xmm1 + movups xmm2,XMMWORD PTR [esi] + movups xmm3,XMMWORD PTR 16[esi] + movups xmm4,XMMWORD PTR 32[esi] + xorps xmm2,XMMWORD PTR [esp] + movups xmm5,XMMWORD PTR 48[esi] + lea esi,DWORD PTR 64[esi] + xorps xmm3,XMMWORD PTR 16[esp] + xorps xmm4,xmm7 + xorps xmm5,xmm6 + call __aesni_decrypt4 + xorps xmm2,XMMWORD PTR [esp] + xorps xmm3,XMMWORD PTR 16[esp] + xorps xmm4,xmm7 + movups XMMWORD PTR [edi],xmm2 + xorps xmm5,xmm6 + movups XMMWORD PTR 16[edi],xmm3 + movups XMMWORD PTR 32[edi],xmm4 + movups XMMWORD PTR 48[edi],xmm5 + lea edi,DWORD PTR 64[edi] + movdqa xmm1,xmm6 + jmp $L067xts_dec_done +ALIGN 16 +$L062xts_dec_done6x: + mov eax,DWORD PTR 112[esp] + and eax,15 + jz $L069xts_dec_ret + mov DWORD PTR 112[esp],eax + jmp $L070xts_dec_only_one_more +ALIGN 16 +$L067xts_dec_done: + mov eax,DWORD PTR 112[esp] + pxor xmm0,xmm0 + and eax,15 + jz $L069xts_dec_ret + pcmpgtd xmm0,xmm1 + mov DWORD PTR 112[esp],eax + pshufd xmm2,xmm0,19 + pxor xmm0,xmm0 + movdqa xmm3,XMMWORD PTR 96[esp] + paddq xmm1,xmm1 + pand xmm2,xmm3 + pcmpgtd xmm0,xmm1 + pxor xmm1,xmm2 +$L070xts_dec_only_one_more: + pshufd xmm5,xmm0,19 + movdqa xmm6,xmm1 + paddq xmm1,xmm1 + pand xmm5,xmm3 + pxor xmm5,xmm1 + mov edx,ebp + mov ecx,ebx + movups xmm2,XMMWORD PTR [esi] + xorps xmm2,xmm5 + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L071dec1_loop_13: +DB 102,15,56,222,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L071dec1_loop_13 +DB 102,15,56,223,209 + xorps xmm2,xmm5 + movups XMMWORD PTR [edi],xmm2 +$L072xts_dec_steal: + movzx ecx,BYTE PTR 16[esi] + movzx edx,BYTE PTR [edi] + lea esi,DWORD PTR 1[esi] + mov BYTE PTR [edi],cl + mov BYTE PTR 16[edi],dl + lea edi,DWORD PTR 1[edi] + sub eax,1 + jnz $L072xts_dec_steal + sub edi,DWORD PTR 112[esp] + mov edx,ebp + mov ecx,ebx + movups xmm2,XMMWORD PTR [edi] + xorps xmm2,xmm6 + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L073dec1_loop_14: +DB 102,15,56,222,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L073dec1_loop_14 +DB 102,15,56,223,209 + xorps xmm2,xmm6 + movups XMMWORD PTR [edi],xmm2 +$L069xts_dec_ret: + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + movdqa XMMWORD PTR [esp],xmm0 + pxor xmm3,xmm3 + movdqa XMMWORD PTR 16[esp],xmm0 + pxor xmm4,xmm4 + movdqa XMMWORD PTR 32[esp],xmm0 + pxor xmm5,xmm5 + movdqa XMMWORD PTR 48[esp],xmm0 + pxor xmm6,xmm6 + movdqa XMMWORD PTR 64[esp],xmm0 + pxor xmm7,xmm7 + movdqa XMMWORD PTR 80[esp],xmm0 + mov esp,DWORD PTR 116[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +_aesni_xts_decrypt ENDP +ALIGN 16 +_aesni_ocb_encrypt PROC PUBLIC +$L_aesni_ocb_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov ecx,DWORD PTR 40[esp] + mov ebx,DWORD PTR 48[esp] + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + movdqu xmm0,XMMWORD PTR [ecx] + mov ebp,DWORD PTR 36[esp] + movdqu xmm1,XMMWORD PTR [ebx] + mov ebx,DWORD PTR 44[esp] + mov ecx,esp + sub esp,132 + and esp,-16 + sub edi,esi + shl eax,4 + lea eax,DWORD PTR [eax*1+esi-96] + mov DWORD PTR 120[esp],edi + mov DWORD PTR 124[esp],eax + mov DWORD PTR 128[esp],ecx + mov ecx,DWORD PTR 240[edx] + test ebp,1 + jnz $L074odd + bsf eax,ebp + add ebp,1 + shl eax,4 + movdqu xmm7,XMMWORD PTR [eax*1+ebx] + mov eax,edx + movdqu xmm2,XMMWORD PTR [esi] + lea esi,DWORD PTR 16[esi] + pxor xmm7,xmm0 + pxor xmm1,xmm2 + pxor xmm2,xmm7 + movdqa xmm6,xmm1 + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L075enc1_loop_15: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L075enc1_loop_15 +DB 102,15,56,221,209 + xorps xmm2,xmm7 + movdqa xmm0,xmm7 + movdqa xmm1,xmm6 + movups XMMWORD PTR [esi*1+edi-16],xmm2 + mov ecx,DWORD PTR 240[eax] + mov edx,eax + mov eax,DWORD PTR 124[esp] +$L074odd: + shl ecx,4 + mov edi,16 + sub edi,ecx + mov DWORD PTR 112[esp],edx + lea edx,DWORD PTR 32[ecx*1+edx] + mov DWORD PTR 116[esp],edi + cmp esi,eax + ja $L076short + jmp $L077grandloop +ALIGN 32 +$L077grandloop: + lea ecx,DWORD PTR 1[ebp] + lea eax,DWORD PTR 3[ebp] + lea edi,DWORD PTR 5[ebp] + add ebp,6 + bsf ecx,ecx + bsf eax,eax + bsf edi,edi + shl ecx,4 + shl eax,4 + shl edi,4 + movdqu xmm2,XMMWORD PTR [ebx] + movdqu xmm3,XMMWORD PTR [ecx*1+ebx] + mov ecx,DWORD PTR 116[esp] + movdqa xmm4,xmm2 + movdqu xmm5,XMMWORD PTR [eax*1+ebx] + movdqa xmm6,xmm2 + movdqu xmm7,XMMWORD PTR [edi*1+ebx] + pxor xmm2,xmm0 + pxor xmm3,xmm2 + movdqa XMMWORD PTR [esp],xmm2 + pxor xmm4,xmm3 + movdqa XMMWORD PTR 16[esp],xmm3 + pxor xmm5,xmm4 + movdqa XMMWORD PTR 32[esp],xmm4 + pxor xmm6,xmm5 + movdqa XMMWORD PTR 48[esp],xmm5 + pxor xmm7,xmm6 + movdqa XMMWORD PTR 64[esp],xmm6 + movdqa XMMWORD PTR 80[esp],xmm7 + movups xmm0,XMMWORD PTR [ecx*1+edx-48] + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + movdqu xmm5,XMMWORD PTR 48[esi] + movdqu xmm6,XMMWORD PTR 64[esi] + movdqu xmm7,XMMWORD PTR 80[esi] + lea esi,DWORD PTR 96[esi] + pxor xmm1,xmm2 + pxor xmm2,xmm0 + pxor xmm1,xmm3 + pxor xmm3,xmm0 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + pxor xmm1,xmm5 + pxor xmm5,xmm0 + pxor xmm1,xmm6 + pxor xmm6,xmm0 + pxor xmm1,xmm7 + pxor xmm7,xmm0 + movdqa XMMWORD PTR 96[esp],xmm1 + movups xmm1,XMMWORD PTR [ecx*1+edx-32] + pxor xmm2,XMMWORD PTR [esp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,XMMWORD PTR 64[esp] + pxor xmm7,XMMWORD PTR 80[esp] + movups xmm0,XMMWORD PTR [ecx*1+edx-16] +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 + mov edi,DWORD PTR 120[esp] + mov eax,DWORD PTR 124[esp] + call $L_aesni_encrypt6_enter + movdqa xmm0,XMMWORD PTR 80[esp] + pxor xmm2,XMMWORD PTR [esp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,XMMWORD PTR 64[esp] + pxor xmm7,xmm0 + movdqa xmm1,XMMWORD PTR 96[esp] + movdqu XMMWORD PTR [esi*1+edi-96],xmm2 + movdqu XMMWORD PTR [esi*1+edi-80],xmm3 + movdqu XMMWORD PTR [esi*1+edi-64],xmm4 + movdqu XMMWORD PTR [esi*1+edi-48],xmm5 + movdqu XMMWORD PTR [esi*1+edi-32],xmm6 + movdqu XMMWORD PTR [esi*1+edi-16],xmm7 + cmp esi,eax + jb $L077grandloop +$L076short: + add eax,96 + sub eax,esi + jz $L078done + cmp eax,32 + jb $L079one + je $L080two + cmp eax,64 + jb $L081three + je $L082four + lea ecx,DWORD PTR 1[ebp] + lea eax,DWORD PTR 3[ebp] + bsf ecx,ecx + bsf eax,eax + shl ecx,4 + shl eax,4 + movdqu xmm2,XMMWORD PTR [ebx] + movdqu xmm3,XMMWORD PTR [ecx*1+ebx] + mov ecx,DWORD PTR 116[esp] + movdqa xmm4,xmm2 + movdqu xmm5,XMMWORD PTR [eax*1+ebx] + movdqa xmm6,xmm2 + pxor xmm2,xmm0 + pxor xmm3,xmm2 + movdqa XMMWORD PTR [esp],xmm2 + pxor xmm4,xmm3 + movdqa XMMWORD PTR 16[esp],xmm3 + pxor xmm5,xmm4 + movdqa XMMWORD PTR 32[esp],xmm4 + pxor xmm6,xmm5 + movdqa XMMWORD PTR 48[esp],xmm5 + pxor xmm7,xmm6 + movdqa XMMWORD PTR 64[esp],xmm6 + movups xmm0,XMMWORD PTR [ecx*1+edx-48] + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + movdqu xmm5,XMMWORD PTR 48[esi] + movdqu xmm6,XMMWORD PTR 64[esi] + pxor xmm7,xmm7 + pxor xmm1,xmm2 + pxor xmm2,xmm0 + pxor xmm1,xmm3 + pxor xmm3,xmm0 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + pxor xmm1,xmm5 + pxor xmm5,xmm0 + pxor xmm1,xmm6 + pxor xmm6,xmm0 + movdqa XMMWORD PTR 96[esp],xmm1 + movups xmm1,XMMWORD PTR [ecx*1+edx-32] + pxor xmm2,XMMWORD PTR [esp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,XMMWORD PTR 64[esp] + movups xmm0,XMMWORD PTR [ecx*1+edx-16] +DB 102,15,56,220,209 +DB 102,15,56,220,217 +DB 102,15,56,220,225 +DB 102,15,56,220,233 +DB 102,15,56,220,241 +DB 102,15,56,220,249 + mov edi,DWORD PTR 120[esp] + call $L_aesni_encrypt6_enter + movdqa xmm0,XMMWORD PTR 64[esp] + pxor xmm2,XMMWORD PTR [esp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,xmm0 + movdqa xmm1,XMMWORD PTR 96[esp] + movdqu XMMWORD PTR [esi*1+edi],xmm2 + movdqu XMMWORD PTR 16[esi*1+edi],xmm3 + movdqu XMMWORD PTR 32[esi*1+edi],xmm4 + movdqu XMMWORD PTR 48[esi*1+edi],xmm5 + movdqu XMMWORD PTR 64[esi*1+edi],xmm6 + jmp $L078done +ALIGN 16 +$L079one: + movdqu xmm7,XMMWORD PTR [ebx] + mov edx,DWORD PTR 112[esp] + movdqu xmm2,XMMWORD PTR [esi] + mov ecx,DWORD PTR 240[edx] + pxor xmm7,xmm0 + pxor xmm1,xmm2 + pxor xmm2,xmm7 + movdqa xmm6,xmm1 + mov edi,DWORD PTR 120[esp] + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L083enc1_loop_16: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L083enc1_loop_16 +DB 102,15,56,221,209 + xorps xmm2,xmm7 + movdqa xmm0,xmm7 + movdqa xmm1,xmm6 + movups XMMWORD PTR [esi*1+edi],xmm2 + jmp $L078done +ALIGN 16 +$L080two: + lea ecx,DWORD PTR 1[ebp] + mov edx,DWORD PTR 112[esp] + bsf ecx,ecx + shl ecx,4 + movdqu xmm6,XMMWORD PTR [ebx] + movdqu xmm7,XMMWORD PTR [ecx*1+ebx] + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + mov ecx,DWORD PTR 240[edx] + pxor xmm6,xmm0 + pxor xmm7,xmm6 + pxor xmm1,xmm2 + pxor xmm2,xmm6 + pxor xmm1,xmm3 + pxor xmm3,xmm7 + movdqa xmm5,xmm1 + mov edi,DWORD PTR 120[esp] + call __aesni_encrypt2 + xorps xmm2,xmm6 + xorps xmm3,xmm7 + movdqa xmm0,xmm7 + movdqa xmm1,xmm5 + movups XMMWORD PTR [esi*1+edi],xmm2 + movups XMMWORD PTR 16[esi*1+edi],xmm3 + jmp $L078done +ALIGN 16 +$L081three: + lea ecx,DWORD PTR 1[ebp] + mov edx,DWORD PTR 112[esp] + bsf ecx,ecx + shl ecx,4 + movdqu xmm5,XMMWORD PTR [ebx] + movdqu xmm6,XMMWORD PTR [ecx*1+ebx] + movdqa xmm7,xmm5 + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + mov ecx,DWORD PTR 240[edx] + pxor xmm5,xmm0 + pxor xmm6,xmm5 + pxor xmm7,xmm6 + pxor xmm1,xmm2 + pxor xmm2,xmm5 + pxor xmm1,xmm3 + pxor xmm3,xmm6 + pxor xmm1,xmm4 + pxor xmm4,xmm7 + movdqa XMMWORD PTR 96[esp],xmm1 + mov edi,DWORD PTR 120[esp] + call __aesni_encrypt3 + xorps xmm2,xmm5 + xorps xmm3,xmm6 + xorps xmm4,xmm7 + movdqa xmm0,xmm7 + movdqa xmm1,XMMWORD PTR 96[esp] + movups XMMWORD PTR [esi*1+edi],xmm2 + movups XMMWORD PTR 16[esi*1+edi],xmm3 + movups XMMWORD PTR 32[esi*1+edi],xmm4 + jmp $L078done +ALIGN 16 +$L082four: + lea ecx,DWORD PTR 1[ebp] + lea eax,DWORD PTR 3[ebp] + bsf ecx,ecx + bsf eax,eax + mov edx,DWORD PTR 112[esp] + shl ecx,4 + shl eax,4 + movdqu xmm4,XMMWORD PTR [ebx] + movdqu xmm5,XMMWORD PTR [ecx*1+ebx] + movdqa xmm6,xmm4 + movdqu xmm7,XMMWORD PTR [eax*1+ebx] + pxor xmm4,xmm0 + movdqu xmm2,XMMWORD PTR [esi] + pxor xmm5,xmm4 + movdqu xmm3,XMMWORD PTR 16[esi] + pxor xmm6,xmm5 + movdqa XMMWORD PTR [esp],xmm4 + pxor xmm7,xmm6 + movdqa XMMWORD PTR 16[esp],xmm5 + movdqu xmm4,XMMWORD PTR 32[esi] + movdqu xmm5,XMMWORD PTR 48[esi] + mov ecx,DWORD PTR 240[edx] + pxor xmm1,xmm2 + pxor xmm2,XMMWORD PTR [esp] + pxor xmm1,xmm3 + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm1,xmm4 + pxor xmm4,xmm6 + pxor xmm1,xmm5 + pxor xmm5,xmm7 + movdqa XMMWORD PTR 96[esp],xmm1 + mov edi,DWORD PTR 120[esp] + call __aesni_encrypt4 + xorps xmm2,XMMWORD PTR [esp] + xorps xmm3,XMMWORD PTR 16[esp] + xorps xmm4,xmm6 + movups XMMWORD PTR [esi*1+edi],xmm2 + xorps xmm5,xmm7 + movups XMMWORD PTR 16[esi*1+edi],xmm3 + movdqa xmm0,xmm7 + movups XMMWORD PTR 32[esi*1+edi],xmm4 + movdqa xmm1,XMMWORD PTR 96[esp] + movups XMMWORD PTR 48[esi*1+edi],xmm5 +$L078done: + mov edx,DWORD PTR 128[esp] + pxor xmm2,xmm2 + pxor xmm3,xmm3 + movdqa XMMWORD PTR [esp],xmm2 + pxor xmm4,xmm4 + movdqa XMMWORD PTR 16[esp],xmm2 + pxor xmm5,xmm5 + movdqa XMMWORD PTR 32[esp],xmm2 + pxor xmm6,xmm6 + movdqa XMMWORD PTR 48[esp],xmm2 + pxor xmm7,xmm7 + movdqa XMMWORD PTR 64[esp],xmm2 + movdqa XMMWORD PTR 80[esp],xmm2 + movdqa XMMWORD PTR 96[esp],xmm2 + lea esp,DWORD PTR [edx] + mov ecx,DWORD PTR 40[esp] + mov ebx,DWORD PTR 48[esp] + movdqu XMMWORD PTR [ecx],xmm0 + pxor xmm0,xmm0 + movdqu XMMWORD PTR [ebx],xmm1 + pxor xmm1,xmm1 + pop edi + pop esi + pop ebx + pop ebp + ret +_aesni_ocb_encrypt ENDP +ALIGN 16 +_aesni_ocb_decrypt PROC PUBLIC +$L_aesni_ocb_decrypt_begin:: + push ebp + push ebx + push esi + push edi + mov ecx,DWORD PTR 40[esp] + mov ebx,DWORD PTR 48[esp] + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + movdqu xmm0,XMMWORD PTR [ecx] + mov ebp,DWORD PTR 36[esp] + movdqu xmm1,XMMWORD PTR [ebx] + mov ebx,DWORD PTR 44[esp] + mov ecx,esp + sub esp,132 + and esp,-16 + sub edi,esi + shl eax,4 + lea eax,DWORD PTR [eax*1+esi-96] + mov DWORD PTR 120[esp],edi + mov DWORD PTR 124[esp],eax + mov DWORD PTR 128[esp],ecx + mov ecx,DWORD PTR 240[edx] + test ebp,1 + jnz $L084odd + bsf eax,ebp + add ebp,1 + shl eax,4 + movdqu xmm7,XMMWORD PTR [eax*1+ebx] + mov eax,edx + movdqu xmm2,XMMWORD PTR [esi] + lea esi,DWORD PTR 16[esi] + pxor xmm7,xmm0 + pxor xmm2,xmm7 + movdqa xmm6,xmm1 + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L085dec1_loop_17: +DB 102,15,56,222,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L085dec1_loop_17 +DB 102,15,56,223,209 + xorps xmm2,xmm7 + movaps xmm1,xmm6 + movdqa xmm0,xmm7 + xorps xmm1,xmm2 + movups XMMWORD PTR [esi*1+edi-16],xmm2 + mov ecx,DWORD PTR 240[eax] + mov edx,eax + mov eax,DWORD PTR 124[esp] +$L084odd: + shl ecx,4 + mov edi,16 + sub edi,ecx + mov DWORD PTR 112[esp],edx + lea edx,DWORD PTR 32[ecx*1+edx] + mov DWORD PTR 116[esp],edi + cmp esi,eax + ja $L086short + jmp $L087grandloop +ALIGN 32 +$L087grandloop: + lea ecx,DWORD PTR 1[ebp] + lea eax,DWORD PTR 3[ebp] + lea edi,DWORD PTR 5[ebp] + add ebp,6 + bsf ecx,ecx + bsf eax,eax + bsf edi,edi + shl ecx,4 + shl eax,4 + shl edi,4 + movdqu xmm2,XMMWORD PTR [ebx] + movdqu xmm3,XMMWORD PTR [ecx*1+ebx] + mov ecx,DWORD PTR 116[esp] + movdqa xmm4,xmm2 + movdqu xmm5,XMMWORD PTR [eax*1+ebx] + movdqa xmm6,xmm2 + movdqu xmm7,XMMWORD PTR [edi*1+ebx] + pxor xmm2,xmm0 + pxor xmm3,xmm2 + movdqa XMMWORD PTR [esp],xmm2 + pxor xmm4,xmm3 + movdqa XMMWORD PTR 16[esp],xmm3 + pxor xmm5,xmm4 + movdqa XMMWORD PTR 32[esp],xmm4 + pxor xmm6,xmm5 + movdqa XMMWORD PTR 48[esp],xmm5 + pxor xmm7,xmm6 + movdqa XMMWORD PTR 64[esp],xmm6 + movdqa XMMWORD PTR 80[esp],xmm7 + movups xmm0,XMMWORD PTR [ecx*1+edx-48] + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + movdqu xmm5,XMMWORD PTR 48[esi] + movdqu xmm6,XMMWORD PTR 64[esi] + movdqu xmm7,XMMWORD PTR 80[esi] + lea esi,DWORD PTR 96[esi] + movdqa XMMWORD PTR 96[esp],xmm1 + pxor xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 + pxor xmm5,xmm0 + pxor xmm6,xmm0 + pxor xmm7,xmm0 + movups xmm1,XMMWORD PTR [ecx*1+edx-32] + pxor xmm2,XMMWORD PTR [esp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,XMMWORD PTR 64[esp] + pxor xmm7,XMMWORD PTR 80[esp] + movups xmm0,XMMWORD PTR [ecx*1+edx-16] +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 + mov edi,DWORD PTR 120[esp] + mov eax,DWORD PTR 124[esp] + call $L_aesni_decrypt6_enter + movdqa xmm0,XMMWORD PTR 80[esp] + pxor xmm2,XMMWORD PTR [esp] + movdqa xmm1,XMMWORD PTR 96[esp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,XMMWORD PTR 64[esp] + pxor xmm7,xmm0 + pxor xmm1,xmm2 + movdqu XMMWORD PTR [esi*1+edi-96],xmm2 + pxor xmm1,xmm3 + movdqu XMMWORD PTR [esi*1+edi-80],xmm3 + pxor xmm1,xmm4 + movdqu XMMWORD PTR [esi*1+edi-64],xmm4 + pxor xmm1,xmm5 + movdqu XMMWORD PTR [esi*1+edi-48],xmm5 + pxor xmm1,xmm6 + movdqu XMMWORD PTR [esi*1+edi-32],xmm6 + pxor xmm1,xmm7 + movdqu XMMWORD PTR [esi*1+edi-16],xmm7 + cmp esi,eax + jb $L087grandloop +$L086short: + add eax,96 + sub eax,esi + jz $L088done + cmp eax,32 + jb $L089one + je $L090two + cmp eax,64 + jb $L091three + je $L092four + lea ecx,DWORD PTR 1[ebp] + lea eax,DWORD PTR 3[ebp] + bsf ecx,ecx + bsf eax,eax + shl ecx,4 + shl eax,4 + movdqu xmm2,XMMWORD PTR [ebx] + movdqu xmm3,XMMWORD PTR [ecx*1+ebx] + mov ecx,DWORD PTR 116[esp] + movdqa xmm4,xmm2 + movdqu xmm5,XMMWORD PTR [eax*1+ebx] + movdqa xmm6,xmm2 + pxor xmm2,xmm0 + pxor xmm3,xmm2 + movdqa XMMWORD PTR [esp],xmm2 + pxor xmm4,xmm3 + movdqa XMMWORD PTR 16[esp],xmm3 + pxor xmm5,xmm4 + movdqa XMMWORD PTR 32[esp],xmm4 + pxor xmm6,xmm5 + movdqa XMMWORD PTR 48[esp],xmm5 + pxor xmm7,xmm6 + movdqa XMMWORD PTR 64[esp],xmm6 + movups xmm0,XMMWORD PTR [ecx*1+edx-48] + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + movdqu xmm5,XMMWORD PTR 48[esi] + movdqu xmm6,XMMWORD PTR 64[esi] + pxor xmm7,xmm7 + movdqa XMMWORD PTR 96[esp],xmm1 + pxor xmm2,xmm0 + pxor xmm3,xmm0 + pxor xmm4,xmm0 + pxor xmm5,xmm0 + pxor xmm6,xmm0 + movups xmm1,XMMWORD PTR [ecx*1+edx-32] + pxor xmm2,XMMWORD PTR [esp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,XMMWORD PTR 64[esp] + movups xmm0,XMMWORD PTR [ecx*1+edx-16] +DB 102,15,56,222,209 +DB 102,15,56,222,217 +DB 102,15,56,222,225 +DB 102,15,56,222,233 +DB 102,15,56,222,241 +DB 102,15,56,222,249 + mov edi,DWORD PTR 120[esp] + call $L_aesni_decrypt6_enter + movdqa xmm0,XMMWORD PTR 64[esp] + pxor xmm2,XMMWORD PTR [esp] + movdqa xmm1,XMMWORD PTR 96[esp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,XMMWORD PTR 32[esp] + pxor xmm5,XMMWORD PTR 48[esp] + pxor xmm6,xmm0 + pxor xmm1,xmm2 + movdqu XMMWORD PTR [esi*1+edi],xmm2 + pxor xmm1,xmm3 + movdqu XMMWORD PTR 16[esi*1+edi],xmm3 + pxor xmm1,xmm4 + movdqu XMMWORD PTR 32[esi*1+edi],xmm4 + pxor xmm1,xmm5 + movdqu XMMWORD PTR 48[esi*1+edi],xmm5 + pxor xmm1,xmm6 + movdqu XMMWORD PTR 64[esi*1+edi],xmm6 + jmp $L088done +ALIGN 16 +$L089one: + movdqu xmm7,XMMWORD PTR [ebx] + mov edx,DWORD PTR 112[esp] + movdqu xmm2,XMMWORD PTR [esi] + mov ecx,DWORD PTR 240[edx] + pxor xmm7,xmm0 + pxor xmm2,xmm7 + movdqa xmm6,xmm1 + mov edi,DWORD PTR 120[esp] + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L093dec1_loop_18: +DB 102,15,56,222,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L093dec1_loop_18 +DB 102,15,56,223,209 + xorps xmm2,xmm7 + movaps xmm1,xmm6 + movdqa xmm0,xmm7 + xorps xmm1,xmm2 + movups XMMWORD PTR [esi*1+edi],xmm2 + jmp $L088done +ALIGN 16 +$L090two: + lea ecx,DWORD PTR 1[ebp] + mov edx,DWORD PTR 112[esp] + bsf ecx,ecx + shl ecx,4 + movdqu xmm6,XMMWORD PTR [ebx] + movdqu xmm7,XMMWORD PTR [ecx*1+ebx] + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + mov ecx,DWORD PTR 240[edx] + movdqa xmm5,xmm1 + pxor xmm6,xmm0 + pxor xmm7,xmm6 + pxor xmm2,xmm6 + pxor xmm3,xmm7 + mov edi,DWORD PTR 120[esp] + call __aesni_decrypt2 + xorps xmm2,xmm6 + xorps xmm3,xmm7 + movdqa xmm0,xmm7 + xorps xmm5,xmm2 + movups XMMWORD PTR [esi*1+edi],xmm2 + xorps xmm5,xmm3 + movups XMMWORD PTR 16[esi*1+edi],xmm3 + movaps xmm1,xmm5 + jmp $L088done +ALIGN 16 +$L091three: + lea ecx,DWORD PTR 1[ebp] + mov edx,DWORD PTR 112[esp] + bsf ecx,ecx + shl ecx,4 + movdqu xmm5,XMMWORD PTR [ebx] + movdqu xmm6,XMMWORD PTR [ecx*1+ebx] + movdqa xmm7,xmm5 + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + mov ecx,DWORD PTR 240[edx] + movdqa XMMWORD PTR 96[esp],xmm1 + pxor xmm5,xmm0 + pxor xmm6,xmm5 + pxor xmm7,xmm6 + pxor xmm2,xmm5 + pxor xmm3,xmm6 + pxor xmm4,xmm7 + mov edi,DWORD PTR 120[esp] + call __aesni_decrypt3 + movdqa xmm1,XMMWORD PTR 96[esp] + xorps xmm2,xmm5 + xorps xmm3,xmm6 + xorps xmm4,xmm7 + movups XMMWORD PTR [esi*1+edi],xmm2 + pxor xmm1,xmm2 + movdqa xmm0,xmm7 + movups XMMWORD PTR 16[esi*1+edi],xmm3 + pxor xmm1,xmm3 + movups XMMWORD PTR 32[esi*1+edi],xmm4 + pxor xmm1,xmm4 + jmp $L088done +ALIGN 16 +$L092four: + lea ecx,DWORD PTR 1[ebp] + lea eax,DWORD PTR 3[ebp] + bsf ecx,ecx + bsf eax,eax + mov edx,DWORD PTR 112[esp] + shl ecx,4 + shl eax,4 + movdqu xmm4,XMMWORD PTR [ebx] + movdqu xmm5,XMMWORD PTR [ecx*1+ebx] + movdqa xmm6,xmm4 + movdqu xmm7,XMMWORD PTR [eax*1+ebx] + pxor xmm4,xmm0 + movdqu xmm2,XMMWORD PTR [esi] + pxor xmm5,xmm4 + movdqu xmm3,XMMWORD PTR 16[esi] + pxor xmm6,xmm5 + movdqa XMMWORD PTR [esp],xmm4 + pxor xmm7,xmm6 + movdqa XMMWORD PTR 16[esp],xmm5 + movdqu xmm4,XMMWORD PTR 32[esi] + movdqu xmm5,XMMWORD PTR 48[esi] + mov ecx,DWORD PTR 240[edx] + movdqa XMMWORD PTR 96[esp],xmm1 + pxor xmm2,XMMWORD PTR [esp] + pxor xmm3,XMMWORD PTR 16[esp] + pxor xmm4,xmm6 + pxor xmm5,xmm7 + mov edi,DWORD PTR 120[esp] + call __aesni_decrypt4 + movdqa xmm1,XMMWORD PTR 96[esp] + xorps xmm2,XMMWORD PTR [esp] + xorps xmm3,XMMWORD PTR 16[esp] + xorps xmm4,xmm6 + movups XMMWORD PTR [esi*1+edi],xmm2 + pxor xmm1,xmm2 + xorps xmm5,xmm7 + movups XMMWORD PTR 16[esi*1+edi],xmm3 + pxor xmm1,xmm3 + movdqa xmm0,xmm7 + movups XMMWORD PTR 32[esi*1+edi],xmm4 + pxor xmm1,xmm4 + movups XMMWORD PTR 48[esi*1+edi],xmm5 + pxor xmm1,xmm5 +$L088done: + mov edx,DWORD PTR 128[esp] + pxor xmm2,xmm2 + pxor xmm3,xmm3 + movdqa XMMWORD PTR [esp],xmm2 + pxor xmm4,xmm4 + movdqa XMMWORD PTR 16[esp],xmm2 + pxor xmm5,xmm5 + movdqa XMMWORD PTR 32[esp],xmm2 + pxor xmm6,xmm6 + movdqa XMMWORD PTR 48[esp],xmm2 + pxor xmm7,xmm7 + movdqa XMMWORD PTR 64[esp],xmm2 + movdqa XMMWORD PTR 80[esp],xmm2 + movdqa XMMWORD PTR 96[esp],xmm2 + lea esp,DWORD PTR [edx] + mov ecx,DWORD PTR 40[esp] + mov ebx,DWORD PTR 48[esp] + movdqu XMMWORD PTR [ecx],xmm0 + pxor xmm0,xmm0 + movdqu XMMWORD PTR [ebx],xmm1 + pxor xmm1,xmm1 + pop edi + pop esi + pop ebx + pop ebp + ret +_aesni_ocb_decrypt ENDP +ALIGN 16 +_aesni_cbc_encrypt PROC PUBLIC +$L_aesni_cbc_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov ebx,esp + mov edi,DWORD PTR 24[esp] + sub ebx,24 + mov eax,DWORD PTR 28[esp] + and ebx,-16 + mov edx,DWORD PTR 32[esp] + mov ebp,DWORD PTR 36[esp] + test eax,eax + jz $L094cbc_abort + cmp DWORD PTR 40[esp],0 + xchg ebx,esp + movups xmm7,XMMWORD PTR [ebp] + mov ecx,DWORD PTR 240[edx] + mov ebp,edx + mov DWORD PTR 16[esp],ebx + mov ebx,ecx + je $L095cbc_decrypt + movaps xmm2,xmm7 + cmp eax,16 + jb $L096cbc_enc_tail + sub eax,16 + jmp $L097cbc_enc_loop +ALIGN 16 +$L097cbc_enc_loop: + movups xmm7,XMMWORD PTR [esi] + lea esi,DWORD PTR 16[esi] + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + xorps xmm7,xmm0 + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm7 +$L098enc1_loop_19: +DB 102,15,56,220,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L098enc1_loop_19 +DB 102,15,56,221,209 + mov ecx,ebx + mov edx,ebp + movups XMMWORD PTR [edi],xmm2 + lea edi,DWORD PTR 16[edi] + sub eax,16 + jnc $L097cbc_enc_loop + add eax,16 + jnz $L096cbc_enc_tail + movaps xmm7,xmm2 + pxor xmm2,xmm2 + jmp $L099cbc_ret +$L096cbc_enc_tail: + mov ecx,eax +DD 2767451785 + mov ecx,16 + sub ecx,eax + xor eax,eax +DD 2868115081 + lea edi,DWORD PTR [edi-16] + mov ecx,ebx + mov esi,edi + mov edx,ebp + jmp $L097cbc_enc_loop +ALIGN 16 +$L095cbc_decrypt: + cmp eax,80 + jbe $L100cbc_dec_tail + movaps XMMWORD PTR [esp],xmm7 + sub eax,80 + jmp $L101cbc_dec_loop6_enter +ALIGN 16 +$L102cbc_dec_loop6: + movaps XMMWORD PTR [esp],xmm0 + movups XMMWORD PTR [edi],xmm7 + lea edi,DWORD PTR 16[edi] +$L101cbc_dec_loop6_enter: + movdqu xmm2,XMMWORD PTR [esi] + movdqu xmm3,XMMWORD PTR 16[esi] + movdqu xmm4,XMMWORD PTR 32[esi] + movdqu xmm5,XMMWORD PTR 48[esi] + movdqu xmm6,XMMWORD PTR 64[esi] + movdqu xmm7,XMMWORD PTR 80[esi] + call __aesni_decrypt6 + movups xmm1,XMMWORD PTR [esi] + movups xmm0,XMMWORD PTR 16[esi] + xorps xmm2,XMMWORD PTR [esp] + xorps xmm3,xmm1 + movups xmm1,XMMWORD PTR 32[esi] + xorps xmm4,xmm0 + movups xmm0,XMMWORD PTR 48[esi] + xorps xmm5,xmm1 + movups xmm1,XMMWORD PTR 64[esi] + xorps xmm6,xmm0 + movups xmm0,XMMWORD PTR 80[esi] + xorps xmm7,xmm1 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + lea esi,DWORD PTR 96[esi] + movups XMMWORD PTR 32[edi],xmm4 + mov ecx,ebx + movups XMMWORD PTR 48[edi],xmm5 + mov edx,ebp + movups XMMWORD PTR 64[edi],xmm6 + lea edi,DWORD PTR 80[edi] + sub eax,96 + ja $L102cbc_dec_loop6 + movaps xmm2,xmm7 + movaps xmm7,xmm0 + add eax,80 + jle $L103cbc_dec_clear_tail_collected + movups XMMWORD PTR [edi],xmm2 + lea edi,DWORD PTR 16[edi] +$L100cbc_dec_tail: + movups xmm2,XMMWORD PTR [esi] + movaps xmm6,xmm2 + cmp eax,16 + jbe $L104cbc_dec_one + movups xmm3,XMMWORD PTR 16[esi] + movaps xmm5,xmm3 + cmp eax,32 + jbe $L105cbc_dec_two + movups xmm4,XMMWORD PTR 32[esi] + cmp eax,48 + jbe $L106cbc_dec_three + movups xmm5,XMMWORD PTR 48[esi] + cmp eax,64 + jbe $L107cbc_dec_four + movups xmm6,XMMWORD PTR 64[esi] + movaps XMMWORD PTR [esp],xmm7 + movups xmm2,XMMWORD PTR [esi] + xorps xmm7,xmm7 + call __aesni_decrypt6 + movups xmm1,XMMWORD PTR [esi] + movups xmm0,XMMWORD PTR 16[esi] + xorps xmm2,XMMWORD PTR [esp] + xorps xmm3,xmm1 + movups xmm1,XMMWORD PTR 32[esi] + xorps xmm4,xmm0 + movups xmm0,XMMWORD PTR 48[esi] + xorps xmm5,xmm1 + movups xmm7,XMMWORD PTR 64[esi] + xorps xmm6,xmm0 + movups XMMWORD PTR [edi],xmm2 + movups XMMWORD PTR 16[edi],xmm3 + pxor xmm3,xmm3 + movups XMMWORD PTR 32[edi],xmm4 + pxor xmm4,xmm4 + movups XMMWORD PTR 48[edi],xmm5 + pxor xmm5,xmm5 + lea edi,DWORD PTR 64[edi] + movaps xmm2,xmm6 + pxor xmm6,xmm6 + sub eax,80 + jmp $L108cbc_dec_tail_collected +ALIGN 16 +$L104cbc_dec_one: + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR 16[edx] + lea edx,DWORD PTR 32[edx] + xorps xmm2,xmm0 +$L109dec1_loop_20: +DB 102,15,56,222,209 + dec ecx + movups xmm1,XMMWORD PTR [edx] + lea edx,DWORD PTR 16[edx] + jnz $L109dec1_loop_20 +DB 102,15,56,223,209 + xorps xmm2,xmm7 + movaps xmm7,xmm6 + sub eax,16 + jmp $L108cbc_dec_tail_collected +ALIGN 16 +$L105cbc_dec_two: + call __aesni_decrypt2 + xorps xmm2,xmm7 + xorps xmm3,xmm6 + movups XMMWORD PTR [edi],xmm2 + movaps xmm2,xmm3 + pxor xmm3,xmm3 + lea edi,DWORD PTR 16[edi] + movaps xmm7,xmm5 + sub eax,32 + jmp $L108cbc_dec_tail_collected +ALIGN 16 +$L106cbc_dec_three: + call __aesni_decrypt3 + xorps xmm2,xmm7 + xorps xmm3,xmm6 + xorps xmm4,xmm5 + movups XMMWORD PTR [edi],xmm2 + movaps xmm2,xmm4 + pxor xmm4,xmm4 + movups XMMWORD PTR 16[edi],xmm3 + pxor xmm3,xmm3 + lea edi,DWORD PTR 32[edi] + movups xmm7,XMMWORD PTR 32[esi] + sub eax,48 + jmp $L108cbc_dec_tail_collected +ALIGN 16 +$L107cbc_dec_four: + call __aesni_decrypt4 + movups xmm1,XMMWORD PTR 16[esi] + movups xmm0,XMMWORD PTR 32[esi] + xorps xmm2,xmm7 + movups xmm7,XMMWORD PTR 48[esi] + xorps xmm3,xmm6 + movups XMMWORD PTR [edi],xmm2 + xorps xmm4,xmm1 + movups XMMWORD PTR 16[edi],xmm3 + pxor xmm3,xmm3 + xorps xmm5,xmm0 + movups XMMWORD PTR 32[edi],xmm4 + pxor xmm4,xmm4 + lea edi,DWORD PTR 48[edi] + movaps xmm2,xmm5 + pxor xmm5,xmm5 + sub eax,64 + jmp $L108cbc_dec_tail_collected +ALIGN 16 +$L103cbc_dec_clear_tail_collected: + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + pxor xmm6,xmm6 +$L108cbc_dec_tail_collected: + and eax,15 + jnz $L110cbc_dec_tail_partial + movups XMMWORD PTR [edi],xmm2 + pxor xmm0,xmm0 + jmp $L099cbc_ret +ALIGN 16 +$L110cbc_dec_tail_partial: + movaps XMMWORD PTR [esp],xmm2 + pxor xmm0,xmm0 + mov ecx,16 + mov esi,esp + sub ecx,eax +DD 2767451785 + movdqa XMMWORD PTR [esp],xmm2 +$L099cbc_ret: + mov esp,DWORD PTR 16[esp] + mov ebp,DWORD PTR 36[esp] + pxor xmm2,xmm2 + pxor xmm1,xmm1 + movups XMMWORD PTR [ebp],xmm7 + pxor xmm7,xmm7 +$L094cbc_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_aesni_cbc_encrypt ENDP +ALIGN 16 +__aesni_set_encrypt_key PROC PRIVATE + push ebp + push ebx + test eax,eax + jz $L111bad_pointer + test edx,edx + jz $L111bad_pointer + call $L112pic +$L112pic: + pop ebx + lea ebx,DWORD PTR ($Lkey_const-$L112pic)[ebx] + lea ebp,DWORD PTR _OPENSSL_ia32cap_P + movups xmm0,XMMWORD PTR [eax] + xorps xmm4,xmm4 + mov ebp,DWORD PTR 4[ebp] + lea edx,DWORD PTR 16[edx] + and ebp,268437504 + cmp ecx,256 + je $L11314rounds + cmp ecx,192 + je $L11412rounds + cmp ecx,128 + jne $L115bad_keybits +ALIGN 16 +$L11610rounds: + cmp ebp,268435456 + je $L11710rounds_alt + mov ecx,9 + movups XMMWORD PTR [edx-16],xmm0 +DB 102,15,58,223,200,1 + call $L118key_128_cold +DB 102,15,58,223,200,2 + call $L119key_128 +DB 102,15,58,223,200,4 + call $L119key_128 +DB 102,15,58,223,200,8 + call $L119key_128 +DB 102,15,58,223,200,16 + call $L119key_128 +DB 102,15,58,223,200,32 + call $L119key_128 +DB 102,15,58,223,200,64 + call $L119key_128 +DB 102,15,58,223,200,128 + call $L119key_128 +DB 102,15,58,223,200,27 + call $L119key_128 +DB 102,15,58,223,200,54 + call $L119key_128 + movups XMMWORD PTR [edx],xmm0 + mov DWORD PTR 80[edx],ecx + jmp $L120good_key +ALIGN 16 +$L119key_128: + movups XMMWORD PTR [edx],xmm0 + lea edx,DWORD PTR 16[edx] +$L118key_128_cold: + shufps xmm4,xmm0,16 + xorps xmm0,xmm4 + shufps xmm4,xmm0,140 + xorps xmm0,xmm4 + shufps xmm1,xmm1,255 + xorps xmm0,xmm1 + ret +ALIGN 16 +$L11710rounds_alt: + movdqa xmm5,XMMWORD PTR [ebx] + mov ecx,8 + movdqa xmm4,XMMWORD PTR 32[ebx] + movdqa xmm2,xmm0 + movdqu XMMWORD PTR [edx-16],xmm0 +$L121loop_key128: +DB 102,15,56,0,197 +DB 102,15,56,221,196 + pslld xmm4,1 + lea edx,DWORD PTR 16[edx] + movdqa xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm2,xmm3 + pxor xmm0,xmm2 + movdqu XMMWORD PTR [edx-16],xmm0 + movdqa xmm2,xmm0 + dec ecx + jnz $L121loop_key128 + movdqa xmm4,XMMWORD PTR 48[ebx] +DB 102,15,56,0,197 +DB 102,15,56,221,196 + pslld xmm4,1 + movdqa xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm2,xmm3 + pxor xmm0,xmm2 + movdqu XMMWORD PTR [edx],xmm0 + movdqa xmm2,xmm0 +DB 102,15,56,0,197 +DB 102,15,56,221,196 + movdqa xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm3,xmm2 + pslldq xmm2,4 + pxor xmm2,xmm3 + pxor xmm0,xmm2 + movdqu XMMWORD PTR 16[edx],xmm0 + mov ecx,9 + mov DWORD PTR 96[edx],ecx + jmp $L120good_key +ALIGN 16 +$L11412rounds: + movq xmm2,QWORD PTR 16[eax] + cmp ebp,268435456 + je $L12212rounds_alt + mov ecx,11 + movups XMMWORD PTR [edx-16],xmm0 +DB 102,15,58,223,202,1 + call $L123key_192a_cold +DB 102,15,58,223,202,2 + call $L124key_192b +DB 102,15,58,223,202,4 + call $L125key_192a +DB 102,15,58,223,202,8 + call $L124key_192b +DB 102,15,58,223,202,16 + call $L125key_192a +DB 102,15,58,223,202,32 + call $L124key_192b +DB 102,15,58,223,202,64 + call $L125key_192a +DB 102,15,58,223,202,128 + call $L124key_192b + movups XMMWORD PTR [edx],xmm0 + mov DWORD PTR 48[edx],ecx + jmp $L120good_key +ALIGN 16 +$L125key_192a: + movups XMMWORD PTR [edx],xmm0 + lea edx,DWORD PTR 16[edx] +ALIGN 16 +$L123key_192a_cold: + movaps xmm5,xmm2 +$L126key_192b_warm: + shufps xmm4,xmm0,16 + movdqa xmm3,xmm2 + xorps xmm0,xmm4 + shufps xmm4,xmm0,140 + pslldq xmm3,4 + xorps xmm0,xmm4 + pshufd xmm1,xmm1,85 + pxor xmm2,xmm3 + pxor xmm0,xmm1 + pshufd xmm3,xmm0,255 + pxor xmm2,xmm3 + ret +ALIGN 16 +$L124key_192b: + movaps xmm3,xmm0 + shufps xmm5,xmm0,68 + movups XMMWORD PTR [edx],xmm5 + shufps xmm3,xmm2,78 + movups XMMWORD PTR 16[edx],xmm3 + lea edx,DWORD PTR 32[edx] + jmp $L126key_192b_warm +ALIGN 16 +$L12212rounds_alt: + movdqa xmm5,XMMWORD PTR 16[ebx] + movdqa xmm4,XMMWORD PTR 32[ebx] + mov ecx,8 + movdqu XMMWORD PTR [edx-16],xmm0 +$L127loop_key192: + movq QWORD PTR [edx],xmm2 + movdqa xmm1,xmm2 +DB 102,15,56,0,213 +DB 102,15,56,221,212 + pslld xmm4,1 + lea edx,DWORD PTR 24[edx] + movdqa xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm0,xmm3 + pshufd xmm3,xmm0,255 + pxor xmm3,xmm1 + pslldq xmm1,4 + pxor xmm3,xmm1 + pxor xmm0,xmm2 + pxor xmm2,xmm3 + movdqu XMMWORD PTR [edx-16],xmm0 + dec ecx + jnz $L127loop_key192 + mov ecx,11 + mov DWORD PTR 32[edx],ecx + jmp $L120good_key +ALIGN 16 +$L11314rounds: + movups xmm2,XMMWORD PTR 16[eax] + lea edx,DWORD PTR 16[edx] + cmp ebp,268435456 + je $L12814rounds_alt + mov ecx,13 + movups XMMWORD PTR [edx-32],xmm0 + movups XMMWORD PTR [edx-16],xmm2 +DB 102,15,58,223,202,1 + call $L129key_256a_cold +DB 102,15,58,223,200,1 + call $L130key_256b +DB 102,15,58,223,202,2 + call $L131key_256a +DB 102,15,58,223,200,2 + call $L130key_256b +DB 102,15,58,223,202,4 + call $L131key_256a +DB 102,15,58,223,200,4 + call $L130key_256b +DB 102,15,58,223,202,8 + call $L131key_256a +DB 102,15,58,223,200,8 + call $L130key_256b +DB 102,15,58,223,202,16 + call $L131key_256a +DB 102,15,58,223,200,16 + call $L130key_256b +DB 102,15,58,223,202,32 + call $L131key_256a +DB 102,15,58,223,200,32 + call $L130key_256b +DB 102,15,58,223,202,64 + call $L131key_256a + movups XMMWORD PTR [edx],xmm0 + mov DWORD PTR 16[edx],ecx + xor eax,eax + jmp $L120good_key +ALIGN 16 +$L131key_256a: + movups XMMWORD PTR [edx],xmm2 + lea edx,DWORD PTR 16[edx] +$L129key_256a_cold: + shufps xmm4,xmm0,16 + xorps xmm0,xmm4 + shufps xmm4,xmm0,140 + xorps xmm0,xmm4 + shufps xmm1,xmm1,255 + xorps xmm0,xmm1 + ret +ALIGN 16 +$L130key_256b: + movups XMMWORD PTR [edx],xmm0 + lea edx,DWORD PTR 16[edx] + shufps xmm4,xmm2,16 + xorps xmm2,xmm4 + shufps xmm4,xmm2,140 + xorps xmm2,xmm4 + shufps xmm1,xmm1,170 + xorps xmm2,xmm1 + ret +ALIGN 16 +$L12814rounds_alt: + movdqa xmm5,XMMWORD PTR [ebx] + movdqa xmm4,XMMWORD PTR 32[ebx] + mov ecx,7 + movdqu XMMWORD PTR [edx-32],xmm0 + movdqa xmm1,xmm2 + movdqu XMMWORD PTR [edx-16],xmm2 +$L132loop_key256: +DB 102,15,56,0,213 +DB 102,15,56,221,212 + movdqa xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm3,xmm0 + pslldq xmm0,4 + pxor xmm0,xmm3 + pslld xmm4,1 + pxor xmm0,xmm2 + movdqu XMMWORD PTR [edx],xmm0 + dec ecx + jz $L133done_key256 + pshufd xmm2,xmm0,255 + pxor xmm3,xmm3 +DB 102,15,56,221,211 + movdqa xmm3,xmm1 + pslldq xmm1,4 + pxor xmm3,xmm1 + pslldq xmm1,4 + pxor xmm3,xmm1 + pslldq xmm1,4 + pxor xmm1,xmm3 + pxor xmm2,xmm1 + movdqu XMMWORD PTR 16[edx],xmm2 + lea edx,DWORD PTR 32[edx] + movdqa xmm1,xmm2 + jmp $L132loop_key256 +$L133done_key256: + mov ecx,13 + mov DWORD PTR 16[edx],ecx +$L120good_key: + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + xor eax,eax + pop ebx + pop ebp + ret +ALIGN 4 +$L111bad_pointer: + mov eax,-1 + pop ebx + pop ebp + ret +ALIGN 4 +$L115bad_keybits: + pxor xmm0,xmm0 + mov eax,-2 + pop ebx + pop ebp + ret +__aesni_set_encrypt_key ENDP +ALIGN 16 +_aesni_set_encrypt_key PROC PUBLIC +$L_aesni_set_encrypt_key_begin:: + mov eax,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] + call __aesni_set_encrypt_key + ret +_aesni_set_encrypt_key ENDP +ALIGN 16 +_aesni_set_decrypt_key PROC PUBLIC +$L_aesni_set_decrypt_key_begin:: + mov eax,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] + call __aesni_set_encrypt_key + mov edx,DWORD PTR 12[esp] + shl ecx,4 + test eax,eax + jnz $L134dec_key_ret + lea eax,DWORD PTR 16[ecx*1+edx] + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR [eax] + movups XMMWORD PTR [eax],xmm0 + movups XMMWORD PTR [edx],xmm1 + lea edx,DWORD PTR 16[edx] + lea eax,DWORD PTR [eax-16] +$L135dec_key_inverse: + movups xmm0,XMMWORD PTR [edx] + movups xmm1,XMMWORD PTR [eax] +DB 102,15,56,219,192 +DB 102,15,56,219,201 + lea edx,DWORD PTR 16[edx] + lea eax,DWORD PTR [eax-16] + movups XMMWORD PTR 16[eax],xmm0 + movups XMMWORD PTR [edx-16],xmm1 + cmp eax,edx + ja $L135dec_key_inverse + movups xmm0,XMMWORD PTR [edx] +DB 102,15,56,219,192 + movups XMMWORD PTR [edx],xmm0 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + xor eax,eax +$L134dec_key_ret: + ret +_aesni_set_decrypt_key ENDP +ALIGN 64 +$Lkey_const:: +DD 202313229,202313229,202313229,202313229 +DD 67569157,67569157,67569157,67569157 +DD 1,1,1,1 +DD 27,27,27,27 +DB 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 +DB 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 +DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 +DB 115,108,46,111,114,103,62,0 +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/aes/vpaes-x86.masm b/contrib/libs/openssl/asm/windows/crypto/aes/vpaes-x86.masm index c64633d72d..060b0b1c50 100644 --- a/contrib/libs/openssl/asm/windows/crypto/aes/vpaes-x86.masm +++ b/contrib/libs/openssl/asm/windows/crypto/aes/vpaes-x86.masm @@ -1,661 +1,661 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -ALIGN 64 -$L_vpaes_consts:: -DD 218628480,235210255,168496130,67568393 -DD 252381056,17041926,33884169,51187212 -DD 252645135,252645135,252645135,252645135 -DD 1512730624,3266504856,1377990664,3401244816 -DD 830229760,1275146365,2969422977,3447763452 -DD 3411033600,2979783055,338359620,2782886510 -DD 4209124096,907596821,221174255,1006095553 -DD 191964160,3799684038,3164090317,1589111125 -DD 182528256,1777043520,2877432650,3265356744 -DD 1874708224,3503451415,3305285752,363511674 -DD 1606117888,3487855781,1093350906,2384367825 -DD 197121,67569157,134941193,202313229 -DD 67569157,134941193,202313229,197121 -DD 134941193,202313229,197121,67569157 -DD 202313229,197121,67569157,134941193 -DD 33619971,100992007,168364043,235736079 -DD 235736079,33619971,100992007,168364043 -DD 168364043,235736079,33619971,100992007 -DD 100992007,168364043,235736079,33619971 -DD 50462976,117835012,185207048,252579084 -DD 252314880,51251460,117574920,184942860 -DD 184682752,252054788,50987272,118359308 -DD 118099200,185467140,251790600,50727180 -DD 2946363062,528716217,1300004225,1881839624 -DD 1532713819,1532713819,1532713819,1532713819 -DD 3602276352,4288629033,3737020424,4153884961 -DD 1354558464,32357713,2958822624,3775749553 -DD 1201988352,132424512,1572796698,503232858 -DD 2213177600,1597421020,4103937655,675398315 -DD 2749646592,4273543773,1511898873,121693092 -DD 3040248576,1103263732,2871565598,1608280554 -DD 2236667136,2588920351,482954393,64377734 -DD 3069987328,291237287,2117370568,3650299247 -DD 533321216,3573750986,2572112006,1401264716 -DD 1339849704,2721158661,548607111,3445553514 -DD 2128193280,3054596040,2183486460,1257083700 -DD 655635200,1165381986,3923443150,2344132524 -DD 190078720,256924420,290342170,357187870 -DD 1610966272,2263057382,4103205268,309794674 -DD 2592527872,2233205587,1335446729,3402964816 -DD 3973531904,3225098121,3002836325,1918774430 -DD 3870401024,2102906079,2284471353,4117666579 -DD 617007872,1021508343,366931923,691083277 -DD 2528395776,3491914898,2968704004,1613121270 -DD 3445188352,3247741094,844474987,4093578302 -DD 651481088,1190302358,1689581232,574775300 -DD 4289380608,206939853,2555985458,2489840491 -DD 2130264064,327674451,3566485037,3349835193 -DD 2470714624,316102159,3636825756,3393945945 -DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 -DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 -DB 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 -DB 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 -DB 118,101,114,115,105,116,121,41,0 -ALIGN 64 -ALIGN 16 -__vpaes_preheat PROC PRIVATE - add ebp,DWORD PTR [esp] - movdqa xmm7,XMMWORD PTR [ebp-48] - movdqa xmm6,XMMWORD PTR [ebp-16] - ret -__vpaes_preheat ENDP -ALIGN 16 -__vpaes_encrypt_core PROC PRIVATE - mov ecx,16 - mov eax,DWORD PTR 240[edx] - movdqa xmm1,xmm6 - movdqa xmm2,XMMWORD PTR [ebp] - pandn xmm1,xmm0 - pand xmm0,xmm6 - movdqu xmm5,XMMWORD PTR [edx] -DB 102,15,56,0,208 - movdqa xmm0,XMMWORD PTR 16[ebp] - pxor xmm2,xmm5 - psrld xmm1,4 - add edx,16 -DB 102,15,56,0,193 - lea ebx,DWORD PTR 192[ebp] - pxor xmm0,xmm2 - jmp $L000enc_entry -ALIGN 16 -$L001enc_loop: - movdqa xmm4,XMMWORD PTR 32[ebp] - movdqa xmm0,XMMWORD PTR 48[ebp] -DB 102,15,56,0,226 -DB 102,15,56,0,195 - pxor xmm4,xmm5 - movdqa xmm5,XMMWORD PTR 64[ebp] - pxor xmm0,xmm4 - movdqa xmm1,XMMWORD PTR [ecx*1+ebx-64] -DB 102,15,56,0,234 - movdqa xmm2,XMMWORD PTR 80[ebp] - movdqa xmm4,XMMWORD PTR [ecx*1+ebx] -DB 102,15,56,0,211 - movdqa xmm3,xmm0 - pxor xmm2,xmm5 -DB 102,15,56,0,193 - add edx,16 - pxor xmm0,xmm2 -DB 102,15,56,0,220 - add ecx,16 - pxor xmm3,xmm0 -DB 102,15,56,0,193 - and ecx,48 - sub eax,1 - pxor xmm0,xmm3 -$L000enc_entry: - movdqa xmm1,xmm6 - movdqa xmm5,XMMWORD PTR [ebp-32] - pandn xmm1,xmm0 - psrld xmm1,4 - pand xmm0,xmm6 -DB 102,15,56,0,232 - movdqa xmm3,xmm7 - pxor xmm0,xmm1 -DB 102,15,56,0,217 - movdqa xmm4,xmm7 - pxor xmm3,xmm5 -DB 102,15,56,0,224 - movdqa xmm2,xmm7 - pxor xmm4,xmm5 -DB 102,15,56,0,211 - movdqa xmm3,xmm7 - pxor xmm2,xmm0 -DB 102,15,56,0,220 - movdqu xmm5,XMMWORD PTR [edx] - pxor xmm3,xmm1 - jnz $L001enc_loop - movdqa xmm4,XMMWORD PTR 96[ebp] - movdqa xmm0,XMMWORD PTR 112[ebp] -DB 102,15,56,0,226 - pxor xmm4,xmm5 -DB 102,15,56,0,195 - movdqa xmm1,XMMWORD PTR 64[ecx*1+ebx] - pxor xmm0,xmm4 -DB 102,15,56,0,193 - ret -__vpaes_encrypt_core ENDP -ALIGN 16 -__vpaes_decrypt_core PROC PRIVATE - lea ebx,DWORD PTR 608[ebp] - mov eax,DWORD PTR 240[edx] - movdqa xmm1,xmm6 - movdqa xmm2,XMMWORD PTR [ebx-64] - pandn xmm1,xmm0 - mov ecx,eax - psrld xmm1,4 - movdqu xmm5,XMMWORD PTR [edx] - shl ecx,4 - pand xmm0,xmm6 -DB 102,15,56,0,208 - movdqa xmm0,XMMWORD PTR [ebx-48] - xor ecx,48 -DB 102,15,56,0,193 - and ecx,48 - pxor xmm2,xmm5 - movdqa xmm5,XMMWORD PTR 176[ebp] - pxor xmm0,xmm2 - add edx,16 - lea ecx,DWORD PTR [ecx*1+ebx-352] - jmp $L002dec_entry -ALIGN 16 -$L003dec_loop: - movdqa xmm4,XMMWORD PTR [ebx-32] - movdqa xmm1,XMMWORD PTR [ebx-16] -DB 102,15,56,0,226 -DB 102,15,56,0,203 - pxor xmm0,xmm4 - movdqa xmm4,XMMWORD PTR [ebx] - pxor xmm0,xmm1 - movdqa xmm1,XMMWORD PTR 16[ebx] -DB 102,15,56,0,226 -DB 102,15,56,0,197 -DB 102,15,56,0,203 - pxor xmm0,xmm4 - movdqa xmm4,XMMWORD PTR 32[ebx] - pxor xmm0,xmm1 - movdqa xmm1,XMMWORD PTR 48[ebx] -DB 102,15,56,0,226 -DB 102,15,56,0,197 -DB 102,15,56,0,203 - pxor xmm0,xmm4 - movdqa xmm4,XMMWORD PTR 64[ebx] - pxor xmm0,xmm1 - movdqa xmm1,XMMWORD PTR 80[ebx] -DB 102,15,56,0,226 -DB 102,15,56,0,197 -DB 102,15,56,0,203 - pxor xmm0,xmm4 - add edx,16 -DB 102,15,58,15,237,12 - pxor xmm0,xmm1 - sub eax,1 -$L002dec_entry: - movdqa xmm1,xmm6 - movdqa xmm2,XMMWORD PTR [ebp-32] - pandn xmm1,xmm0 - pand xmm0,xmm6 - psrld xmm1,4 -DB 102,15,56,0,208 - movdqa xmm3,xmm7 - pxor xmm0,xmm1 -DB 102,15,56,0,217 - movdqa xmm4,xmm7 - pxor xmm3,xmm2 -DB 102,15,56,0,224 - pxor xmm4,xmm2 - movdqa xmm2,xmm7 -DB 102,15,56,0,211 - movdqa xmm3,xmm7 - pxor xmm2,xmm0 -DB 102,15,56,0,220 - movdqu xmm0,XMMWORD PTR [edx] - pxor xmm3,xmm1 - jnz $L003dec_loop - movdqa xmm4,XMMWORD PTR 96[ebx] -DB 102,15,56,0,226 - pxor xmm4,xmm0 - movdqa xmm0,XMMWORD PTR 112[ebx] - movdqa xmm2,XMMWORD PTR [ecx] -DB 102,15,56,0,195 - pxor xmm0,xmm4 -DB 102,15,56,0,194 - ret -__vpaes_decrypt_core ENDP -ALIGN 16 -__vpaes_schedule_core PROC PRIVATE - add ebp,DWORD PTR [esp] - movdqu xmm0,XMMWORD PTR [esi] - movdqa xmm2,XMMWORD PTR 320[ebp] - movdqa xmm3,xmm0 - lea ebx,DWORD PTR [ebp] - movdqa XMMWORD PTR 4[esp],xmm2 - call __vpaes_schedule_transform - movdqa xmm7,xmm0 - test edi,edi - jnz $L004schedule_am_decrypting - movdqu XMMWORD PTR [edx],xmm0 - jmp $L005schedule_go -$L004schedule_am_decrypting: - movdqa xmm1,XMMWORD PTR 256[ecx*1+ebp] -DB 102,15,56,0,217 - movdqu XMMWORD PTR [edx],xmm3 - xor ecx,48 -$L005schedule_go: - cmp eax,192 - ja $L006schedule_256 - je $L007schedule_192 -$L008schedule_128: - mov eax,10 -$L009loop_schedule_128: - call __vpaes_schedule_round - dec eax - jz $L010schedule_mangle_last - call __vpaes_schedule_mangle - jmp $L009loop_schedule_128 -ALIGN 16 -$L007schedule_192: - movdqu xmm0,XMMWORD PTR 8[esi] - call __vpaes_schedule_transform - movdqa xmm6,xmm0 - pxor xmm4,xmm4 - movhlps xmm6,xmm4 - mov eax,4 -$L011loop_schedule_192: - call __vpaes_schedule_round -DB 102,15,58,15,198,8 - call __vpaes_schedule_mangle - call __vpaes_schedule_192_smear - call __vpaes_schedule_mangle - call __vpaes_schedule_round - dec eax - jz $L010schedule_mangle_last - call __vpaes_schedule_mangle - call __vpaes_schedule_192_smear - jmp $L011loop_schedule_192 -ALIGN 16 -$L006schedule_256: - movdqu xmm0,XMMWORD PTR 16[esi] - call __vpaes_schedule_transform - mov eax,7 -$L012loop_schedule_256: - call __vpaes_schedule_mangle - movdqa xmm6,xmm0 - call __vpaes_schedule_round - dec eax - jz $L010schedule_mangle_last - call __vpaes_schedule_mangle - pshufd xmm0,xmm0,255 - movdqa XMMWORD PTR 20[esp],xmm7 - movdqa xmm7,xmm6 - call $L_vpaes_schedule_low_round - movdqa xmm7,XMMWORD PTR 20[esp] - jmp $L012loop_schedule_256 -ALIGN 16 -$L010schedule_mangle_last: - lea ebx,DWORD PTR 384[ebp] - test edi,edi - jnz $L013schedule_mangle_last_dec - movdqa xmm1,XMMWORD PTR 256[ecx*1+ebp] -DB 102,15,56,0,193 - lea ebx,DWORD PTR 352[ebp] - add edx,32 -$L013schedule_mangle_last_dec: - add edx,-16 - pxor xmm0,XMMWORD PTR 336[ebp] - call __vpaes_schedule_transform - movdqu XMMWORD PTR [edx],xmm0 - pxor xmm0,xmm0 - pxor xmm1,xmm1 - pxor xmm2,xmm2 - pxor xmm3,xmm3 - pxor xmm4,xmm4 - pxor xmm5,xmm5 - pxor xmm6,xmm6 - pxor xmm7,xmm7 - ret -__vpaes_schedule_core ENDP -ALIGN 16 -__vpaes_schedule_192_smear PROC PRIVATE - pshufd xmm1,xmm6,128 - pshufd xmm0,xmm7,254 - pxor xmm6,xmm1 - pxor xmm1,xmm1 - pxor xmm6,xmm0 - movdqa xmm0,xmm6 - movhlps xmm6,xmm1 - ret -__vpaes_schedule_192_smear ENDP -ALIGN 16 -__vpaes_schedule_round PROC PRIVATE - movdqa xmm2,XMMWORD PTR 8[esp] - pxor xmm1,xmm1 -DB 102,15,58,15,202,15 -DB 102,15,58,15,210,15 - pxor xmm7,xmm1 - pshufd xmm0,xmm0,255 -DB 102,15,58,15,192,1 - movdqa XMMWORD PTR 8[esp],xmm2 -$L_vpaes_schedule_low_round:: - movdqa xmm1,xmm7 - pslldq xmm7,4 - pxor xmm7,xmm1 - movdqa xmm1,xmm7 - pslldq xmm7,8 - pxor xmm7,xmm1 - pxor xmm7,XMMWORD PTR 336[ebp] - movdqa xmm4,XMMWORD PTR [ebp-16] - movdqa xmm5,XMMWORD PTR [ebp-48] - movdqa xmm1,xmm4 - pandn xmm1,xmm0 - psrld xmm1,4 - pand xmm0,xmm4 - movdqa xmm2,XMMWORD PTR [ebp-32] -DB 102,15,56,0,208 - pxor xmm0,xmm1 - movdqa xmm3,xmm5 -DB 102,15,56,0,217 - pxor xmm3,xmm2 - movdqa xmm4,xmm5 -DB 102,15,56,0,224 - pxor xmm4,xmm2 - movdqa xmm2,xmm5 -DB 102,15,56,0,211 - pxor xmm2,xmm0 - movdqa xmm3,xmm5 -DB 102,15,56,0,220 - pxor xmm3,xmm1 - movdqa xmm4,XMMWORD PTR 32[ebp] -DB 102,15,56,0,226 - movdqa xmm0,XMMWORD PTR 48[ebp] -DB 102,15,56,0,195 - pxor xmm0,xmm4 - pxor xmm0,xmm7 - movdqa xmm7,xmm0 - ret -__vpaes_schedule_round ENDP -ALIGN 16 -__vpaes_schedule_transform PROC PRIVATE - movdqa xmm2,XMMWORD PTR [ebp-16] - movdqa xmm1,xmm2 - pandn xmm1,xmm0 - psrld xmm1,4 - pand xmm0,xmm2 - movdqa xmm2,XMMWORD PTR [ebx] -DB 102,15,56,0,208 - movdqa xmm0,XMMWORD PTR 16[ebx] -DB 102,15,56,0,193 - pxor xmm0,xmm2 - ret -__vpaes_schedule_transform ENDP -ALIGN 16 -__vpaes_schedule_mangle PROC PRIVATE - movdqa xmm4,xmm0 - movdqa xmm5,XMMWORD PTR 128[ebp] - test edi,edi - jnz $L014schedule_mangle_dec - add edx,16 - pxor xmm4,XMMWORD PTR 336[ebp] -DB 102,15,56,0,229 - movdqa xmm3,xmm4 -DB 102,15,56,0,229 - pxor xmm3,xmm4 -DB 102,15,56,0,229 - pxor xmm3,xmm4 - jmp $L015schedule_mangle_both -ALIGN 16 -$L014schedule_mangle_dec: - movdqa xmm2,XMMWORD PTR [ebp-16] - lea esi,DWORD PTR 416[ebp] - movdqa xmm1,xmm2 - pandn xmm1,xmm4 - psrld xmm1,4 - pand xmm4,xmm2 - movdqa xmm2,XMMWORD PTR [esi] -DB 102,15,56,0,212 - movdqa xmm3,XMMWORD PTR 16[esi] -DB 102,15,56,0,217 - pxor xmm3,xmm2 -DB 102,15,56,0,221 - movdqa xmm2,XMMWORD PTR 32[esi] -DB 102,15,56,0,212 - pxor xmm2,xmm3 - movdqa xmm3,XMMWORD PTR 48[esi] -DB 102,15,56,0,217 - pxor xmm3,xmm2 -DB 102,15,56,0,221 - movdqa xmm2,XMMWORD PTR 64[esi] -DB 102,15,56,0,212 - pxor xmm2,xmm3 - movdqa xmm3,XMMWORD PTR 80[esi] -DB 102,15,56,0,217 - pxor xmm3,xmm2 -DB 102,15,56,0,221 - movdqa xmm2,XMMWORD PTR 96[esi] -DB 102,15,56,0,212 - pxor xmm2,xmm3 - movdqa xmm3,XMMWORD PTR 112[esi] -DB 102,15,56,0,217 - pxor xmm3,xmm2 - add edx,-16 -$L015schedule_mangle_both: - movdqa xmm1,XMMWORD PTR 256[ecx*1+ebp] -DB 102,15,56,0,217 - add ecx,-16 - and ecx,48 - movdqu XMMWORD PTR [edx],xmm3 - ret -__vpaes_schedule_mangle ENDP -ALIGN 16 -_vpaes_set_encrypt_key PROC PUBLIC -$L_vpaes_set_encrypt_key_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - lea ebx,DWORD PTR [esp-56] - mov eax,DWORD PTR 24[esp] - and ebx,-16 - mov edx,DWORD PTR 28[esp] - xchg ebx,esp - mov DWORD PTR 48[esp],ebx - mov ebx,eax - shr ebx,5 - add ebx,5 - mov DWORD PTR 240[edx],ebx - mov ecx,48 - mov edi,0 - mov ebp,OFFSET ($L_vpaes_consts+030h-$L016pic_point) - call __vpaes_schedule_core -$L016pic_point: - mov esp,DWORD PTR 48[esp] - xor eax,eax - pop edi - pop esi - pop ebx - pop ebp - ret -_vpaes_set_encrypt_key ENDP -ALIGN 16 -_vpaes_set_decrypt_key PROC PUBLIC -$L_vpaes_set_decrypt_key_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - lea ebx,DWORD PTR [esp-56] - mov eax,DWORD PTR 24[esp] - and ebx,-16 - mov edx,DWORD PTR 28[esp] - xchg ebx,esp - mov DWORD PTR 48[esp],ebx - mov ebx,eax - shr ebx,5 - add ebx,5 - mov DWORD PTR 240[edx],ebx - shl ebx,4 - lea edx,DWORD PTR 16[ebx*1+edx] - mov edi,1 - mov ecx,eax - shr ecx,1 - and ecx,32 - xor ecx,32 - mov ebp,OFFSET ($L_vpaes_consts+030h-$L017pic_point) - call __vpaes_schedule_core -$L017pic_point: - mov esp,DWORD PTR 48[esp] - xor eax,eax - pop edi - pop esi - pop ebx - pop ebp - ret -_vpaes_set_decrypt_key ENDP -ALIGN 16 -_vpaes_encrypt PROC PUBLIC -$L_vpaes_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov ebp,OFFSET ($L_vpaes_consts+030h-$L018pic_point) - call __vpaes_preheat -$L018pic_point: - mov esi,DWORD PTR 20[esp] - lea ebx,DWORD PTR [esp-56] - mov edi,DWORD PTR 24[esp] - and ebx,-16 - mov edx,DWORD PTR 28[esp] - xchg ebx,esp - mov DWORD PTR 48[esp],ebx - movdqu xmm0,XMMWORD PTR [esi] - call __vpaes_encrypt_core - movdqu XMMWORD PTR [edi],xmm0 - mov esp,DWORD PTR 48[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -_vpaes_encrypt ENDP -ALIGN 16 -_vpaes_decrypt PROC PUBLIC -$L_vpaes_decrypt_begin:: - push ebp - push ebx - push esi - push edi - mov ebp,OFFSET ($L_vpaes_consts+030h-$L019pic_point) - call __vpaes_preheat -$L019pic_point: - mov esi,DWORD PTR 20[esp] - lea ebx,DWORD PTR [esp-56] - mov edi,DWORD PTR 24[esp] - and ebx,-16 - mov edx,DWORD PTR 28[esp] - xchg ebx,esp - mov DWORD PTR 48[esp],ebx - movdqu xmm0,XMMWORD PTR [esi] - call __vpaes_decrypt_core - movdqu XMMWORD PTR [edi],xmm0 - mov esp,DWORD PTR 48[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -_vpaes_decrypt ENDP -ALIGN 16 -_vpaes_cbc_encrypt PROC PUBLIC -$L_vpaes_cbc_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - sub eax,16 - jc $L020cbc_abort - lea ebx,DWORD PTR [esp-56] - mov ebp,DWORD PTR 36[esp] - and ebx,-16 - mov ecx,DWORD PTR 40[esp] - xchg ebx,esp - movdqu xmm1,XMMWORD PTR [ebp] - sub edi,esi - mov DWORD PTR 48[esp],ebx - mov DWORD PTR [esp],edi - mov DWORD PTR 4[esp],edx - mov DWORD PTR 8[esp],ebp - mov edi,eax - mov ebp,OFFSET ($L_vpaes_consts+030h-$L021pic_point) - call __vpaes_preheat -$L021pic_point: - cmp ecx,0 - je $L022cbc_dec_loop - jmp $L023cbc_enc_loop -ALIGN 16 -$L023cbc_enc_loop: - movdqu xmm0,XMMWORD PTR [esi] - pxor xmm0,xmm1 - call __vpaes_encrypt_core - mov ebx,DWORD PTR [esp] - mov edx,DWORD PTR 4[esp] - movdqa xmm1,xmm0 - movdqu XMMWORD PTR [esi*1+ebx],xmm0 - lea esi,DWORD PTR 16[esi] - sub edi,16 - jnc $L023cbc_enc_loop - jmp $L024cbc_done -ALIGN 16 -$L022cbc_dec_loop: - movdqu xmm0,XMMWORD PTR [esi] - movdqa XMMWORD PTR 16[esp],xmm1 - movdqa XMMWORD PTR 32[esp],xmm0 - call __vpaes_decrypt_core - mov ebx,DWORD PTR [esp] - mov edx,DWORD PTR 4[esp] - pxor xmm0,XMMWORD PTR 16[esp] - movdqa xmm1,XMMWORD PTR 32[esp] - movdqu XMMWORD PTR [esi*1+ebx],xmm0 - lea esi,DWORD PTR 16[esi] - sub edi,16 - jnc $L022cbc_dec_loop -$L024cbc_done: - mov ebx,DWORD PTR 8[esp] - mov esp,DWORD PTR 48[esp] - movdqu XMMWORD PTR [ebx],xmm1 -$L020cbc_abort: - pop edi - pop esi - pop ebx - pop ebp - ret -_vpaes_cbc_encrypt ENDP -.text$ ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +ALIGN 64 +$L_vpaes_consts:: +DD 218628480,235210255,168496130,67568393 +DD 252381056,17041926,33884169,51187212 +DD 252645135,252645135,252645135,252645135 +DD 1512730624,3266504856,1377990664,3401244816 +DD 830229760,1275146365,2969422977,3447763452 +DD 3411033600,2979783055,338359620,2782886510 +DD 4209124096,907596821,221174255,1006095553 +DD 191964160,3799684038,3164090317,1589111125 +DD 182528256,1777043520,2877432650,3265356744 +DD 1874708224,3503451415,3305285752,363511674 +DD 1606117888,3487855781,1093350906,2384367825 +DD 197121,67569157,134941193,202313229 +DD 67569157,134941193,202313229,197121 +DD 134941193,202313229,197121,67569157 +DD 202313229,197121,67569157,134941193 +DD 33619971,100992007,168364043,235736079 +DD 235736079,33619971,100992007,168364043 +DD 168364043,235736079,33619971,100992007 +DD 100992007,168364043,235736079,33619971 +DD 50462976,117835012,185207048,252579084 +DD 252314880,51251460,117574920,184942860 +DD 184682752,252054788,50987272,118359308 +DD 118099200,185467140,251790600,50727180 +DD 2946363062,528716217,1300004225,1881839624 +DD 1532713819,1532713819,1532713819,1532713819 +DD 3602276352,4288629033,3737020424,4153884961 +DD 1354558464,32357713,2958822624,3775749553 +DD 1201988352,132424512,1572796698,503232858 +DD 2213177600,1597421020,4103937655,675398315 +DD 2749646592,4273543773,1511898873,121693092 +DD 3040248576,1103263732,2871565598,1608280554 +DD 2236667136,2588920351,482954393,64377734 +DD 3069987328,291237287,2117370568,3650299247 +DD 533321216,3573750986,2572112006,1401264716 +DD 1339849704,2721158661,548607111,3445553514 +DD 2128193280,3054596040,2183486460,1257083700 +DD 655635200,1165381986,3923443150,2344132524 +DD 190078720,256924420,290342170,357187870 +DD 1610966272,2263057382,4103205268,309794674 +DD 2592527872,2233205587,1335446729,3402964816 +DD 3973531904,3225098121,3002836325,1918774430 +DD 3870401024,2102906079,2284471353,4117666579 +DD 617007872,1021508343,366931923,691083277 +DD 2528395776,3491914898,2968704004,1613121270 +DD 3445188352,3247741094,844474987,4093578302 +DD 651481088,1190302358,1689581232,574775300 +DD 4289380608,206939853,2555985458,2489840491 +DD 2130264064,327674451,3566485037,3349835193 +DD 2470714624,316102159,3636825756,3393945945 +DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 +DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 +DB 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 +DB 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 +DB 118,101,114,115,105,116,121,41,0 +ALIGN 64 +ALIGN 16 +__vpaes_preheat PROC PRIVATE + add ebp,DWORD PTR [esp] + movdqa xmm7,XMMWORD PTR [ebp-48] + movdqa xmm6,XMMWORD PTR [ebp-16] + ret +__vpaes_preheat ENDP +ALIGN 16 +__vpaes_encrypt_core PROC PRIVATE + mov ecx,16 + mov eax,DWORD PTR 240[edx] + movdqa xmm1,xmm6 + movdqa xmm2,XMMWORD PTR [ebp] + pandn xmm1,xmm0 + pand xmm0,xmm6 + movdqu xmm5,XMMWORD PTR [edx] +DB 102,15,56,0,208 + movdqa xmm0,XMMWORD PTR 16[ebp] + pxor xmm2,xmm5 + psrld xmm1,4 + add edx,16 +DB 102,15,56,0,193 + lea ebx,DWORD PTR 192[ebp] + pxor xmm0,xmm2 + jmp $L000enc_entry +ALIGN 16 +$L001enc_loop: + movdqa xmm4,XMMWORD PTR 32[ebp] + movdqa xmm0,XMMWORD PTR 48[ebp] +DB 102,15,56,0,226 +DB 102,15,56,0,195 + pxor xmm4,xmm5 + movdqa xmm5,XMMWORD PTR 64[ebp] + pxor xmm0,xmm4 + movdqa xmm1,XMMWORD PTR [ecx*1+ebx-64] +DB 102,15,56,0,234 + movdqa xmm2,XMMWORD PTR 80[ebp] + movdqa xmm4,XMMWORD PTR [ecx*1+ebx] +DB 102,15,56,0,211 + movdqa xmm3,xmm0 + pxor xmm2,xmm5 +DB 102,15,56,0,193 + add edx,16 + pxor xmm0,xmm2 +DB 102,15,56,0,220 + add ecx,16 + pxor xmm3,xmm0 +DB 102,15,56,0,193 + and ecx,48 + sub eax,1 + pxor xmm0,xmm3 +$L000enc_entry: + movdqa xmm1,xmm6 + movdqa xmm5,XMMWORD PTR [ebp-32] + pandn xmm1,xmm0 + psrld xmm1,4 + pand xmm0,xmm6 +DB 102,15,56,0,232 + movdqa xmm3,xmm7 + pxor xmm0,xmm1 +DB 102,15,56,0,217 + movdqa xmm4,xmm7 + pxor xmm3,xmm5 +DB 102,15,56,0,224 + movdqa xmm2,xmm7 + pxor xmm4,xmm5 +DB 102,15,56,0,211 + movdqa xmm3,xmm7 + pxor xmm2,xmm0 +DB 102,15,56,0,220 + movdqu xmm5,XMMWORD PTR [edx] + pxor xmm3,xmm1 + jnz $L001enc_loop + movdqa xmm4,XMMWORD PTR 96[ebp] + movdqa xmm0,XMMWORD PTR 112[ebp] +DB 102,15,56,0,226 + pxor xmm4,xmm5 +DB 102,15,56,0,195 + movdqa xmm1,XMMWORD PTR 64[ecx*1+ebx] + pxor xmm0,xmm4 +DB 102,15,56,0,193 + ret +__vpaes_encrypt_core ENDP +ALIGN 16 +__vpaes_decrypt_core PROC PRIVATE + lea ebx,DWORD PTR 608[ebp] + mov eax,DWORD PTR 240[edx] + movdqa xmm1,xmm6 + movdqa xmm2,XMMWORD PTR [ebx-64] + pandn xmm1,xmm0 + mov ecx,eax + psrld xmm1,4 + movdqu xmm5,XMMWORD PTR [edx] + shl ecx,4 + pand xmm0,xmm6 +DB 102,15,56,0,208 + movdqa xmm0,XMMWORD PTR [ebx-48] + xor ecx,48 +DB 102,15,56,0,193 + and ecx,48 + pxor xmm2,xmm5 + movdqa xmm5,XMMWORD PTR 176[ebp] + pxor xmm0,xmm2 + add edx,16 + lea ecx,DWORD PTR [ecx*1+ebx-352] + jmp $L002dec_entry +ALIGN 16 +$L003dec_loop: + movdqa xmm4,XMMWORD PTR [ebx-32] + movdqa xmm1,XMMWORD PTR [ebx-16] +DB 102,15,56,0,226 +DB 102,15,56,0,203 + pxor xmm0,xmm4 + movdqa xmm4,XMMWORD PTR [ebx] + pxor xmm0,xmm1 + movdqa xmm1,XMMWORD PTR 16[ebx] +DB 102,15,56,0,226 +DB 102,15,56,0,197 +DB 102,15,56,0,203 + pxor xmm0,xmm4 + movdqa xmm4,XMMWORD PTR 32[ebx] + pxor xmm0,xmm1 + movdqa xmm1,XMMWORD PTR 48[ebx] +DB 102,15,56,0,226 +DB 102,15,56,0,197 +DB 102,15,56,0,203 + pxor xmm0,xmm4 + movdqa xmm4,XMMWORD PTR 64[ebx] + pxor xmm0,xmm1 + movdqa xmm1,XMMWORD PTR 80[ebx] +DB 102,15,56,0,226 +DB 102,15,56,0,197 +DB 102,15,56,0,203 + pxor xmm0,xmm4 + add edx,16 +DB 102,15,58,15,237,12 + pxor xmm0,xmm1 + sub eax,1 +$L002dec_entry: + movdqa xmm1,xmm6 + movdqa xmm2,XMMWORD PTR [ebp-32] + pandn xmm1,xmm0 + pand xmm0,xmm6 + psrld xmm1,4 +DB 102,15,56,0,208 + movdqa xmm3,xmm7 + pxor xmm0,xmm1 +DB 102,15,56,0,217 + movdqa xmm4,xmm7 + pxor xmm3,xmm2 +DB 102,15,56,0,224 + pxor xmm4,xmm2 + movdqa xmm2,xmm7 +DB 102,15,56,0,211 + movdqa xmm3,xmm7 + pxor xmm2,xmm0 +DB 102,15,56,0,220 + movdqu xmm0,XMMWORD PTR [edx] + pxor xmm3,xmm1 + jnz $L003dec_loop + movdqa xmm4,XMMWORD PTR 96[ebx] +DB 102,15,56,0,226 + pxor xmm4,xmm0 + movdqa xmm0,XMMWORD PTR 112[ebx] + movdqa xmm2,XMMWORD PTR [ecx] +DB 102,15,56,0,195 + pxor xmm0,xmm4 +DB 102,15,56,0,194 + ret +__vpaes_decrypt_core ENDP +ALIGN 16 +__vpaes_schedule_core PROC PRIVATE + add ebp,DWORD PTR [esp] + movdqu xmm0,XMMWORD PTR [esi] + movdqa xmm2,XMMWORD PTR 320[ebp] + movdqa xmm3,xmm0 + lea ebx,DWORD PTR [ebp] + movdqa XMMWORD PTR 4[esp],xmm2 + call __vpaes_schedule_transform + movdqa xmm7,xmm0 + test edi,edi + jnz $L004schedule_am_decrypting + movdqu XMMWORD PTR [edx],xmm0 + jmp $L005schedule_go +$L004schedule_am_decrypting: + movdqa xmm1,XMMWORD PTR 256[ecx*1+ebp] +DB 102,15,56,0,217 + movdqu XMMWORD PTR [edx],xmm3 + xor ecx,48 +$L005schedule_go: + cmp eax,192 + ja $L006schedule_256 + je $L007schedule_192 +$L008schedule_128: + mov eax,10 +$L009loop_schedule_128: + call __vpaes_schedule_round + dec eax + jz $L010schedule_mangle_last + call __vpaes_schedule_mangle + jmp $L009loop_schedule_128 +ALIGN 16 +$L007schedule_192: + movdqu xmm0,XMMWORD PTR 8[esi] + call __vpaes_schedule_transform + movdqa xmm6,xmm0 + pxor xmm4,xmm4 + movhlps xmm6,xmm4 + mov eax,4 +$L011loop_schedule_192: + call __vpaes_schedule_round +DB 102,15,58,15,198,8 + call __vpaes_schedule_mangle + call __vpaes_schedule_192_smear + call __vpaes_schedule_mangle + call __vpaes_schedule_round + dec eax + jz $L010schedule_mangle_last + call __vpaes_schedule_mangle + call __vpaes_schedule_192_smear + jmp $L011loop_schedule_192 +ALIGN 16 +$L006schedule_256: + movdqu xmm0,XMMWORD PTR 16[esi] + call __vpaes_schedule_transform + mov eax,7 +$L012loop_schedule_256: + call __vpaes_schedule_mangle + movdqa xmm6,xmm0 + call __vpaes_schedule_round + dec eax + jz $L010schedule_mangle_last + call __vpaes_schedule_mangle + pshufd xmm0,xmm0,255 + movdqa XMMWORD PTR 20[esp],xmm7 + movdqa xmm7,xmm6 + call $L_vpaes_schedule_low_round + movdqa xmm7,XMMWORD PTR 20[esp] + jmp $L012loop_schedule_256 +ALIGN 16 +$L010schedule_mangle_last: + lea ebx,DWORD PTR 384[ebp] + test edi,edi + jnz $L013schedule_mangle_last_dec + movdqa xmm1,XMMWORD PTR 256[ecx*1+ebp] +DB 102,15,56,0,193 + lea ebx,DWORD PTR 352[ebp] + add edx,32 +$L013schedule_mangle_last_dec: + add edx,-16 + pxor xmm0,XMMWORD PTR 336[ebp] + call __vpaes_schedule_transform + movdqu XMMWORD PTR [edx],xmm0 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + pxor xmm6,xmm6 + pxor xmm7,xmm7 + ret +__vpaes_schedule_core ENDP +ALIGN 16 +__vpaes_schedule_192_smear PROC PRIVATE + pshufd xmm1,xmm6,128 + pshufd xmm0,xmm7,254 + pxor xmm6,xmm1 + pxor xmm1,xmm1 + pxor xmm6,xmm0 + movdqa xmm0,xmm6 + movhlps xmm6,xmm1 + ret +__vpaes_schedule_192_smear ENDP +ALIGN 16 +__vpaes_schedule_round PROC PRIVATE + movdqa xmm2,XMMWORD PTR 8[esp] + pxor xmm1,xmm1 +DB 102,15,58,15,202,15 +DB 102,15,58,15,210,15 + pxor xmm7,xmm1 + pshufd xmm0,xmm0,255 +DB 102,15,58,15,192,1 + movdqa XMMWORD PTR 8[esp],xmm2 +$L_vpaes_schedule_low_round:: + movdqa xmm1,xmm7 + pslldq xmm7,4 + pxor xmm7,xmm1 + movdqa xmm1,xmm7 + pslldq xmm7,8 + pxor xmm7,xmm1 + pxor xmm7,XMMWORD PTR 336[ebp] + movdqa xmm4,XMMWORD PTR [ebp-16] + movdqa xmm5,XMMWORD PTR [ebp-48] + movdqa xmm1,xmm4 + pandn xmm1,xmm0 + psrld xmm1,4 + pand xmm0,xmm4 + movdqa xmm2,XMMWORD PTR [ebp-32] +DB 102,15,56,0,208 + pxor xmm0,xmm1 + movdqa xmm3,xmm5 +DB 102,15,56,0,217 + pxor xmm3,xmm2 + movdqa xmm4,xmm5 +DB 102,15,56,0,224 + pxor xmm4,xmm2 + movdqa xmm2,xmm5 +DB 102,15,56,0,211 + pxor xmm2,xmm0 + movdqa xmm3,xmm5 +DB 102,15,56,0,220 + pxor xmm3,xmm1 + movdqa xmm4,XMMWORD PTR 32[ebp] +DB 102,15,56,0,226 + movdqa xmm0,XMMWORD PTR 48[ebp] +DB 102,15,56,0,195 + pxor xmm0,xmm4 + pxor xmm0,xmm7 + movdqa xmm7,xmm0 + ret +__vpaes_schedule_round ENDP +ALIGN 16 +__vpaes_schedule_transform PROC PRIVATE + movdqa xmm2,XMMWORD PTR [ebp-16] + movdqa xmm1,xmm2 + pandn xmm1,xmm0 + psrld xmm1,4 + pand xmm0,xmm2 + movdqa xmm2,XMMWORD PTR [ebx] +DB 102,15,56,0,208 + movdqa xmm0,XMMWORD PTR 16[ebx] +DB 102,15,56,0,193 + pxor xmm0,xmm2 + ret +__vpaes_schedule_transform ENDP +ALIGN 16 +__vpaes_schedule_mangle PROC PRIVATE + movdqa xmm4,xmm0 + movdqa xmm5,XMMWORD PTR 128[ebp] + test edi,edi + jnz $L014schedule_mangle_dec + add edx,16 + pxor xmm4,XMMWORD PTR 336[ebp] +DB 102,15,56,0,229 + movdqa xmm3,xmm4 +DB 102,15,56,0,229 + pxor xmm3,xmm4 +DB 102,15,56,0,229 + pxor xmm3,xmm4 + jmp $L015schedule_mangle_both +ALIGN 16 +$L014schedule_mangle_dec: + movdqa xmm2,XMMWORD PTR [ebp-16] + lea esi,DWORD PTR 416[ebp] + movdqa xmm1,xmm2 + pandn xmm1,xmm4 + psrld xmm1,4 + pand xmm4,xmm2 + movdqa xmm2,XMMWORD PTR [esi] +DB 102,15,56,0,212 + movdqa xmm3,XMMWORD PTR 16[esi] +DB 102,15,56,0,217 + pxor xmm3,xmm2 +DB 102,15,56,0,221 + movdqa xmm2,XMMWORD PTR 32[esi] +DB 102,15,56,0,212 + pxor xmm2,xmm3 + movdqa xmm3,XMMWORD PTR 48[esi] +DB 102,15,56,0,217 + pxor xmm3,xmm2 +DB 102,15,56,0,221 + movdqa xmm2,XMMWORD PTR 64[esi] +DB 102,15,56,0,212 + pxor xmm2,xmm3 + movdqa xmm3,XMMWORD PTR 80[esi] +DB 102,15,56,0,217 + pxor xmm3,xmm2 +DB 102,15,56,0,221 + movdqa xmm2,XMMWORD PTR 96[esi] +DB 102,15,56,0,212 + pxor xmm2,xmm3 + movdqa xmm3,XMMWORD PTR 112[esi] +DB 102,15,56,0,217 + pxor xmm3,xmm2 + add edx,-16 +$L015schedule_mangle_both: + movdqa xmm1,XMMWORD PTR 256[ecx*1+ebp] +DB 102,15,56,0,217 + add ecx,-16 + and ecx,48 + movdqu XMMWORD PTR [edx],xmm3 + ret +__vpaes_schedule_mangle ENDP +ALIGN 16 +_vpaes_set_encrypt_key PROC PUBLIC +$L_vpaes_set_encrypt_key_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + lea ebx,DWORD PTR [esp-56] + mov eax,DWORD PTR 24[esp] + and ebx,-16 + mov edx,DWORD PTR 28[esp] + xchg ebx,esp + mov DWORD PTR 48[esp],ebx + mov ebx,eax + shr ebx,5 + add ebx,5 + mov DWORD PTR 240[edx],ebx + mov ecx,48 + mov edi,0 + mov ebp,OFFSET ($L_vpaes_consts+030h-$L016pic_point) + call __vpaes_schedule_core +$L016pic_point: + mov esp,DWORD PTR 48[esp] + xor eax,eax + pop edi + pop esi + pop ebx + pop ebp + ret +_vpaes_set_encrypt_key ENDP +ALIGN 16 +_vpaes_set_decrypt_key PROC PUBLIC +$L_vpaes_set_decrypt_key_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + lea ebx,DWORD PTR [esp-56] + mov eax,DWORD PTR 24[esp] + and ebx,-16 + mov edx,DWORD PTR 28[esp] + xchg ebx,esp + mov DWORD PTR 48[esp],ebx + mov ebx,eax + shr ebx,5 + add ebx,5 + mov DWORD PTR 240[edx],ebx + shl ebx,4 + lea edx,DWORD PTR 16[ebx*1+edx] + mov edi,1 + mov ecx,eax + shr ecx,1 + and ecx,32 + xor ecx,32 + mov ebp,OFFSET ($L_vpaes_consts+030h-$L017pic_point) + call __vpaes_schedule_core +$L017pic_point: + mov esp,DWORD PTR 48[esp] + xor eax,eax + pop edi + pop esi + pop ebx + pop ebp + ret +_vpaes_set_decrypt_key ENDP +ALIGN 16 +_vpaes_encrypt PROC PUBLIC +$L_vpaes_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov ebp,OFFSET ($L_vpaes_consts+030h-$L018pic_point) + call __vpaes_preheat +$L018pic_point: + mov esi,DWORD PTR 20[esp] + lea ebx,DWORD PTR [esp-56] + mov edi,DWORD PTR 24[esp] + and ebx,-16 + mov edx,DWORD PTR 28[esp] + xchg ebx,esp + mov DWORD PTR 48[esp],ebx + movdqu xmm0,XMMWORD PTR [esi] + call __vpaes_encrypt_core + movdqu XMMWORD PTR [edi],xmm0 + mov esp,DWORD PTR 48[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +_vpaes_encrypt ENDP +ALIGN 16 +_vpaes_decrypt PROC PUBLIC +$L_vpaes_decrypt_begin:: + push ebp + push ebx + push esi + push edi + mov ebp,OFFSET ($L_vpaes_consts+030h-$L019pic_point) + call __vpaes_preheat +$L019pic_point: + mov esi,DWORD PTR 20[esp] + lea ebx,DWORD PTR [esp-56] + mov edi,DWORD PTR 24[esp] + and ebx,-16 + mov edx,DWORD PTR 28[esp] + xchg ebx,esp + mov DWORD PTR 48[esp],ebx + movdqu xmm0,XMMWORD PTR [esi] + call __vpaes_decrypt_core + movdqu XMMWORD PTR [edi],xmm0 + mov esp,DWORD PTR 48[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +_vpaes_decrypt ENDP +ALIGN 16 +_vpaes_cbc_encrypt PROC PUBLIC +$L_vpaes_cbc_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + sub eax,16 + jc $L020cbc_abort + lea ebx,DWORD PTR [esp-56] + mov ebp,DWORD PTR 36[esp] + and ebx,-16 + mov ecx,DWORD PTR 40[esp] + xchg ebx,esp + movdqu xmm1,XMMWORD PTR [ebp] + sub edi,esi + mov DWORD PTR 48[esp],ebx + mov DWORD PTR [esp],edi + mov DWORD PTR 4[esp],edx + mov DWORD PTR 8[esp],ebp + mov edi,eax + mov ebp,OFFSET ($L_vpaes_consts+030h-$L021pic_point) + call __vpaes_preheat +$L021pic_point: + cmp ecx,0 + je $L022cbc_dec_loop + jmp $L023cbc_enc_loop +ALIGN 16 +$L023cbc_enc_loop: + movdqu xmm0,XMMWORD PTR [esi] + pxor xmm0,xmm1 + call __vpaes_encrypt_core + mov ebx,DWORD PTR [esp] + mov edx,DWORD PTR 4[esp] + movdqa xmm1,xmm0 + movdqu XMMWORD PTR [esi*1+ebx],xmm0 + lea esi,DWORD PTR 16[esi] + sub edi,16 + jnc $L023cbc_enc_loop + jmp $L024cbc_done +ALIGN 16 +$L022cbc_dec_loop: + movdqu xmm0,XMMWORD PTR [esi] + movdqa XMMWORD PTR 16[esp],xmm1 + movdqa XMMWORD PTR 32[esp],xmm0 + call __vpaes_decrypt_core + mov ebx,DWORD PTR [esp] + mov edx,DWORD PTR 4[esp] + pxor xmm0,XMMWORD PTR 16[esp] + movdqa xmm1,XMMWORD PTR 32[esp] + movdqu XMMWORD PTR [esi*1+ebx],xmm0 + lea esi,DWORD PTR 16[esi] + sub edi,16 + jnc $L022cbc_dec_loop +$L024cbc_done: + mov ebx,DWORD PTR 8[esp] + mov esp,DWORD PTR 48[esp] + movdqu XMMWORD PTR [ebx],xmm1 +$L020cbc_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_vpaes_cbc_encrypt ENDP +.text$ ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/bn/x86-gf2m.masm b/contrib/libs/openssl/asm/windows/crypto/bn/x86-gf2m.masm index 837446b32c..7ef239f732 100644 --- a/contrib/libs/openssl/asm/windows/crypto/bn/x86-gf2m.masm +++ b/contrib/libs/openssl/asm/windows/crypto/bn/x86-gf2m.masm @@ -1,360 +1,360 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -;EXTERN _OPENSSL_ia32cap_P:NEAR -ALIGN 16 -__mul_1x1_mmx PROC PRIVATE - sub esp,36 - mov ecx,eax - lea edx,DWORD PTR [eax*1+eax] - and ecx,1073741823 - lea ebp,DWORD PTR [edx*1+edx] - mov DWORD PTR [esp],0 - and edx,2147483647 - movd mm2,eax - movd mm3,ebx - mov DWORD PTR 4[esp],ecx - xor ecx,edx - pxor mm5,mm5 - pxor mm4,mm4 - mov DWORD PTR 8[esp],edx - xor edx,ebp - mov DWORD PTR 12[esp],ecx - pcmpgtd mm5,mm2 - paddd mm2,mm2 - xor ecx,edx - mov DWORD PTR 16[esp],ebp - xor ebp,edx - pand mm5,mm3 - pcmpgtd mm4,mm2 - mov DWORD PTR 20[esp],ecx - xor ebp,ecx - psllq mm5,31 - pand mm4,mm3 - mov DWORD PTR 24[esp],edx - mov esi,7 - mov DWORD PTR 28[esp],ebp - mov ebp,esi - and esi,ebx - shr ebx,3 - mov edi,ebp - psllq mm4,30 - and edi,ebx - shr ebx,3 - movd mm0,DWORD PTR [esi*4+esp] - mov esi,ebp - and esi,ebx - shr ebx,3 - movd mm2,DWORD PTR [edi*4+esp] - mov edi,ebp - psllq mm2,3 - and edi,ebx - shr ebx,3 - pxor mm0,mm2 - movd mm1,DWORD PTR [esi*4+esp] - mov esi,ebp - psllq mm1,6 - and esi,ebx - shr ebx,3 - pxor mm0,mm1 - movd mm2,DWORD PTR [edi*4+esp] - mov edi,ebp - psllq mm2,9 - and edi,ebx - shr ebx,3 - pxor mm0,mm2 - movd mm1,DWORD PTR [esi*4+esp] - mov esi,ebp - psllq mm1,12 - and esi,ebx - shr ebx,3 - pxor mm0,mm1 - movd mm2,DWORD PTR [edi*4+esp] - mov edi,ebp - psllq mm2,15 - and edi,ebx - shr ebx,3 - pxor mm0,mm2 - movd mm1,DWORD PTR [esi*4+esp] - mov esi,ebp - psllq mm1,18 - and esi,ebx - shr ebx,3 - pxor mm0,mm1 - movd mm2,DWORD PTR [edi*4+esp] - mov edi,ebp - psllq mm2,21 - and edi,ebx - shr ebx,3 - pxor mm0,mm2 - movd mm1,DWORD PTR [esi*4+esp] - mov esi,ebp - psllq mm1,24 - and esi,ebx - shr ebx,3 - pxor mm0,mm1 - movd mm2,DWORD PTR [edi*4+esp] - pxor mm0,mm4 - psllq mm2,27 - pxor mm0,mm2 - movd mm1,DWORD PTR [esi*4+esp] - pxor mm0,mm5 - psllq mm1,30 - add esp,36 - pxor mm0,mm1 - ret -__mul_1x1_mmx ENDP -ALIGN 16 -__mul_1x1_ialu PROC PRIVATE - sub esp,36 - mov ecx,eax - lea edx,DWORD PTR [eax*1+eax] - lea ebp,DWORD PTR [eax*4] - and ecx,1073741823 - lea edi,DWORD PTR [eax*1+eax] - sar eax,31 - mov DWORD PTR [esp],0 - and edx,2147483647 - mov DWORD PTR 4[esp],ecx - xor ecx,edx - mov DWORD PTR 8[esp],edx - xor edx,ebp - mov DWORD PTR 12[esp],ecx - xor ecx,edx - mov DWORD PTR 16[esp],ebp - xor ebp,edx - mov DWORD PTR 20[esp],ecx - xor ebp,ecx - sar edi,31 - and eax,ebx - mov DWORD PTR 24[esp],edx - and edi,ebx - mov DWORD PTR 28[esp],ebp - mov edx,eax - shl eax,31 - mov ecx,edi - shr edx,1 - mov esi,7 - shl edi,30 - and esi,ebx - shr ecx,2 - xor eax,edi - shr ebx,3 - mov edi,7 - and edi,ebx - shr ebx,3 - xor edx,ecx - xor eax,DWORD PTR [esi*4+esp] - mov esi,7 - and esi,ebx - shr ebx,3 - mov ebp,DWORD PTR [edi*4+esp] - mov edi,7 - mov ecx,ebp - shl ebp,3 - and edi,ebx - shr ecx,29 - xor eax,ebp - shr ebx,3 - xor edx,ecx - mov ecx,DWORD PTR [esi*4+esp] - mov esi,7 - mov ebp,ecx - shl ecx,6 - and esi,ebx - shr ebp,26 - xor eax,ecx - shr ebx,3 - xor edx,ebp - mov ebp,DWORD PTR [edi*4+esp] - mov edi,7 - mov ecx,ebp - shl ebp,9 - and edi,ebx - shr ecx,23 - xor eax,ebp - shr ebx,3 - xor edx,ecx - mov ecx,DWORD PTR [esi*4+esp] - mov esi,7 - mov ebp,ecx - shl ecx,12 - and esi,ebx - shr ebp,20 - xor eax,ecx - shr ebx,3 - xor edx,ebp - mov ebp,DWORD PTR [edi*4+esp] - mov edi,7 - mov ecx,ebp - shl ebp,15 - and edi,ebx - shr ecx,17 - xor eax,ebp - shr ebx,3 - xor edx,ecx - mov ecx,DWORD PTR [esi*4+esp] - mov esi,7 - mov ebp,ecx - shl ecx,18 - and esi,ebx - shr ebp,14 - xor eax,ecx - shr ebx,3 - xor edx,ebp - mov ebp,DWORD PTR [edi*4+esp] - mov edi,7 - mov ecx,ebp - shl ebp,21 - and edi,ebx - shr ecx,11 - xor eax,ebp - shr ebx,3 - xor edx,ecx - mov ecx,DWORD PTR [esi*4+esp] - mov esi,7 - mov ebp,ecx - shl ecx,24 - and esi,ebx - shr ebp,8 - xor eax,ecx - shr ebx,3 - xor edx,ebp - mov ebp,DWORD PTR [edi*4+esp] - mov ecx,ebp - shl ebp,27 - mov edi,DWORD PTR [esi*4+esp] - shr ecx,5 - mov esi,edi - xor eax,ebp - shl edi,30 - xor edx,ecx - shr esi,2 - xor eax,edi - xor edx,esi - add esp,36 - ret -__mul_1x1_ialu ENDP -ALIGN 16 -_bn_GF2m_mul_2x2 PROC PUBLIC -$L_bn_GF2m_mul_2x2_begin:: - lea edx,DWORD PTR _OPENSSL_ia32cap_P - mov eax,DWORD PTR [edx] - mov edx,DWORD PTR 4[edx] - test eax,8388608 - jz $L000ialu - test eax,16777216 - jz $L001mmx - test edx,2 - jz $L001mmx - movups xmm0,XMMWORD PTR 8[esp] - shufps xmm0,xmm0,177 -DB 102,15,58,68,192,1 - mov eax,DWORD PTR 4[esp] - movups XMMWORD PTR [eax],xmm0 - ret -ALIGN 16 -$L001mmx: - push ebp - push ebx - push esi - push edi - mov eax,DWORD PTR 24[esp] - mov ebx,DWORD PTR 32[esp] - call __mul_1x1_mmx - movq mm7,mm0 - mov eax,DWORD PTR 28[esp] - mov ebx,DWORD PTR 36[esp] - call __mul_1x1_mmx - movq mm6,mm0 - mov eax,DWORD PTR 24[esp] - mov ebx,DWORD PTR 32[esp] - xor eax,DWORD PTR 28[esp] - xor ebx,DWORD PTR 36[esp] - call __mul_1x1_mmx - pxor mm0,mm7 - mov eax,DWORD PTR 20[esp] - pxor mm0,mm6 - movq mm2,mm0 - psllq mm0,32 - pop edi - psrlq mm2,32 - pop esi - pxor mm0,mm6 - pop ebx - pxor mm2,mm7 - movq QWORD PTR [eax],mm0 - pop ebp - movq QWORD PTR 8[eax],mm2 - emms - ret -ALIGN 16 -$L000ialu: - push ebp - push ebx - push esi - push edi - sub esp,20 - mov eax,DWORD PTR 44[esp] - mov ebx,DWORD PTR 52[esp] - call __mul_1x1_ialu - mov DWORD PTR 8[esp],eax - mov DWORD PTR 12[esp],edx - mov eax,DWORD PTR 48[esp] - mov ebx,DWORD PTR 56[esp] - call __mul_1x1_ialu - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],edx - mov eax,DWORD PTR 44[esp] - mov ebx,DWORD PTR 52[esp] - xor eax,DWORD PTR 48[esp] - xor ebx,DWORD PTR 56[esp] - call __mul_1x1_ialu - mov ebp,DWORD PTR 40[esp] - mov ebx,DWORD PTR [esp] - mov ecx,DWORD PTR 4[esp] - mov edi,DWORD PTR 8[esp] - mov esi,DWORD PTR 12[esp] - xor eax,edx - xor edx,ecx - xor eax,ebx - mov DWORD PTR [ebp],ebx - xor edx,edi - mov DWORD PTR 12[ebp],esi - xor eax,esi - add esp,20 - xor edx,esi - pop edi - xor eax,edx - pop esi - mov DWORD PTR 8[ebp],edx - pop ebx - mov DWORD PTR 4[ebp],eax - pop ebp - ret -_bn_GF2m_mul_2x2 ENDP -DB 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105 -DB 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32 -DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 -DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 -DB 62,0 -.text$ ENDS -.bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:DWORD:4 -.bss ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +;EXTERN _OPENSSL_ia32cap_P:NEAR +ALIGN 16 +__mul_1x1_mmx PROC PRIVATE + sub esp,36 + mov ecx,eax + lea edx,DWORD PTR [eax*1+eax] + and ecx,1073741823 + lea ebp,DWORD PTR [edx*1+edx] + mov DWORD PTR [esp],0 + and edx,2147483647 + movd mm2,eax + movd mm3,ebx + mov DWORD PTR 4[esp],ecx + xor ecx,edx + pxor mm5,mm5 + pxor mm4,mm4 + mov DWORD PTR 8[esp],edx + xor edx,ebp + mov DWORD PTR 12[esp],ecx + pcmpgtd mm5,mm2 + paddd mm2,mm2 + xor ecx,edx + mov DWORD PTR 16[esp],ebp + xor ebp,edx + pand mm5,mm3 + pcmpgtd mm4,mm2 + mov DWORD PTR 20[esp],ecx + xor ebp,ecx + psllq mm5,31 + pand mm4,mm3 + mov DWORD PTR 24[esp],edx + mov esi,7 + mov DWORD PTR 28[esp],ebp + mov ebp,esi + and esi,ebx + shr ebx,3 + mov edi,ebp + psllq mm4,30 + and edi,ebx + shr ebx,3 + movd mm0,DWORD PTR [esi*4+esp] + mov esi,ebp + and esi,ebx + shr ebx,3 + movd mm2,DWORD PTR [edi*4+esp] + mov edi,ebp + psllq mm2,3 + and edi,ebx + shr ebx,3 + pxor mm0,mm2 + movd mm1,DWORD PTR [esi*4+esp] + mov esi,ebp + psllq mm1,6 + and esi,ebx + shr ebx,3 + pxor mm0,mm1 + movd mm2,DWORD PTR [edi*4+esp] + mov edi,ebp + psllq mm2,9 + and edi,ebx + shr ebx,3 + pxor mm0,mm2 + movd mm1,DWORD PTR [esi*4+esp] + mov esi,ebp + psllq mm1,12 + and esi,ebx + shr ebx,3 + pxor mm0,mm1 + movd mm2,DWORD PTR [edi*4+esp] + mov edi,ebp + psllq mm2,15 + and edi,ebx + shr ebx,3 + pxor mm0,mm2 + movd mm1,DWORD PTR [esi*4+esp] + mov esi,ebp + psllq mm1,18 + and esi,ebx + shr ebx,3 + pxor mm0,mm1 + movd mm2,DWORD PTR [edi*4+esp] + mov edi,ebp + psllq mm2,21 + and edi,ebx + shr ebx,3 + pxor mm0,mm2 + movd mm1,DWORD PTR [esi*4+esp] + mov esi,ebp + psllq mm1,24 + and esi,ebx + shr ebx,3 + pxor mm0,mm1 + movd mm2,DWORD PTR [edi*4+esp] + pxor mm0,mm4 + psllq mm2,27 + pxor mm0,mm2 + movd mm1,DWORD PTR [esi*4+esp] + pxor mm0,mm5 + psllq mm1,30 + add esp,36 + pxor mm0,mm1 + ret +__mul_1x1_mmx ENDP +ALIGN 16 +__mul_1x1_ialu PROC PRIVATE + sub esp,36 + mov ecx,eax + lea edx,DWORD PTR [eax*1+eax] + lea ebp,DWORD PTR [eax*4] + and ecx,1073741823 + lea edi,DWORD PTR [eax*1+eax] + sar eax,31 + mov DWORD PTR [esp],0 + and edx,2147483647 + mov DWORD PTR 4[esp],ecx + xor ecx,edx + mov DWORD PTR 8[esp],edx + xor edx,ebp + mov DWORD PTR 12[esp],ecx + xor ecx,edx + mov DWORD PTR 16[esp],ebp + xor ebp,edx + mov DWORD PTR 20[esp],ecx + xor ebp,ecx + sar edi,31 + and eax,ebx + mov DWORD PTR 24[esp],edx + and edi,ebx + mov DWORD PTR 28[esp],ebp + mov edx,eax + shl eax,31 + mov ecx,edi + shr edx,1 + mov esi,7 + shl edi,30 + and esi,ebx + shr ecx,2 + xor eax,edi + shr ebx,3 + mov edi,7 + and edi,ebx + shr ebx,3 + xor edx,ecx + xor eax,DWORD PTR [esi*4+esp] + mov esi,7 + and esi,ebx + shr ebx,3 + mov ebp,DWORD PTR [edi*4+esp] + mov edi,7 + mov ecx,ebp + shl ebp,3 + and edi,ebx + shr ecx,29 + xor eax,ebp + shr ebx,3 + xor edx,ecx + mov ecx,DWORD PTR [esi*4+esp] + mov esi,7 + mov ebp,ecx + shl ecx,6 + and esi,ebx + shr ebp,26 + xor eax,ecx + shr ebx,3 + xor edx,ebp + mov ebp,DWORD PTR [edi*4+esp] + mov edi,7 + mov ecx,ebp + shl ebp,9 + and edi,ebx + shr ecx,23 + xor eax,ebp + shr ebx,3 + xor edx,ecx + mov ecx,DWORD PTR [esi*4+esp] + mov esi,7 + mov ebp,ecx + shl ecx,12 + and esi,ebx + shr ebp,20 + xor eax,ecx + shr ebx,3 + xor edx,ebp + mov ebp,DWORD PTR [edi*4+esp] + mov edi,7 + mov ecx,ebp + shl ebp,15 + and edi,ebx + shr ecx,17 + xor eax,ebp + shr ebx,3 + xor edx,ecx + mov ecx,DWORD PTR [esi*4+esp] + mov esi,7 + mov ebp,ecx + shl ecx,18 + and esi,ebx + shr ebp,14 + xor eax,ecx + shr ebx,3 + xor edx,ebp + mov ebp,DWORD PTR [edi*4+esp] + mov edi,7 + mov ecx,ebp + shl ebp,21 + and edi,ebx + shr ecx,11 + xor eax,ebp + shr ebx,3 + xor edx,ecx + mov ecx,DWORD PTR [esi*4+esp] + mov esi,7 + mov ebp,ecx + shl ecx,24 + and esi,ebx + shr ebp,8 + xor eax,ecx + shr ebx,3 + xor edx,ebp + mov ebp,DWORD PTR [edi*4+esp] + mov ecx,ebp + shl ebp,27 + mov edi,DWORD PTR [esi*4+esp] + shr ecx,5 + mov esi,edi + xor eax,ebp + shl edi,30 + xor edx,ecx + shr esi,2 + xor eax,edi + xor edx,esi + add esp,36 + ret +__mul_1x1_ialu ENDP +ALIGN 16 +_bn_GF2m_mul_2x2 PROC PUBLIC +$L_bn_GF2m_mul_2x2_begin:: + lea edx,DWORD PTR _OPENSSL_ia32cap_P + mov eax,DWORD PTR [edx] + mov edx,DWORD PTR 4[edx] + test eax,8388608 + jz $L000ialu + test eax,16777216 + jz $L001mmx + test edx,2 + jz $L001mmx + movups xmm0,XMMWORD PTR 8[esp] + shufps xmm0,xmm0,177 +DB 102,15,58,68,192,1 + mov eax,DWORD PTR 4[esp] + movups XMMWORD PTR [eax],xmm0 + ret +ALIGN 16 +$L001mmx: + push ebp + push ebx + push esi + push edi + mov eax,DWORD PTR 24[esp] + mov ebx,DWORD PTR 32[esp] + call __mul_1x1_mmx + movq mm7,mm0 + mov eax,DWORD PTR 28[esp] + mov ebx,DWORD PTR 36[esp] + call __mul_1x1_mmx + movq mm6,mm0 + mov eax,DWORD PTR 24[esp] + mov ebx,DWORD PTR 32[esp] + xor eax,DWORD PTR 28[esp] + xor ebx,DWORD PTR 36[esp] + call __mul_1x1_mmx + pxor mm0,mm7 + mov eax,DWORD PTR 20[esp] + pxor mm0,mm6 + movq mm2,mm0 + psllq mm0,32 + pop edi + psrlq mm2,32 + pop esi + pxor mm0,mm6 + pop ebx + pxor mm2,mm7 + movq QWORD PTR [eax],mm0 + pop ebp + movq QWORD PTR 8[eax],mm2 + emms + ret +ALIGN 16 +$L000ialu: + push ebp + push ebx + push esi + push edi + sub esp,20 + mov eax,DWORD PTR 44[esp] + mov ebx,DWORD PTR 52[esp] + call __mul_1x1_ialu + mov DWORD PTR 8[esp],eax + mov DWORD PTR 12[esp],edx + mov eax,DWORD PTR 48[esp] + mov ebx,DWORD PTR 56[esp] + call __mul_1x1_ialu + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],edx + mov eax,DWORD PTR 44[esp] + mov ebx,DWORD PTR 52[esp] + xor eax,DWORD PTR 48[esp] + xor ebx,DWORD PTR 56[esp] + call __mul_1x1_ialu + mov ebp,DWORD PTR 40[esp] + mov ebx,DWORD PTR [esp] + mov ecx,DWORD PTR 4[esp] + mov edi,DWORD PTR 8[esp] + mov esi,DWORD PTR 12[esp] + xor eax,edx + xor edx,ecx + xor eax,ebx + mov DWORD PTR [ebp],ebx + xor edx,edi + mov DWORD PTR 12[ebp],esi + xor eax,esi + add esp,20 + xor edx,esi + pop edi + xor eax,edx + pop esi + mov DWORD PTR 8[ebp],edx + pop ebx + mov DWORD PTR 4[ebp],eax + pop ebp + ret +_bn_GF2m_mul_2x2 ENDP +DB 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105 +DB 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32 +DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 +DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 +DB 62,0 +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/bn/x86-mont.masm b/contrib/libs/openssl/asm/windows/crypto/bn/x86-mont.masm index d47d1f849d..531d23280a 100644 --- a/contrib/libs/openssl/asm/windows/crypto/bn/x86-mont.masm +++ b/contrib/libs/openssl/asm/windows/crypto/bn/x86-mont.masm @@ -1,492 +1,492 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -;EXTERN _OPENSSL_ia32cap_P:NEAR -ALIGN 16 -_bn_mul_mont PROC PUBLIC -$L_bn_mul_mont_begin:: - push ebp - push ebx - push esi - push edi - xor eax,eax - mov edi,DWORD PTR 40[esp] - cmp edi,4 - jl $L000just_leave - lea esi,DWORD PTR 20[esp] - lea edx,DWORD PTR 24[esp] - add edi,2 - neg edi - lea ebp,DWORD PTR [edi*4+esp-32] - neg edi - mov eax,ebp - sub eax,edx - and eax,2047 - sub ebp,eax - xor edx,ebp - and edx,2048 - xor edx,2048 - sub ebp,edx - and ebp,-64 - mov eax,esp - sub eax,ebp - and eax,-4096 - mov edx,esp - lea esp,DWORD PTR [eax*1+ebp] - mov eax,DWORD PTR [esp] - cmp esp,ebp - ja $L001page_walk - jmp $L002page_walk_done -ALIGN 16 -$L001page_walk: - lea esp,DWORD PTR [esp-4096] - mov eax,DWORD PTR [esp] - cmp esp,ebp - ja $L001page_walk -$L002page_walk_done: - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov ebp,DWORD PTR 12[esi] - mov esi,DWORD PTR 16[esi] - mov esi,DWORD PTR [esi] - mov DWORD PTR 4[esp],eax - mov DWORD PTR 8[esp],ebx - mov DWORD PTR 12[esp],ecx - mov DWORD PTR 16[esp],ebp - mov DWORD PTR 20[esp],esi - lea ebx,DWORD PTR [edi-3] - mov DWORD PTR 24[esp],edx - lea eax,DWORD PTR _OPENSSL_ia32cap_P - bt DWORD PTR [eax],26 - jnc $L003non_sse2 - mov eax,-1 - movd mm7,eax - mov esi,DWORD PTR 8[esp] - mov edi,DWORD PTR 12[esp] - mov ebp,DWORD PTR 16[esp] - xor edx,edx - xor ecx,ecx - movd mm4,DWORD PTR [edi] - movd mm5,DWORD PTR [esi] - movd mm3,DWORD PTR [ebp] - pmuludq mm5,mm4 - movq mm2,mm5 - movq mm0,mm5 - pand mm0,mm7 - pmuludq mm5,QWORD PTR 20[esp] - pmuludq mm3,mm5 - paddq mm3,mm0 - movd mm1,DWORD PTR 4[ebp] - movd mm0,DWORD PTR 4[esi] - psrlq mm2,32 - psrlq mm3,32 - inc ecx -ALIGN 16 -$L0041st: - pmuludq mm0,mm4 - pmuludq mm1,mm5 - paddq mm2,mm0 - paddq mm3,mm1 - movq mm0,mm2 - pand mm0,mm7 - movd mm1,DWORD PTR 4[ecx*4+ebp] - paddq mm3,mm0 - movd mm0,DWORD PTR 4[ecx*4+esi] - psrlq mm2,32 - movd DWORD PTR 28[ecx*4+esp],mm3 - psrlq mm3,32 - lea ecx,DWORD PTR 1[ecx] - cmp ecx,ebx - jl $L0041st - pmuludq mm0,mm4 - pmuludq mm1,mm5 - paddq mm2,mm0 - paddq mm3,mm1 - movq mm0,mm2 - pand mm0,mm7 - paddq mm3,mm0 - movd DWORD PTR 28[ecx*4+esp],mm3 - psrlq mm2,32 - psrlq mm3,32 - paddq mm3,mm2 - movq QWORD PTR 32[ebx*4+esp],mm3 - inc edx -$L005outer: - xor ecx,ecx - movd mm4,DWORD PTR [edx*4+edi] - movd mm5,DWORD PTR [esi] - movd mm6,DWORD PTR 32[esp] - movd mm3,DWORD PTR [ebp] - pmuludq mm5,mm4 - paddq mm5,mm6 - movq mm0,mm5 - movq mm2,mm5 - pand mm0,mm7 - pmuludq mm5,QWORD PTR 20[esp] - pmuludq mm3,mm5 - paddq mm3,mm0 - movd mm6,DWORD PTR 36[esp] - movd mm1,DWORD PTR 4[ebp] - movd mm0,DWORD PTR 4[esi] - psrlq mm2,32 - psrlq mm3,32 - paddq mm2,mm6 - inc ecx - dec ebx -$L006inner: - pmuludq mm0,mm4 - pmuludq mm1,mm5 - paddq mm2,mm0 - paddq mm3,mm1 - movq mm0,mm2 - movd mm6,DWORD PTR 36[ecx*4+esp] - pand mm0,mm7 - movd mm1,DWORD PTR 4[ecx*4+ebp] - paddq mm3,mm0 - movd mm0,DWORD PTR 4[ecx*4+esi] - psrlq mm2,32 - movd DWORD PTR 28[ecx*4+esp],mm3 - psrlq mm3,32 - paddq mm2,mm6 - dec ebx - lea ecx,DWORD PTR 1[ecx] - jnz $L006inner - mov ebx,ecx - pmuludq mm0,mm4 - pmuludq mm1,mm5 - paddq mm2,mm0 - paddq mm3,mm1 - movq mm0,mm2 - pand mm0,mm7 - paddq mm3,mm0 - movd DWORD PTR 28[ecx*4+esp],mm3 - psrlq mm2,32 - psrlq mm3,32 - movd mm6,DWORD PTR 36[ebx*4+esp] - paddq mm3,mm2 - paddq mm3,mm6 - movq QWORD PTR 32[ebx*4+esp],mm3 - lea edx,DWORD PTR 1[edx] - cmp edx,ebx - jle $L005outer - emms - jmp $L007common_tail -ALIGN 16 -$L003non_sse2: - mov esi,DWORD PTR 8[esp] - lea ebp,DWORD PTR 1[ebx] - mov edi,DWORD PTR 12[esp] - xor ecx,ecx - mov edx,esi - and ebp,1 - sub edx,edi - lea eax,DWORD PTR 4[ebx*4+edi] - or ebp,edx - mov edi,DWORD PTR [edi] - jz $L008bn_sqr_mont - mov DWORD PTR 28[esp],eax - mov eax,DWORD PTR [esi] - xor edx,edx -ALIGN 16 -$L009mull: - mov ebp,edx - mul edi - add ebp,eax - lea ecx,DWORD PTR 1[ecx] - adc edx,0 - mov eax,DWORD PTR [ecx*4+esi] - cmp ecx,ebx - mov DWORD PTR 28[ecx*4+esp],ebp - jl $L009mull - mov ebp,edx - mul edi - mov edi,DWORD PTR 20[esp] - add eax,ebp - mov esi,DWORD PTR 16[esp] - adc edx,0 - imul edi,DWORD PTR 32[esp] - mov DWORD PTR 32[ebx*4+esp],eax - xor ecx,ecx - mov DWORD PTR 36[ebx*4+esp],edx - mov DWORD PTR 40[ebx*4+esp],ecx - mov eax,DWORD PTR [esi] - mul edi - add eax,DWORD PTR 32[esp] - mov eax,DWORD PTR 4[esi] - adc edx,0 - inc ecx - jmp $L0102ndmadd -ALIGN 16 -$L0111stmadd: - mov ebp,edx - mul edi - add ebp,DWORD PTR 32[ecx*4+esp] - lea ecx,DWORD PTR 1[ecx] - adc edx,0 - add ebp,eax - mov eax,DWORD PTR [ecx*4+esi] - adc edx,0 - cmp ecx,ebx - mov DWORD PTR 28[ecx*4+esp],ebp - jl $L0111stmadd - mov ebp,edx - mul edi - add eax,DWORD PTR 32[ebx*4+esp] - mov edi,DWORD PTR 20[esp] - adc edx,0 - mov esi,DWORD PTR 16[esp] - add ebp,eax - adc edx,0 - imul edi,DWORD PTR 32[esp] - xor ecx,ecx - add edx,DWORD PTR 36[ebx*4+esp] - mov DWORD PTR 32[ebx*4+esp],ebp - adc ecx,0 - mov eax,DWORD PTR [esi] - mov DWORD PTR 36[ebx*4+esp],edx - mov DWORD PTR 40[ebx*4+esp],ecx - mul edi - add eax,DWORD PTR 32[esp] - mov eax,DWORD PTR 4[esi] - adc edx,0 - mov ecx,1 -ALIGN 16 -$L0102ndmadd: - mov ebp,edx - mul edi - add ebp,DWORD PTR 32[ecx*4+esp] - lea ecx,DWORD PTR 1[ecx] - adc edx,0 - add ebp,eax - mov eax,DWORD PTR [ecx*4+esi] - adc edx,0 - cmp ecx,ebx - mov DWORD PTR 24[ecx*4+esp],ebp - jl $L0102ndmadd - mov ebp,edx - mul edi - add ebp,DWORD PTR 32[ebx*4+esp] - adc edx,0 - add ebp,eax - adc edx,0 - mov DWORD PTR 28[ebx*4+esp],ebp - xor eax,eax - mov ecx,DWORD PTR 12[esp] - add edx,DWORD PTR 36[ebx*4+esp] - adc eax,DWORD PTR 40[ebx*4+esp] - lea ecx,DWORD PTR 4[ecx] - mov DWORD PTR 32[ebx*4+esp],edx - cmp ecx,DWORD PTR 28[esp] - mov DWORD PTR 36[ebx*4+esp],eax - je $L007common_tail - mov edi,DWORD PTR [ecx] - mov esi,DWORD PTR 8[esp] - mov DWORD PTR 12[esp],ecx - xor ecx,ecx - xor edx,edx - mov eax,DWORD PTR [esi] - jmp $L0111stmadd -ALIGN 16 -$L008bn_sqr_mont: - mov DWORD PTR [esp],ebx - mov DWORD PTR 12[esp],ecx - mov eax,edi - mul edi - mov DWORD PTR 32[esp],eax - mov ebx,edx - shr edx,1 - and ebx,1 - inc ecx -ALIGN 16 -$L012sqr: - mov eax,DWORD PTR [ecx*4+esi] - mov ebp,edx - mul edi - add eax,ebp - lea ecx,DWORD PTR 1[ecx] - adc edx,0 - lea ebp,DWORD PTR [eax*2+ebx] - shr eax,31 - cmp ecx,DWORD PTR [esp] - mov ebx,eax - mov DWORD PTR 28[ecx*4+esp],ebp - jl $L012sqr - mov eax,DWORD PTR [ecx*4+esi] - mov ebp,edx - mul edi - add eax,ebp - mov edi,DWORD PTR 20[esp] - adc edx,0 - mov esi,DWORD PTR 16[esp] - lea ebp,DWORD PTR [eax*2+ebx] - imul edi,DWORD PTR 32[esp] - shr eax,31 - mov DWORD PTR 32[ecx*4+esp],ebp - lea ebp,DWORD PTR [edx*2+eax] - mov eax,DWORD PTR [esi] - shr edx,31 - mov DWORD PTR 36[ecx*4+esp],ebp - mov DWORD PTR 40[ecx*4+esp],edx - mul edi - add eax,DWORD PTR 32[esp] - mov ebx,ecx - adc edx,0 - mov eax,DWORD PTR 4[esi] - mov ecx,1 -ALIGN 16 -$L0133rdmadd: - mov ebp,edx - mul edi - add ebp,DWORD PTR 32[ecx*4+esp] - adc edx,0 - add ebp,eax - mov eax,DWORD PTR 4[ecx*4+esi] - adc edx,0 - mov DWORD PTR 28[ecx*4+esp],ebp - mov ebp,edx - mul edi - add ebp,DWORD PTR 36[ecx*4+esp] - lea ecx,DWORD PTR 2[ecx] - adc edx,0 - add ebp,eax - mov eax,DWORD PTR [ecx*4+esi] - adc edx,0 - cmp ecx,ebx - mov DWORD PTR 24[ecx*4+esp],ebp - jl $L0133rdmadd - mov ebp,edx - mul edi - add ebp,DWORD PTR 32[ebx*4+esp] - adc edx,0 - add ebp,eax - adc edx,0 - mov DWORD PTR 28[ebx*4+esp],ebp - mov ecx,DWORD PTR 12[esp] - xor eax,eax - mov esi,DWORD PTR 8[esp] - add edx,DWORD PTR 36[ebx*4+esp] - adc eax,DWORD PTR 40[ebx*4+esp] - mov DWORD PTR 32[ebx*4+esp],edx - cmp ecx,ebx - mov DWORD PTR 36[ebx*4+esp],eax - je $L007common_tail - mov edi,DWORD PTR 4[ecx*4+esi] - lea ecx,DWORD PTR 1[ecx] - mov eax,edi - mov DWORD PTR 12[esp],ecx - mul edi - add eax,DWORD PTR 32[ecx*4+esp] - adc edx,0 - mov DWORD PTR 32[ecx*4+esp],eax - xor ebp,ebp - cmp ecx,ebx - lea ecx,DWORD PTR 1[ecx] - je $L014sqrlast - mov ebx,edx - shr edx,1 - and ebx,1 -ALIGN 16 -$L015sqradd: - mov eax,DWORD PTR [ecx*4+esi] - mov ebp,edx - mul edi - add eax,ebp - lea ebp,DWORD PTR [eax*1+eax] - adc edx,0 - shr eax,31 - add ebp,DWORD PTR 32[ecx*4+esp] - lea ecx,DWORD PTR 1[ecx] - adc eax,0 - add ebp,ebx - adc eax,0 - cmp ecx,DWORD PTR [esp] - mov DWORD PTR 28[ecx*4+esp],ebp - mov ebx,eax - jle $L015sqradd - mov ebp,edx - add edx,edx - shr ebp,31 - add edx,ebx - adc ebp,0 -$L014sqrlast: - mov edi,DWORD PTR 20[esp] - mov esi,DWORD PTR 16[esp] - imul edi,DWORD PTR 32[esp] - add edx,DWORD PTR 32[ecx*4+esp] - mov eax,DWORD PTR [esi] - adc ebp,0 - mov DWORD PTR 32[ecx*4+esp],edx - mov DWORD PTR 36[ecx*4+esp],ebp - mul edi - add eax,DWORD PTR 32[esp] - lea ebx,DWORD PTR [ecx-1] - adc edx,0 - mov ecx,1 - mov eax,DWORD PTR 4[esi] - jmp $L0133rdmadd -ALIGN 16 -$L007common_tail: - mov ebp,DWORD PTR 16[esp] - mov edi,DWORD PTR 4[esp] - lea esi,DWORD PTR 32[esp] - mov eax,DWORD PTR [esi] - mov ecx,ebx - xor edx,edx -ALIGN 16 -$L016sub: - sbb eax,DWORD PTR [edx*4+ebp] - mov DWORD PTR [edx*4+edi],eax - dec ecx - mov eax,DWORD PTR 4[edx*4+esi] - lea edx,DWORD PTR 1[edx] - jge $L016sub - sbb eax,0 - mov edx,-1 - xor edx,eax - jmp $L017copy -ALIGN 16 -$L017copy: - mov esi,DWORD PTR 32[ebx*4+esp] - mov ebp,DWORD PTR [ebx*4+edi] - mov DWORD PTR 32[ebx*4+esp],ecx - and esi,eax - and ebp,edx - or ebp,esi - mov DWORD PTR [ebx*4+edi],ebp - dec ebx - jge $L017copy - mov esp,DWORD PTR 24[esp] - mov eax,1 -$L000just_leave: - pop edi - pop esi - pop ebx - pop ebp - ret -_bn_mul_mont ENDP -DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 -DB 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 -DB 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 -DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 -DB 111,114,103,62,0 -.text$ ENDS -.bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:DWORD:4 -.bss ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +;EXTERN _OPENSSL_ia32cap_P:NEAR +ALIGN 16 +_bn_mul_mont PROC PUBLIC +$L_bn_mul_mont_begin:: + push ebp + push ebx + push esi + push edi + xor eax,eax + mov edi,DWORD PTR 40[esp] + cmp edi,4 + jl $L000just_leave + lea esi,DWORD PTR 20[esp] + lea edx,DWORD PTR 24[esp] + add edi,2 + neg edi + lea ebp,DWORD PTR [edi*4+esp-32] + neg edi + mov eax,ebp + sub eax,edx + and eax,2047 + sub ebp,eax + xor edx,ebp + and edx,2048 + xor edx,2048 + sub ebp,edx + and ebp,-64 + mov eax,esp + sub eax,ebp + and eax,-4096 + mov edx,esp + lea esp,DWORD PTR [eax*1+ebp] + mov eax,DWORD PTR [esp] + cmp esp,ebp + ja $L001page_walk + jmp $L002page_walk_done +ALIGN 16 +$L001page_walk: + lea esp,DWORD PTR [esp-4096] + mov eax,DWORD PTR [esp] + cmp esp,ebp + ja $L001page_walk +$L002page_walk_done: + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov ebp,DWORD PTR 12[esi] + mov esi,DWORD PTR 16[esi] + mov esi,DWORD PTR [esi] + mov DWORD PTR 4[esp],eax + mov DWORD PTR 8[esp],ebx + mov DWORD PTR 12[esp],ecx + mov DWORD PTR 16[esp],ebp + mov DWORD PTR 20[esp],esi + lea ebx,DWORD PTR [edi-3] + mov DWORD PTR 24[esp],edx + lea eax,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [eax],26 + jnc $L003non_sse2 + mov eax,-1 + movd mm7,eax + mov esi,DWORD PTR 8[esp] + mov edi,DWORD PTR 12[esp] + mov ebp,DWORD PTR 16[esp] + xor edx,edx + xor ecx,ecx + movd mm4,DWORD PTR [edi] + movd mm5,DWORD PTR [esi] + movd mm3,DWORD PTR [ebp] + pmuludq mm5,mm4 + movq mm2,mm5 + movq mm0,mm5 + pand mm0,mm7 + pmuludq mm5,QWORD PTR 20[esp] + pmuludq mm3,mm5 + paddq mm3,mm0 + movd mm1,DWORD PTR 4[ebp] + movd mm0,DWORD PTR 4[esi] + psrlq mm2,32 + psrlq mm3,32 + inc ecx +ALIGN 16 +$L0041st: + pmuludq mm0,mm4 + pmuludq mm1,mm5 + paddq mm2,mm0 + paddq mm3,mm1 + movq mm0,mm2 + pand mm0,mm7 + movd mm1,DWORD PTR 4[ecx*4+ebp] + paddq mm3,mm0 + movd mm0,DWORD PTR 4[ecx*4+esi] + psrlq mm2,32 + movd DWORD PTR 28[ecx*4+esp],mm3 + psrlq mm3,32 + lea ecx,DWORD PTR 1[ecx] + cmp ecx,ebx + jl $L0041st + pmuludq mm0,mm4 + pmuludq mm1,mm5 + paddq mm2,mm0 + paddq mm3,mm1 + movq mm0,mm2 + pand mm0,mm7 + paddq mm3,mm0 + movd DWORD PTR 28[ecx*4+esp],mm3 + psrlq mm2,32 + psrlq mm3,32 + paddq mm3,mm2 + movq QWORD PTR 32[ebx*4+esp],mm3 + inc edx +$L005outer: + xor ecx,ecx + movd mm4,DWORD PTR [edx*4+edi] + movd mm5,DWORD PTR [esi] + movd mm6,DWORD PTR 32[esp] + movd mm3,DWORD PTR [ebp] + pmuludq mm5,mm4 + paddq mm5,mm6 + movq mm0,mm5 + movq mm2,mm5 + pand mm0,mm7 + pmuludq mm5,QWORD PTR 20[esp] + pmuludq mm3,mm5 + paddq mm3,mm0 + movd mm6,DWORD PTR 36[esp] + movd mm1,DWORD PTR 4[ebp] + movd mm0,DWORD PTR 4[esi] + psrlq mm2,32 + psrlq mm3,32 + paddq mm2,mm6 + inc ecx + dec ebx +$L006inner: + pmuludq mm0,mm4 + pmuludq mm1,mm5 + paddq mm2,mm0 + paddq mm3,mm1 + movq mm0,mm2 + movd mm6,DWORD PTR 36[ecx*4+esp] + pand mm0,mm7 + movd mm1,DWORD PTR 4[ecx*4+ebp] + paddq mm3,mm0 + movd mm0,DWORD PTR 4[ecx*4+esi] + psrlq mm2,32 + movd DWORD PTR 28[ecx*4+esp],mm3 + psrlq mm3,32 + paddq mm2,mm6 + dec ebx + lea ecx,DWORD PTR 1[ecx] + jnz $L006inner + mov ebx,ecx + pmuludq mm0,mm4 + pmuludq mm1,mm5 + paddq mm2,mm0 + paddq mm3,mm1 + movq mm0,mm2 + pand mm0,mm7 + paddq mm3,mm0 + movd DWORD PTR 28[ecx*4+esp],mm3 + psrlq mm2,32 + psrlq mm3,32 + movd mm6,DWORD PTR 36[ebx*4+esp] + paddq mm3,mm2 + paddq mm3,mm6 + movq QWORD PTR 32[ebx*4+esp],mm3 + lea edx,DWORD PTR 1[edx] + cmp edx,ebx + jle $L005outer + emms + jmp $L007common_tail +ALIGN 16 +$L003non_sse2: + mov esi,DWORD PTR 8[esp] + lea ebp,DWORD PTR 1[ebx] + mov edi,DWORD PTR 12[esp] + xor ecx,ecx + mov edx,esi + and ebp,1 + sub edx,edi + lea eax,DWORD PTR 4[ebx*4+edi] + or ebp,edx + mov edi,DWORD PTR [edi] + jz $L008bn_sqr_mont + mov DWORD PTR 28[esp],eax + mov eax,DWORD PTR [esi] + xor edx,edx +ALIGN 16 +$L009mull: + mov ebp,edx + mul edi + add ebp,eax + lea ecx,DWORD PTR 1[ecx] + adc edx,0 + mov eax,DWORD PTR [ecx*4+esi] + cmp ecx,ebx + mov DWORD PTR 28[ecx*4+esp],ebp + jl $L009mull + mov ebp,edx + mul edi + mov edi,DWORD PTR 20[esp] + add eax,ebp + mov esi,DWORD PTR 16[esp] + adc edx,0 + imul edi,DWORD PTR 32[esp] + mov DWORD PTR 32[ebx*4+esp],eax + xor ecx,ecx + mov DWORD PTR 36[ebx*4+esp],edx + mov DWORD PTR 40[ebx*4+esp],ecx + mov eax,DWORD PTR [esi] + mul edi + add eax,DWORD PTR 32[esp] + mov eax,DWORD PTR 4[esi] + adc edx,0 + inc ecx + jmp $L0102ndmadd +ALIGN 16 +$L0111stmadd: + mov ebp,edx + mul edi + add ebp,DWORD PTR 32[ecx*4+esp] + lea ecx,DWORD PTR 1[ecx] + adc edx,0 + add ebp,eax + mov eax,DWORD PTR [ecx*4+esi] + adc edx,0 + cmp ecx,ebx + mov DWORD PTR 28[ecx*4+esp],ebp + jl $L0111stmadd + mov ebp,edx + mul edi + add eax,DWORD PTR 32[ebx*4+esp] + mov edi,DWORD PTR 20[esp] + adc edx,0 + mov esi,DWORD PTR 16[esp] + add ebp,eax + adc edx,0 + imul edi,DWORD PTR 32[esp] + xor ecx,ecx + add edx,DWORD PTR 36[ebx*4+esp] + mov DWORD PTR 32[ebx*4+esp],ebp + adc ecx,0 + mov eax,DWORD PTR [esi] + mov DWORD PTR 36[ebx*4+esp],edx + mov DWORD PTR 40[ebx*4+esp],ecx + mul edi + add eax,DWORD PTR 32[esp] + mov eax,DWORD PTR 4[esi] + adc edx,0 + mov ecx,1 +ALIGN 16 +$L0102ndmadd: + mov ebp,edx + mul edi + add ebp,DWORD PTR 32[ecx*4+esp] + lea ecx,DWORD PTR 1[ecx] + adc edx,0 + add ebp,eax + mov eax,DWORD PTR [ecx*4+esi] + adc edx,0 + cmp ecx,ebx + mov DWORD PTR 24[ecx*4+esp],ebp + jl $L0102ndmadd + mov ebp,edx + mul edi + add ebp,DWORD PTR 32[ebx*4+esp] + adc edx,0 + add ebp,eax + adc edx,0 + mov DWORD PTR 28[ebx*4+esp],ebp + xor eax,eax + mov ecx,DWORD PTR 12[esp] + add edx,DWORD PTR 36[ebx*4+esp] + adc eax,DWORD PTR 40[ebx*4+esp] + lea ecx,DWORD PTR 4[ecx] + mov DWORD PTR 32[ebx*4+esp],edx + cmp ecx,DWORD PTR 28[esp] + mov DWORD PTR 36[ebx*4+esp],eax + je $L007common_tail + mov edi,DWORD PTR [ecx] + mov esi,DWORD PTR 8[esp] + mov DWORD PTR 12[esp],ecx + xor ecx,ecx + xor edx,edx + mov eax,DWORD PTR [esi] + jmp $L0111stmadd +ALIGN 16 +$L008bn_sqr_mont: + mov DWORD PTR [esp],ebx + mov DWORD PTR 12[esp],ecx + mov eax,edi + mul edi + mov DWORD PTR 32[esp],eax + mov ebx,edx + shr edx,1 + and ebx,1 + inc ecx +ALIGN 16 +$L012sqr: + mov eax,DWORD PTR [ecx*4+esi] + mov ebp,edx + mul edi + add eax,ebp + lea ecx,DWORD PTR 1[ecx] + adc edx,0 + lea ebp,DWORD PTR [eax*2+ebx] + shr eax,31 + cmp ecx,DWORD PTR [esp] + mov ebx,eax + mov DWORD PTR 28[ecx*4+esp],ebp + jl $L012sqr + mov eax,DWORD PTR [ecx*4+esi] + mov ebp,edx + mul edi + add eax,ebp + mov edi,DWORD PTR 20[esp] + adc edx,0 + mov esi,DWORD PTR 16[esp] + lea ebp,DWORD PTR [eax*2+ebx] + imul edi,DWORD PTR 32[esp] + shr eax,31 + mov DWORD PTR 32[ecx*4+esp],ebp + lea ebp,DWORD PTR [edx*2+eax] + mov eax,DWORD PTR [esi] + shr edx,31 + mov DWORD PTR 36[ecx*4+esp],ebp + mov DWORD PTR 40[ecx*4+esp],edx + mul edi + add eax,DWORD PTR 32[esp] + mov ebx,ecx + adc edx,0 + mov eax,DWORD PTR 4[esi] + mov ecx,1 +ALIGN 16 +$L0133rdmadd: + mov ebp,edx + mul edi + add ebp,DWORD PTR 32[ecx*4+esp] + adc edx,0 + add ebp,eax + mov eax,DWORD PTR 4[ecx*4+esi] + adc edx,0 + mov DWORD PTR 28[ecx*4+esp],ebp + mov ebp,edx + mul edi + add ebp,DWORD PTR 36[ecx*4+esp] + lea ecx,DWORD PTR 2[ecx] + adc edx,0 + add ebp,eax + mov eax,DWORD PTR [ecx*4+esi] + adc edx,0 + cmp ecx,ebx + mov DWORD PTR 24[ecx*4+esp],ebp + jl $L0133rdmadd + mov ebp,edx + mul edi + add ebp,DWORD PTR 32[ebx*4+esp] + adc edx,0 + add ebp,eax + adc edx,0 + mov DWORD PTR 28[ebx*4+esp],ebp + mov ecx,DWORD PTR 12[esp] + xor eax,eax + mov esi,DWORD PTR 8[esp] + add edx,DWORD PTR 36[ebx*4+esp] + adc eax,DWORD PTR 40[ebx*4+esp] + mov DWORD PTR 32[ebx*4+esp],edx + cmp ecx,ebx + mov DWORD PTR 36[ebx*4+esp],eax + je $L007common_tail + mov edi,DWORD PTR 4[ecx*4+esi] + lea ecx,DWORD PTR 1[ecx] + mov eax,edi + mov DWORD PTR 12[esp],ecx + mul edi + add eax,DWORD PTR 32[ecx*4+esp] + adc edx,0 + mov DWORD PTR 32[ecx*4+esp],eax + xor ebp,ebp + cmp ecx,ebx + lea ecx,DWORD PTR 1[ecx] + je $L014sqrlast + mov ebx,edx + shr edx,1 + and ebx,1 +ALIGN 16 +$L015sqradd: + mov eax,DWORD PTR [ecx*4+esi] + mov ebp,edx + mul edi + add eax,ebp + lea ebp,DWORD PTR [eax*1+eax] + adc edx,0 + shr eax,31 + add ebp,DWORD PTR 32[ecx*4+esp] + lea ecx,DWORD PTR 1[ecx] + adc eax,0 + add ebp,ebx + adc eax,0 + cmp ecx,DWORD PTR [esp] + mov DWORD PTR 28[ecx*4+esp],ebp + mov ebx,eax + jle $L015sqradd + mov ebp,edx + add edx,edx + shr ebp,31 + add edx,ebx + adc ebp,0 +$L014sqrlast: + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 16[esp] + imul edi,DWORD PTR 32[esp] + add edx,DWORD PTR 32[ecx*4+esp] + mov eax,DWORD PTR [esi] + adc ebp,0 + mov DWORD PTR 32[ecx*4+esp],edx + mov DWORD PTR 36[ecx*4+esp],ebp + mul edi + add eax,DWORD PTR 32[esp] + lea ebx,DWORD PTR [ecx-1] + adc edx,0 + mov ecx,1 + mov eax,DWORD PTR 4[esi] + jmp $L0133rdmadd +ALIGN 16 +$L007common_tail: + mov ebp,DWORD PTR 16[esp] + mov edi,DWORD PTR 4[esp] + lea esi,DWORD PTR 32[esp] + mov eax,DWORD PTR [esi] + mov ecx,ebx + xor edx,edx +ALIGN 16 +$L016sub: + sbb eax,DWORD PTR [edx*4+ebp] + mov DWORD PTR [edx*4+edi],eax + dec ecx + mov eax,DWORD PTR 4[edx*4+esi] + lea edx,DWORD PTR 1[edx] + jge $L016sub + sbb eax,0 + mov edx,-1 + xor edx,eax + jmp $L017copy +ALIGN 16 +$L017copy: + mov esi,DWORD PTR 32[ebx*4+esp] + mov ebp,DWORD PTR [ebx*4+edi] + mov DWORD PTR 32[ebx*4+esp],ecx + and esi,eax + and ebp,edx + or ebp,esi + mov DWORD PTR [ebx*4+edi],ebp + dec ebx + jge $L017copy + mov esp,DWORD PTR 24[esp] + mov eax,1 +$L000just_leave: + pop edi + pop esi + pop ebx + pop ebp + ret +_bn_mul_mont ENDP +DB 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 +DB 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 +DB 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 +DB 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 +DB 111,114,103,62,0 +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/camellia/cmll-x86.masm b/contrib/libs/openssl/asm/windows/crypto/camellia/cmll-x86.masm index 122df1de15..fbe0d82a15 100644 --- a/contrib/libs/openssl/asm/windows/crypto/camellia/cmll-x86.masm +++ b/contrib/libs/openssl/asm/windows/crypto/camellia/cmll-x86.masm @@ -1,2369 +1,2369 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -ALIGN 16 -_Camellia_EncryptBlock_Rounds PROC PUBLIC -$L_Camellia_EncryptBlock_Rounds_begin:: - push ebp - push ebx - push esi - push edi - mov eax,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov edi,DWORD PTR 28[esp] - mov ebx,esp - sub esp,28 - and esp,-64 - lea ecx,DWORD PTR [edi-127] - sub ecx,esp - neg ecx - and ecx,960 - sub esp,ecx - add esp,4 - shl eax,6 - lea eax,DWORD PTR [eax*1+edi] - mov DWORD PTR 20[esp],ebx - mov DWORD PTR 16[esp],eax - call $L000pic_point -$L000pic_point: - pop ebp - lea ebp,DWORD PTR ($LCamellia_SBOX-$L000pic_point)[ebp] - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - bswap eax - mov edx,DWORD PTR 12[esi] - bswap ebx - bswap ecx - bswap edx - call __x86_Camellia_encrypt - mov esp,DWORD PTR 20[esp] - bswap eax - mov esi,DWORD PTR 32[esp] - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],ecx - mov DWORD PTR 12[esi],edx - pop edi - pop esi - pop ebx - pop ebp - ret -_Camellia_EncryptBlock_Rounds ENDP -ALIGN 16 -_Camellia_EncryptBlock PROC PUBLIC -$L_Camellia_EncryptBlock_begin:: - mov eax,128 - sub eax,DWORD PTR 4[esp] - mov eax,3 - adc eax,0 - mov DWORD PTR 4[esp],eax - jmp $L_Camellia_EncryptBlock_Rounds_begin -_Camellia_EncryptBlock ENDP -ALIGN 16 -_Camellia_encrypt PROC PUBLIC -$L_Camellia_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 28[esp] - mov ebx,esp - sub esp,28 - and esp,-64 - mov eax,DWORD PTR 272[edi] - lea ecx,DWORD PTR [edi-127] - sub ecx,esp - neg ecx - and ecx,960 - sub esp,ecx - add esp,4 - shl eax,6 - lea eax,DWORD PTR [eax*1+edi] - mov DWORD PTR 20[esp],ebx - mov DWORD PTR 16[esp],eax - call $L001pic_point -$L001pic_point: - pop ebp - lea ebp,DWORD PTR ($LCamellia_SBOX-$L001pic_point)[ebp] - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - bswap eax - mov edx,DWORD PTR 12[esi] - bswap ebx - bswap ecx - bswap edx - call __x86_Camellia_encrypt - mov esp,DWORD PTR 20[esp] - bswap eax - mov esi,DWORD PTR 24[esp] - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],ecx - mov DWORD PTR 12[esi],edx - pop edi - pop esi - pop ebx - pop ebp - ret -_Camellia_encrypt ENDP -ALIGN 16 -__x86_Camellia_encrypt PROC PRIVATE - xor eax,DWORD PTR [edi] - xor ebx,DWORD PTR 4[edi] - xor ecx,DWORD PTR 8[edi] - xor edx,DWORD PTR 12[edi] - mov esi,DWORD PTR 16[edi] - mov DWORD PTR 4[esp],eax - mov DWORD PTR 8[esp],ebx - mov DWORD PTR 12[esp],ecx - mov DWORD PTR 16[esp],edx -ALIGN 16 -$L002loop: - xor eax,esi - xor ebx,DWORD PTR 20[edi] - movzx esi,ah - mov edx,DWORD PTR 2052[esi*8+ebp] - movzx esi,al - xor edx,DWORD PTR 4[esi*8+ebp] - shr eax,16 - movzx esi,bl - mov ecx,DWORD PTR [esi*8+ebp] - movzx esi,ah - xor edx,DWORD PTR [esi*8+ebp] - movzx esi,bh - xor ecx,DWORD PTR 4[esi*8+ebp] - shr ebx,16 - movzx eax,al - xor edx,DWORD PTR 2048[eax*8+ebp] - movzx esi,bh - mov eax,DWORD PTR 16[esp] - xor ecx,edx - ror edx,8 - xor ecx,DWORD PTR 2048[esi*8+ebp] - movzx esi,bl - mov ebx,DWORD PTR 12[esp] - xor edx,eax - xor ecx,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 24[edi] - xor edx,ecx - mov DWORD PTR 16[esp],edx - xor ecx,ebx - mov DWORD PTR 12[esp],ecx - xor ecx,esi - xor edx,DWORD PTR 28[edi] - movzx esi,ch - mov ebx,DWORD PTR 2052[esi*8+ebp] - movzx esi,cl - xor ebx,DWORD PTR 4[esi*8+ebp] - shr ecx,16 - movzx esi,dl - mov eax,DWORD PTR [esi*8+ebp] - movzx esi,ch - xor ebx,DWORD PTR [esi*8+ebp] - movzx esi,dh - xor eax,DWORD PTR 4[esi*8+ebp] - shr edx,16 - movzx ecx,cl - xor ebx,DWORD PTR 2048[ecx*8+ebp] - movzx esi,dh - mov ecx,DWORD PTR 8[esp] - xor eax,ebx - ror ebx,8 - xor eax,DWORD PTR 2048[esi*8+ebp] - movzx esi,dl - mov edx,DWORD PTR 4[esp] - xor ebx,ecx - xor eax,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 32[edi] - xor ebx,eax - mov DWORD PTR 8[esp],ebx - xor eax,edx - mov DWORD PTR 4[esp],eax - xor eax,esi - xor ebx,DWORD PTR 36[edi] - movzx esi,ah - mov edx,DWORD PTR 2052[esi*8+ebp] - movzx esi,al - xor edx,DWORD PTR 4[esi*8+ebp] - shr eax,16 - movzx esi,bl - mov ecx,DWORD PTR [esi*8+ebp] - movzx esi,ah - xor edx,DWORD PTR [esi*8+ebp] - movzx esi,bh - xor ecx,DWORD PTR 4[esi*8+ebp] - shr ebx,16 - movzx eax,al - xor edx,DWORD PTR 2048[eax*8+ebp] - movzx esi,bh - mov eax,DWORD PTR 16[esp] - xor ecx,edx - ror edx,8 - xor ecx,DWORD PTR 2048[esi*8+ebp] - movzx esi,bl - mov ebx,DWORD PTR 12[esp] - xor edx,eax - xor ecx,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 40[edi] - xor edx,ecx - mov DWORD PTR 16[esp],edx - xor ecx,ebx - mov DWORD PTR 12[esp],ecx - xor ecx,esi - xor edx,DWORD PTR 44[edi] - movzx esi,ch - mov ebx,DWORD PTR 2052[esi*8+ebp] - movzx esi,cl - xor ebx,DWORD PTR 4[esi*8+ebp] - shr ecx,16 - movzx esi,dl - mov eax,DWORD PTR [esi*8+ebp] - movzx esi,ch - xor ebx,DWORD PTR [esi*8+ebp] - movzx esi,dh - xor eax,DWORD PTR 4[esi*8+ebp] - shr edx,16 - movzx ecx,cl - xor ebx,DWORD PTR 2048[ecx*8+ebp] - movzx esi,dh - mov ecx,DWORD PTR 8[esp] - xor eax,ebx - ror ebx,8 - xor eax,DWORD PTR 2048[esi*8+ebp] - movzx esi,dl - mov edx,DWORD PTR 4[esp] - xor ebx,ecx - xor eax,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 48[edi] - xor ebx,eax - mov DWORD PTR 8[esp],ebx - xor eax,edx - mov DWORD PTR 4[esp],eax - xor eax,esi - xor ebx,DWORD PTR 52[edi] - movzx esi,ah - mov edx,DWORD PTR 2052[esi*8+ebp] - movzx esi,al - xor edx,DWORD PTR 4[esi*8+ebp] - shr eax,16 - movzx esi,bl - mov ecx,DWORD PTR [esi*8+ebp] - movzx esi,ah - xor edx,DWORD PTR [esi*8+ebp] - movzx esi,bh - xor ecx,DWORD PTR 4[esi*8+ebp] - shr ebx,16 - movzx eax,al - xor edx,DWORD PTR 2048[eax*8+ebp] - movzx esi,bh - mov eax,DWORD PTR 16[esp] - xor ecx,edx - ror edx,8 - xor ecx,DWORD PTR 2048[esi*8+ebp] - movzx esi,bl - mov ebx,DWORD PTR 12[esp] - xor edx,eax - xor ecx,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 56[edi] - xor edx,ecx - mov DWORD PTR 16[esp],edx - xor ecx,ebx - mov DWORD PTR 12[esp],ecx - xor ecx,esi - xor edx,DWORD PTR 60[edi] - movzx esi,ch - mov ebx,DWORD PTR 2052[esi*8+ebp] - movzx esi,cl - xor ebx,DWORD PTR 4[esi*8+ebp] - shr ecx,16 - movzx esi,dl - mov eax,DWORD PTR [esi*8+ebp] - movzx esi,ch - xor ebx,DWORD PTR [esi*8+ebp] - movzx esi,dh - xor eax,DWORD PTR 4[esi*8+ebp] - shr edx,16 - movzx ecx,cl - xor ebx,DWORD PTR 2048[ecx*8+ebp] - movzx esi,dh - mov ecx,DWORD PTR 8[esp] - xor eax,ebx - ror ebx,8 - xor eax,DWORD PTR 2048[esi*8+ebp] - movzx esi,dl - mov edx,DWORD PTR 4[esp] - xor ebx,ecx - xor eax,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 64[edi] - xor ebx,eax - mov DWORD PTR 8[esp],ebx - xor eax,edx - mov DWORD PTR 4[esp],eax - add edi,64 - cmp edi,DWORD PTR 20[esp] - je $L003done - and esi,eax - mov edx,DWORD PTR 16[esp] - rol esi,1 - mov ecx,edx - xor ebx,esi - or ecx,DWORD PTR 12[edi] - mov DWORD PTR 8[esp],ebx - xor ecx,DWORD PTR 12[esp] - mov esi,DWORD PTR 4[edi] - mov DWORD PTR 12[esp],ecx - or esi,ebx - and ecx,DWORD PTR 8[edi] - xor eax,esi - rol ecx,1 - mov DWORD PTR 4[esp],eax - xor edx,ecx - mov esi,DWORD PTR 16[edi] - mov DWORD PTR 16[esp],edx - jmp $L002loop -ALIGN 8 -$L003done: - mov ecx,eax - mov edx,ebx - mov eax,DWORD PTR 12[esp] - mov ebx,DWORD PTR 16[esp] - xor eax,esi - xor ebx,DWORD PTR 4[edi] - xor ecx,DWORD PTR 8[edi] - xor edx,DWORD PTR 12[edi] - ret -__x86_Camellia_encrypt ENDP -ALIGN 16 -_Camellia_DecryptBlock_Rounds PROC PUBLIC -$L_Camellia_DecryptBlock_Rounds_begin:: - push ebp - push ebx - push esi - push edi - mov eax,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov edi,DWORD PTR 28[esp] - mov ebx,esp - sub esp,28 - and esp,-64 - lea ecx,DWORD PTR [edi-127] - sub ecx,esp - neg ecx - and ecx,960 - sub esp,ecx - add esp,4 - shl eax,6 - mov DWORD PTR 16[esp],edi - lea edi,DWORD PTR [eax*1+edi] - mov DWORD PTR 20[esp],ebx - call $L004pic_point -$L004pic_point: - pop ebp - lea ebp,DWORD PTR ($LCamellia_SBOX-$L004pic_point)[ebp] - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - bswap eax - mov edx,DWORD PTR 12[esi] - bswap ebx - bswap ecx - bswap edx - call __x86_Camellia_decrypt - mov esp,DWORD PTR 20[esp] - bswap eax - mov esi,DWORD PTR 32[esp] - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],ecx - mov DWORD PTR 12[esi],edx - pop edi - pop esi - pop ebx - pop ebp - ret -_Camellia_DecryptBlock_Rounds ENDP -ALIGN 16 -_Camellia_DecryptBlock PROC PUBLIC -$L_Camellia_DecryptBlock_begin:: - mov eax,128 - sub eax,DWORD PTR 4[esp] - mov eax,3 - adc eax,0 - mov DWORD PTR 4[esp],eax - jmp $L_Camellia_DecryptBlock_Rounds_begin -_Camellia_DecryptBlock ENDP -ALIGN 16 -_Camellia_decrypt PROC PUBLIC -$L_Camellia_decrypt_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 28[esp] - mov ebx,esp - sub esp,28 - and esp,-64 - mov eax,DWORD PTR 272[edi] - lea ecx,DWORD PTR [edi-127] - sub ecx,esp - neg ecx - and ecx,960 - sub esp,ecx - add esp,4 - shl eax,6 - mov DWORD PTR 16[esp],edi - lea edi,DWORD PTR [eax*1+edi] - mov DWORD PTR 20[esp],ebx - call $L005pic_point -$L005pic_point: - pop ebp - lea ebp,DWORD PTR ($LCamellia_SBOX-$L005pic_point)[ebp] - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - bswap eax - mov edx,DWORD PTR 12[esi] - bswap ebx - bswap ecx - bswap edx - call __x86_Camellia_decrypt - mov esp,DWORD PTR 20[esp] - bswap eax - mov esi,DWORD PTR 24[esp] - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],ecx - mov DWORD PTR 12[esi],edx - pop edi - pop esi - pop ebx - pop ebp - ret -_Camellia_decrypt ENDP -ALIGN 16 -__x86_Camellia_decrypt PROC PRIVATE - xor eax,DWORD PTR [edi] - xor ebx,DWORD PTR 4[edi] - xor ecx,DWORD PTR 8[edi] - xor edx,DWORD PTR 12[edi] - mov esi,DWORD PTR [edi-8] - mov DWORD PTR 4[esp],eax - mov DWORD PTR 8[esp],ebx - mov DWORD PTR 12[esp],ecx - mov DWORD PTR 16[esp],edx -ALIGN 16 -$L006loop: - xor eax,esi - xor ebx,DWORD PTR [edi-4] - movzx esi,ah - mov edx,DWORD PTR 2052[esi*8+ebp] - movzx esi,al - xor edx,DWORD PTR 4[esi*8+ebp] - shr eax,16 - movzx esi,bl - mov ecx,DWORD PTR [esi*8+ebp] - movzx esi,ah - xor edx,DWORD PTR [esi*8+ebp] - movzx esi,bh - xor ecx,DWORD PTR 4[esi*8+ebp] - shr ebx,16 - movzx eax,al - xor edx,DWORD PTR 2048[eax*8+ebp] - movzx esi,bh - mov eax,DWORD PTR 16[esp] - xor ecx,edx - ror edx,8 - xor ecx,DWORD PTR 2048[esi*8+ebp] - movzx esi,bl - mov ebx,DWORD PTR 12[esp] - xor edx,eax - xor ecx,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR [edi-16] - xor edx,ecx - mov DWORD PTR 16[esp],edx - xor ecx,ebx - mov DWORD PTR 12[esp],ecx - xor ecx,esi - xor edx,DWORD PTR [edi-12] - movzx esi,ch - mov ebx,DWORD PTR 2052[esi*8+ebp] - movzx esi,cl - xor ebx,DWORD PTR 4[esi*8+ebp] - shr ecx,16 - movzx esi,dl - mov eax,DWORD PTR [esi*8+ebp] - movzx esi,ch - xor ebx,DWORD PTR [esi*8+ebp] - movzx esi,dh - xor eax,DWORD PTR 4[esi*8+ebp] - shr edx,16 - movzx ecx,cl - xor ebx,DWORD PTR 2048[ecx*8+ebp] - movzx esi,dh - mov ecx,DWORD PTR 8[esp] - xor eax,ebx - ror ebx,8 - xor eax,DWORD PTR 2048[esi*8+ebp] - movzx esi,dl - mov edx,DWORD PTR 4[esp] - xor ebx,ecx - xor eax,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR [edi-24] - xor ebx,eax - mov DWORD PTR 8[esp],ebx - xor eax,edx - mov DWORD PTR 4[esp],eax - xor eax,esi - xor ebx,DWORD PTR [edi-20] - movzx esi,ah - mov edx,DWORD PTR 2052[esi*8+ebp] - movzx esi,al - xor edx,DWORD PTR 4[esi*8+ebp] - shr eax,16 - movzx esi,bl - mov ecx,DWORD PTR [esi*8+ebp] - movzx esi,ah - xor edx,DWORD PTR [esi*8+ebp] - movzx esi,bh - xor ecx,DWORD PTR 4[esi*8+ebp] - shr ebx,16 - movzx eax,al - xor edx,DWORD PTR 2048[eax*8+ebp] - movzx esi,bh - mov eax,DWORD PTR 16[esp] - xor ecx,edx - ror edx,8 - xor ecx,DWORD PTR 2048[esi*8+ebp] - movzx esi,bl - mov ebx,DWORD PTR 12[esp] - xor edx,eax - xor ecx,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR [edi-32] - xor edx,ecx - mov DWORD PTR 16[esp],edx - xor ecx,ebx - mov DWORD PTR 12[esp],ecx - xor ecx,esi - xor edx,DWORD PTR [edi-28] - movzx esi,ch - mov ebx,DWORD PTR 2052[esi*8+ebp] - movzx esi,cl - xor ebx,DWORD PTR 4[esi*8+ebp] - shr ecx,16 - movzx esi,dl - mov eax,DWORD PTR [esi*8+ebp] - movzx esi,ch - xor ebx,DWORD PTR [esi*8+ebp] - movzx esi,dh - xor eax,DWORD PTR 4[esi*8+ebp] - shr edx,16 - movzx ecx,cl - xor ebx,DWORD PTR 2048[ecx*8+ebp] - movzx esi,dh - mov ecx,DWORD PTR 8[esp] - xor eax,ebx - ror ebx,8 - xor eax,DWORD PTR 2048[esi*8+ebp] - movzx esi,dl - mov edx,DWORD PTR 4[esp] - xor ebx,ecx - xor eax,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR [edi-40] - xor ebx,eax - mov DWORD PTR 8[esp],ebx - xor eax,edx - mov DWORD PTR 4[esp],eax - xor eax,esi - xor ebx,DWORD PTR [edi-36] - movzx esi,ah - mov edx,DWORD PTR 2052[esi*8+ebp] - movzx esi,al - xor edx,DWORD PTR 4[esi*8+ebp] - shr eax,16 - movzx esi,bl - mov ecx,DWORD PTR [esi*8+ebp] - movzx esi,ah - xor edx,DWORD PTR [esi*8+ebp] - movzx esi,bh - xor ecx,DWORD PTR 4[esi*8+ebp] - shr ebx,16 - movzx eax,al - xor edx,DWORD PTR 2048[eax*8+ebp] - movzx esi,bh - mov eax,DWORD PTR 16[esp] - xor ecx,edx - ror edx,8 - xor ecx,DWORD PTR 2048[esi*8+ebp] - movzx esi,bl - mov ebx,DWORD PTR 12[esp] - xor edx,eax - xor ecx,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR [edi-48] - xor edx,ecx - mov DWORD PTR 16[esp],edx - xor ecx,ebx - mov DWORD PTR 12[esp],ecx - xor ecx,esi - xor edx,DWORD PTR [edi-44] - movzx esi,ch - mov ebx,DWORD PTR 2052[esi*8+ebp] - movzx esi,cl - xor ebx,DWORD PTR 4[esi*8+ebp] - shr ecx,16 - movzx esi,dl - mov eax,DWORD PTR [esi*8+ebp] - movzx esi,ch - xor ebx,DWORD PTR [esi*8+ebp] - movzx esi,dh - xor eax,DWORD PTR 4[esi*8+ebp] - shr edx,16 - movzx ecx,cl - xor ebx,DWORD PTR 2048[ecx*8+ebp] - movzx esi,dh - mov ecx,DWORD PTR 8[esp] - xor eax,ebx - ror ebx,8 - xor eax,DWORD PTR 2048[esi*8+ebp] - movzx esi,dl - mov edx,DWORD PTR 4[esp] - xor ebx,ecx - xor eax,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR [edi-56] - xor ebx,eax - mov DWORD PTR 8[esp],ebx - xor eax,edx - mov DWORD PTR 4[esp],eax - sub edi,64 - cmp edi,DWORD PTR 20[esp] - je $L007done - and esi,eax - mov edx,DWORD PTR 16[esp] - rol esi,1 - mov ecx,edx - xor ebx,esi - or ecx,DWORD PTR 4[edi] - mov DWORD PTR 8[esp],ebx - xor ecx,DWORD PTR 12[esp] - mov esi,DWORD PTR 12[edi] - mov DWORD PTR 12[esp],ecx - or esi,ebx - and ecx,DWORD PTR [edi] - xor eax,esi - rol ecx,1 - mov DWORD PTR 4[esp],eax - xor edx,ecx - mov esi,DWORD PTR [edi-8] - mov DWORD PTR 16[esp],edx - jmp $L006loop -ALIGN 8 -$L007done: - mov ecx,eax - mov edx,ebx - mov eax,DWORD PTR 12[esp] - mov ebx,DWORD PTR 16[esp] - xor ecx,esi - xor edx,DWORD PTR 12[edi] - xor eax,DWORD PTR [edi] - xor ebx,DWORD PTR 4[edi] - ret -__x86_Camellia_decrypt ENDP -ALIGN 16 -_Camellia_Ekeygen PROC PUBLIC -$L_Camellia_Ekeygen_begin:: - push ebp - push ebx - push esi - push edi - sub esp,16 - mov ebp,DWORD PTR 36[esp] - mov esi,DWORD PTR 40[esp] - mov edi,DWORD PTR 44[esp] - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edx,DWORD PTR 12[esi] - bswap eax - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR [edi],eax - mov DWORD PTR 4[edi],ebx - mov DWORD PTR 8[edi],ecx - mov DWORD PTR 12[edi],edx - cmp ebp,128 - je $L0081st128 - mov eax,DWORD PTR 16[esi] - mov ebx,DWORD PTR 20[esi] - cmp ebp,192 - je $L0091st192 - mov ecx,DWORD PTR 24[esi] - mov edx,DWORD PTR 28[esi] - jmp $L0101st256 -ALIGN 4 -$L0091st192: - mov ecx,eax - mov edx,ebx - not ecx - not edx -ALIGN 4 -$L0101st256: - bswap eax - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR 32[edi],eax - mov DWORD PTR 36[edi],ebx - mov DWORD PTR 40[edi],ecx - mov DWORD PTR 44[edi],edx - xor eax,DWORD PTR [edi] - xor ebx,DWORD PTR 4[edi] - xor ecx,DWORD PTR 8[edi] - xor edx,DWORD PTR 12[edi] -ALIGN 4 -$L0081st128: - call $L011pic_point -$L011pic_point: - pop ebp - lea ebp,DWORD PTR ($LCamellia_SBOX-$L011pic_point)[ebp] - lea edi,DWORD PTR ($LCamellia_SIGMA-$LCamellia_SBOX)[ebp] - mov esi,DWORD PTR [edi] - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],ebx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],edx - xor eax,esi - xor ebx,DWORD PTR 4[edi] - movzx esi,ah - mov edx,DWORD PTR 2052[esi*8+ebp] - movzx esi,al - xor edx,DWORD PTR 4[esi*8+ebp] - shr eax,16 - movzx esi,bl - mov ecx,DWORD PTR [esi*8+ebp] - movzx esi,ah - xor edx,DWORD PTR [esi*8+ebp] - movzx esi,bh - xor ecx,DWORD PTR 4[esi*8+ebp] - shr ebx,16 - movzx eax,al - xor edx,DWORD PTR 2048[eax*8+ebp] - movzx esi,bh - mov eax,DWORD PTR 12[esp] - xor ecx,edx - ror edx,8 - xor ecx,DWORD PTR 2048[esi*8+ebp] - movzx esi,bl - mov ebx,DWORD PTR 8[esp] - xor edx,eax - xor ecx,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 8[edi] - xor edx,ecx - mov DWORD PTR 12[esp],edx - xor ecx,ebx - mov DWORD PTR 8[esp],ecx - xor ecx,esi - xor edx,DWORD PTR 12[edi] - movzx esi,ch - mov ebx,DWORD PTR 2052[esi*8+ebp] - movzx esi,cl - xor ebx,DWORD PTR 4[esi*8+ebp] - shr ecx,16 - movzx esi,dl - mov eax,DWORD PTR [esi*8+ebp] - movzx esi,ch - xor ebx,DWORD PTR [esi*8+ebp] - movzx esi,dh - xor eax,DWORD PTR 4[esi*8+ebp] - shr edx,16 - movzx ecx,cl - xor ebx,DWORD PTR 2048[ecx*8+ebp] - movzx esi,dh - mov ecx,DWORD PTR 4[esp] - xor eax,ebx - ror ebx,8 - xor eax,DWORD PTR 2048[esi*8+ebp] - movzx esi,dl - mov edx,DWORD PTR [esp] - xor ebx,ecx - xor eax,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 16[edi] - xor ebx,eax - mov DWORD PTR 4[esp],ebx - xor eax,edx - mov DWORD PTR [esp],eax - mov ecx,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] - mov esi,DWORD PTR 44[esp] - xor eax,DWORD PTR [esi] - xor ebx,DWORD PTR 4[esi] - xor ecx,DWORD PTR 8[esi] - xor edx,DWORD PTR 12[esi] - mov esi,DWORD PTR 16[edi] - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],ebx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],edx - xor eax,esi - xor ebx,DWORD PTR 20[edi] - movzx esi,ah - mov edx,DWORD PTR 2052[esi*8+ebp] - movzx esi,al - xor edx,DWORD PTR 4[esi*8+ebp] - shr eax,16 - movzx esi,bl - mov ecx,DWORD PTR [esi*8+ebp] - movzx esi,ah - xor edx,DWORD PTR [esi*8+ebp] - movzx esi,bh - xor ecx,DWORD PTR 4[esi*8+ebp] - shr ebx,16 - movzx eax,al - xor edx,DWORD PTR 2048[eax*8+ebp] - movzx esi,bh - mov eax,DWORD PTR 12[esp] - xor ecx,edx - ror edx,8 - xor ecx,DWORD PTR 2048[esi*8+ebp] - movzx esi,bl - mov ebx,DWORD PTR 8[esp] - xor edx,eax - xor ecx,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 24[edi] - xor edx,ecx - mov DWORD PTR 12[esp],edx - xor ecx,ebx - mov DWORD PTR 8[esp],ecx - xor ecx,esi - xor edx,DWORD PTR 28[edi] - movzx esi,ch - mov ebx,DWORD PTR 2052[esi*8+ebp] - movzx esi,cl - xor ebx,DWORD PTR 4[esi*8+ebp] - shr ecx,16 - movzx esi,dl - mov eax,DWORD PTR [esi*8+ebp] - movzx esi,ch - xor ebx,DWORD PTR [esi*8+ebp] - movzx esi,dh - xor eax,DWORD PTR 4[esi*8+ebp] - shr edx,16 - movzx ecx,cl - xor ebx,DWORD PTR 2048[ecx*8+ebp] - movzx esi,dh - mov ecx,DWORD PTR 4[esp] - xor eax,ebx - ror ebx,8 - xor eax,DWORD PTR 2048[esi*8+ebp] - movzx esi,dl - mov edx,DWORD PTR [esp] - xor ebx,ecx - xor eax,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 32[edi] - xor ebx,eax - mov DWORD PTR 4[esp],ebx - xor eax,edx - mov DWORD PTR [esp],eax - mov ecx,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] - mov esi,DWORD PTR 36[esp] - cmp esi,128 - jne $L0122nd256 - mov edi,DWORD PTR 44[esp] - lea edi,DWORD PTR 128[edi] - mov DWORD PTR [edi-112],eax - mov DWORD PTR [edi-108],ebx - mov DWORD PTR [edi-104],ecx - mov DWORD PTR [edi-100],edx - mov ebp,eax - shl eax,15 - mov esi,ebx - shr esi,17 - shl ebx,15 - or eax,esi - mov esi,ecx - shl ecx,15 - mov DWORD PTR [edi-80],eax - shr esi,17 - or ebx,esi - shr ebp,17 - mov esi,edx - shr esi,17 - mov DWORD PTR [edi-76],ebx - shl edx,15 - or ecx,esi - or edx,ebp - mov DWORD PTR [edi-72],ecx - mov DWORD PTR [edi-68],edx - mov ebp,eax - shl eax,15 - mov esi,ebx - shr esi,17 - shl ebx,15 - or eax,esi - mov esi,ecx - shl ecx,15 - mov DWORD PTR [edi-64],eax - shr esi,17 - or ebx,esi - shr ebp,17 - mov esi,edx - shr esi,17 - mov DWORD PTR [edi-60],ebx - shl edx,15 - or ecx,esi - or edx,ebp - mov DWORD PTR [edi-56],ecx - mov DWORD PTR [edi-52],edx - mov ebp,eax - shl eax,15 - mov esi,ebx - shr esi,17 - shl ebx,15 - or eax,esi - mov esi,ecx - shl ecx,15 - mov DWORD PTR [edi-32],eax - shr esi,17 - or ebx,esi - shr ebp,17 - mov esi,edx - shr esi,17 - mov DWORD PTR [edi-28],ebx - shl edx,15 - or ecx,esi - or edx,ebp - mov ebp,eax - shl eax,15 - mov esi,ebx - shr esi,17 - shl ebx,15 - or eax,esi - mov esi,ecx - shl ecx,15 - mov DWORD PTR [edi-16],eax - shr esi,17 - or ebx,esi - shr ebp,17 - mov esi,edx - shr esi,17 - mov DWORD PTR [edi-12],ebx - shl edx,15 - or ecx,esi - or edx,ebp - mov DWORD PTR [edi-8],ecx - mov DWORD PTR [edi-4],edx - mov ebp,ebx - shl ebx,2 - mov esi,ecx - shr esi,30 - shl ecx,2 - or ebx,esi - mov esi,edx - shl edx,2 - mov DWORD PTR 32[edi],ebx - shr esi,30 - or ecx,esi - shr ebp,30 - mov esi,eax - shr esi,30 - mov DWORD PTR 36[edi],ecx - shl eax,2 - or edx,esi - or eax,ebp - mov DWORD PTR 40[edi],edx - mov DWORD PTR 44[edi],eax - mov ebp,ebx - shl ebx,17 - mov esi,ecx - shr esi,15 - shl ecx,17 - or ebx,esi - mov esi,edx - shl edx,17 - mov DWORD PTR 64[edi],ebx - shr esi,15 - or ecx,esi - shr ebp,15 - mov esi,eax - shr esi,15 - mov DWORD PTR 68[edi],ecx - shl eax,17 - or edx,esi - or eax,ebp - mov DWORD PTR 72[edi],edx - mov DWORD PTR 76[edi],eax - mov ebx,DWORD PTR [edi-128] - mov ecx,DWORD PTR [edi-124] - mov edx,DWORD PTR [edi-120] - mov eax,DWORD PTR [edi-116] - mov ebp,ebx - shl ebx,15 - mov esi,ecx - shr esi,17 - shl ecx,15 - or ebx,esi - mov esi,edx - shl edx,15 - mov DWORD PTR [edi-96],ebx - shr esi,17 - or ecx,esi - shr ebp,17 - mov esi,eax - shr esi,17 - mov DWORD PTR [edi-92],ecx - shl eax,15 - or edx,esi - or eax,ebp - mov DWORD PTR [edi-88],edx - mov DWORD PTR [edi-84],eax - mov ebp,ebx - shl ebx,30 - mov esi,ecx - shr esi,2 - shl ecx,30 - or ebx,esi - mov esi,edx - shl edx,30 - mov DWORD PTR [edi-48],ebx - shr esi,2 - or ecx,esi - shr ebp,2 - mov esi,eax - shr esi,2 - mov DWORD PTR [edi-44],ecx - shl eax,30 - or edx,esi - or eax,ebp - mov DWORD PTR [edi-40],edx - mov DWORD PTR [edi-36],eax - mov ebp,ebx - shl ebx,15 - mov esi,ecx - shr esi,17 - shl ecx,15 - or ebx,esi - mov esi,edx - shl edx,15 - shr esi,17 - or ecx,esi - shr ebp,17 - mov esi,eax - shr esi,17 - shl eax,15 - or edx,esi - or eax,ebp - mov DWORD PTR [edi-24],edx - mov DWORD PTR [edi-20],eax - mov ebp,ebx - shl ebx,17 - mov esi,ecx - shr esi,15 - shl ecx,17 - or ebx,esi - mov esi,edx - shl edx,17 - mov DWORD PTR [edi],ebx - shr esi,15 - or ecx,esi - shr ebp,15 - mov esi,eax - shr esi,15 - mov DWORD PTR 4[edi],ecx - shl eax,17 - or edx,esi - or eax,ebp - mov DWORD PTR 8[edi],edx - mov DWORD PTR 12[edi],eax - mov ebp,ebx - shl ebx,17 - mov esi,ecx - shr esi,15 - shl ecx,17 - or ebx,esi - mov esi,edx - shl edx,17 - mov DWORD PTR 16[edi],ebx - shr esi,15 - or ecx,esi - shr ebp,15 - mov esi,eax - shr esi,15 - mov DWORD PTR 20[edi],ecx - shl eax,17 - or edx,esi - or eax,ebp - mov DWORD PTR 24[edi],edx - mov DWORD PTR 28[edi],eax - mov ebp,ebx - shl ebx,17 - mov esi,ecx - shr esi,15 - shl ecx,17 - or ebx,esi - mov esi,edx - shl edx,17 - mov DWORD PTR 48[edi],ebx - shr esi,15 - or ecx,esi - shr ebp,15 - mov esi,eax - shr esi,15 - mov DWORD PTR 52[edi],ecx - shl eax,17 - or edx,esi - or eax,ebp - mov DWORD PTR 56[edi],edx - mov DWORD PTR 60[edi],eax - mov eax,3 - jmp $L013done -ALIGN 16 -$L0122nd256: - mov esi,DWORD PTR 44[esp] - mov DWORD PTR 48[esi],eax - mov DWORD PTR 52[esi],ebx - mov DWORD PTR 56[esi],ecx - mov DWORD PTR 60[esi],edx - xor eax,DWORD PTR 32[esi] - xor ebx,DWORD PTR 36[esi] - xor ecx,DWORD PTR 40[esi] - xor edx,DWORD PTR 44[esi] - mov esi,DWORD PTR 32[edi] - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],ebx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],edx - xor eax,esi - xor ebx,DWORD PTR 36[edi] - movzx esi,ah - mov edx,DWORD PTR 2052[esi*8+ebp] - movzx esi,al - xor edx,DWORD PTR 4[esi*8+ebp] - shr eax,16 - movzx esi,bl - mov ecx,DWORD PTR [esi*8+ebp] - movzx esi,ah - xor edx,DWORD PTR [esi*8+ebp] - movzx esi,bh - xor ecx,DWORD PTR 4[esi*8+ebp] - shr ebx,16 - movzx eax,al - xor edx,DWORD PTR 2048[eax*8+ebp] - movzx esi,bh - mov eax,DWORD PTR 12[esp] - xor ecx,edx - ror edx,8 - xor ecx,DWORD PTR 2048[esi*8+ebp] - movzx esi,bl - mov ebx,DWORD PTR 8[esp] - xor edx,eax - xor ecx,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 40[edi] - xor edx,ecx - mov DWORD PTR 12[esp],edx - xor ecx,ebx - mov DWORD PTR 8[esp],ecx - xor ecx,esi - xor edx,DWORD PTR 44[edi] - movzx esi,ch - mov ebx,DWORD PTR 2052[esi*8+ebp] - movzx esi,cl - xor ebx,DWORD PTR 4[esi*8+ebp] - shr ecx,16 - movzx esi,dl - mov eax,DWORD PTR [esi*8+ebp] - movzx esi,ch - xor ebx,DWORD PTR [esi*8+ebp] - movzx esi,dh - xor eax,DWORD PTR 4[esi*8+ebp] - shr edx,16 - movzx ecx,cl - xor ebx,DWORD PTR 2048[ecx*8+ebp] - movzx esi,dh - mov ecx,DWORD PTR 4[esp] - xor eax,ebx - ror ebx,8 - xor eax,DWORD PTR 2048[esi*8+ebp] - movzx esi,dl - mov edx,DWORD PTR [esp] - xor ebx,ecx - xor eax,DWORD PTR 2052[esi*8+ebp] - mov esi,DWORD PTR 48[edi] - xor ebx,eax - mov DWORD PTR 4[esp],ebx - xor eax,edx - mov DWORD PTR [esp],eax - mov ecx,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] - mov edi,DWORD PTR 44[esp] - lea edi,DWORD PTR 128[edi] - mov DWORD PTR [edi-112],eax - mov DWORD PTR [edi-108],ebx - mov DWORD PTR [edi-104],ecx - mov DWORD PTR [edi-100],edx - mov ebp,eax - shl eax,30 - mov esi,ebx - shr esi,2 - shl ebx,30 - or eax,esi - mov esi,ecx - shl ecx,30 - mov DWORD PTR [edi-48],eax - shr esi,2 - or ebx,esi - shr ebp,2 - mov esi,edx - shr esi,2 - mov DWORD PTR [edi-44],ebx - shl edx,30 - or ecx,esi - or edx,ebp - mov DWORD PTR [edi-40],ecx - mov DWORD PTR [edi-36],edx - mov ebp,eax - shl eax,30 - mov esi,ebx - shr esi,2 - shl ebx,30 - or eax,esi - mov esi,ecx - shl ecx,30 - mov DWORD PTR 32[edi],eax - shr esi,2 - or ebx,esi - shr ebp,2 - mov esi,edx - shr esi,2 - mov DWORD PTR 36[edi],ebx - shl edx,30 - or ecx,esi - or edx,ebp - mov DWORD PTR 40[edi],ecx - mov DWORD PTR 44[edi],edx - mov ebp,ebx - shl ebx,19 - mov esi,ecx - shr esi,13 - shl ecx,19 - or ebx,esi - mov esi,edx - shl edx,19 - mov DWORD PTR 128[edi],ebx - shr esi,13 - or ecx,esi - shr ebp,13 - mov esi,eax - shr esi,13 - mov DWORD PTR 132[edi],ecx - shl eax,19 - or edx,esi - or eax,ebp - mov DWORD PTR 136[edi],edx - mov DWORD PTR 140[edi],eax - mov ebx,DWORD PTR [edi-96] - mov ecx,DWORD PTR [edi-92] - mov edx,DWORD PTR [edi-88] - mov eax,DWORD PTR [edi-84] - mov ebp,ebx - shl ebx,15 - mov esi,ecx - shr esi,17 - shl ecx,15 - or ebx,esi - mov esi,edx - shl edx,15 - mov DWORD PTR [edi-96],ebx - shr esi,17 - or ecx,esi - shr ebp,17 - mov esi,eax - shr esi,17 - mov DWORD PTR [edi-92],ecx - shl eax,15 - or edx,esi - or eax,ebp - mov DWORD PTR [edi-88],edx - mov DWORD PTR [edi-84],eax - mov ebp,ebx - shl ebx,15 - mov esi,ecx - shr esi,17 - shl ecx,15 - or ebx,esi - mov esi,edx - shl edx,15 - mov DWORD PTR [edi-64],ebx - shr esi,17 - or ecx,esi - shr ebp,17 - mov esi,eax - shr esi,17 - mov DWORD PTR [edi-60],ecx - shl eax,15 - or edx,esi - or eax,ebp - mov DWORD PTR [edi-56],edx - mov DWORD PTR [edi-52],eax - mov ebp,ebx - shl ebx,30 - mov esi,ecx - shr esi,2 - shl ecx,30 - or ebx,esi - mov esi,edx - shl edx,30 - mov DWORD PTR 16[edi],ebx - shr esi,2 - or ecx,esi - shr ebp,2 - mov esi,eax - shr esi,2 - mov DWORD PTR 20[edi],ecx - shl eax,30 - or edx,esi - or eax,ebp - mov DWORD PTR 24[edi],edx - mov DWORD PTR 28[edi],eax - mov ebp,ecx - shl ecx,2 - mov esi,edx - shr esi,30 - shl edx,2 - or ecx,esi - mov esi,eax - shl eax,2 - mov DWORD PTR 80[edi],ecx - shr esi,30 - or edx,esi - shr ebp,30 - mov esi,ebx - shr esi,30 - mov DWORD PTR 84[edi],edx - shl ebx,2 - or eax,esi - or ebx,ebp - mov DWORD PTR 88[edi],eax - mov DWORD PTR 92[edi],ebx - mov ecx,DWORD PTR [edi-80] - mov edx,DWORD PTR [edi-76] - mov eax,DWORD PTR [edi-72] - mov ebx,DWORD PTR [edi-68] - mov ebp,ecx - shl ecx,15 - mov esi,edx - shr esi,17 - shl edx,15 - or ecx,esi - mov esi,eax - shl eax,15 - mov DWORD PTR [edi-80],ecx - shr esi,17 - or edx,esi - shr ebp,17 - mov esi,ebx - shr esi,17 - mov DWORD PTR [edi-76],edx - shl ebx,15 - or eax,esi - or ebx,ebp - mov DWORD PTR [edi-72],eax - mov DWORD PTR [edi-68],ebx - mov ebp,ecx - shl ecx,30 - mov esi,edx - shr esi,2 - shl edx,30 - or ecx,esi - mov esi,eax - shl eax,30 - mov DWORD PTR [edi-16],ecx - shr esi,2 - or edx,esi - shr ebp,2 - mov esi,ebx - shr esi,2 - mov DWORD PTR [edi-12],edx - shl ebx,30 - or eax,esi - or ebx,ebp - mov DWORD PTR [edi-8],eax - mov DWORD PTR [edi-4],ebx - mov DWORD PTR 64[edi],edx - mov DWORD PTR 68[edi],eax - mov DWORD PTR 72[edi],ebx - mov DWORD PTR 76[edi],ecx - mov ebp,edx - shl edx,17 - mov esi,eax - shr esi,15 - shl eax,17 - or edx,esi - mov esi,ebx - shl ebx,17 - mov DWORD PTR 96[edi],edx - shr esi,15 - or eax,esi - shr ebp,15 - mov esi,ecx - shr esi,15 - mov DWORD PTR 100[edi],eax - shl ecx,17 - or ebx,esi - or ecx,ebp - mov DWORD PTR 104[edi],ebx - mov DWORD PTR 108[edi],ecx - mov edx,DWORD PTR [edi-128] - mov eax,DWORD PTR [edi-124] - mov ebx,DWORD PTR [edi-120] - mov ecx,DWORD PTR [edi-116] - mov ebp,eax - shl eax,13 - mov esi,ebx - shr esi,19 - shl ebx,13 - or eax,esi - mov esi,ecx - shl ecx,13 - mov DWORD PTR [edi-32],eax - shr esi,19 - or ebx,esi - shr ebp,19 - mov esi,edx - shr esi,19 - mov DWORD PTR [edi-28],ebx - shl edx,13 - or ecx,esi - or edx,ebp - mov DWORD PTR [edi-24],ecx - mov DWORD PTR [edi-20],edx - mov ebp,eax - shl eax,15 - mov esi,ebx - shr esi,17 - shl ebx,15 - or eax,esi - mov esi,ecx - shl ecx,15 - mov DWORD PTR [edi],eax - shr esi,17 - or ebx,esi - shr ebp,17 - mov esi,edx - shr esi,17 - mov DWORD PTR 4[edi],ebx - shl edx,15 - or ecx,esi - or edx,ebp - mov DWORD PTR 8[edi],ecx - mov DWORD PTR 12[edi],edx - mov ebp,eax - shl eax,17 - mov esi,ebx - shr esi,15 - shl ebx,17 - or eax,esi - mov esi,ecx - shl ecx,17 - mov DWORD PTR 48[edi],eax - shr esi,15 - or ebx,esi - shr ebp,15 - mov esi,edx - shr esi,15 - mov DWORD PTR 52[edi],ebx - shl edx,17 - or ecx,esi - or edx,ebp - mov DWORD PTR 56[edi],ecx - mov DWORD PTR 60[edi],edx - mov ebp,ebx - shl ebx,2 - mov esi,ecx - shr esi,30 - shl ecx,2 - or ebx,esi - mov esi,edx - shl edx,2 - mov DWORD PTR 112[edi],ebx - shr esi,30 - or ecx,esi - shr ebp,30 - mov esi,eax - shr esi,30 - mov DWORD PTR 116[edi],ecx - shl eax,2 - or edx,esi - or eax,ebp - mov DWORD PTR 120[edi],edx - mov DWORD PTR 124[edi],eax - mov eax,4 -$L013done: - lea edx,DWORD PTR 144[edi] - add esp,16 - pop edi - pop esi - pop ebx - pop ebp - ret -_Camellia_Ekeygen ENDP -ALIGN 16 -_Camellia_set_key PROC PUBLIC -$L_Camellia_set_key_begin:: - push ebx - mov ecx,DWORD PTR 8[esp] - mov ebx,DWORD PTR 12[esp] - mov edx,DWORD PTR 16[esp] - mov eax,-1 - test ecx,ecx - jz $L014done - test edx,edx - jz $L014done - mov eax,-2 - cmp ebx,256 - je $L015arg_ok - cmp ebx,192 - je $L015arg_ok - cmp ebx,128 - jne $L014done -ALIGN 4 -$L015arg_ok: - push edx - push ecx - push ebx - call $L_Camellia_Ekeygen_begin - add esp,12 - mov DWORD PTR [edx],eax - xor eax,eax -ALIGN 4 -$L014done: - pop ebx - ret -_Camellia_set_key ENDP -ALIGN 64 -$LCamellia_SIGMA:: -DD 2694735487,1003262091,3061508184,1286239154 -DD 3337565999,3914302142,1426019237,4057165596 -DD 283453434,3731369245,2958461122,3018244605 -DD 0,0,0,0 -ALIGN 64 -$LCamellia_SBOX:: -DD 1886416896,1886388336 -DD 2189591040,741081132 -DD 741092352,3014852787 -DD 3974949888,3233808576 -DD 3014898432,3840147684 -DD 656877312,1465319511 -DD 3233857536,3941204202 -DD 3857048832,2930639022 -DD 3840205824,589496355 -DD 2240120064,1802174571 -DD 1465341696,1162149957 -DD 892679424,2779054245 -DD 3941263872,3991732461 -DD 202116096,1330577487 -DD 2930683392,488439837 -DD 1094795520,2459041938 -DD 589505280,2256928902 -DD 4025478912,2947481775 -DD 1802201856,2088501372 -DD 2475922176,522125343 -DD 1162167552,1044250686 -DD 421075200,3705405660 -DD 2779096320,1583218782 -DD 555819264,185270283 -DD 3991792896,2795896998 -DD 235802112,960036921 -DD 1330597632,3587506389 -DD 1313754624,1566376029 -DD 488447232,3654877401 -DD 1701143808,1515847770 -DD 2459079168,1364262993 -DD 3183328512,1819017324 -DD 2256963072,2341142667 -DD 3099113472,2593783962 -DD 2947526400,4227531003 -DD 2408550144,2964324528 -DD 2088532992,1953759348 -DD 3958106880,724238379 -DD 522133248,4042260720 -DD 3469659648,2223243396 -DD 1044266496,3755933919 -DD 808464384,3419078859 -DD 3705461760,875823156 -DD 1600085760,1987444854 -DD 1583242752,1835860077 -DD 3318072576,2846425257 -DD 185273088,3520135377 -DD 437918208,67371012 -DD 2795939328,336855060 -DD 3789676800,976879674 -DD 960051456,3739091166 -DD 3402287616,286326801 -DD 3587560704,842137650 -DD 1195853568,2627469468 -DD 1566399744,1397948499 -DD 1027423488,4075946226 -DD 3654932736,4278059262 -DD 16843008,3486449871 -DD 1515870720,3284336835 -DD 3604403712,2054815866 -DD 1364283648,606339108 -DD 1448498688,3907518696 -DD 1819044864,1616904288 -DD 1296911616,1768489065 -DD 2341178112,2863268010 -DD 218959104,2694840480 -DD 2593823232,2711683233 -DD 1717986816,1650589794 -DD 4227595008,1414791252 -DD 3435973632,505282590 -DD 2964369408,3772776672 -DD 757935360,1684275300 -DD 1953788928,269484048 -DD 303174144,0 -DD 724249344,2745368739 -DD 538976256,1970602101 -DD 4042321920,2324299914 -DD 2981212416,3873833190 -DD 2223277056,151584777 -DD 2576980224,3722248413 -DD 3755990784,2273771655 -DD 1280068608,2206400643 -DD 3419130624,3452764365 -DD 3267543552,2425356432 -DD 875836416,1936916595 -DD 2122219008,4143317238 -DD 1987474944,2644312221 -DD 84215040,3216965823 -DD 1835887872,1381105746 -DD 3082270464,3638034648 -DD 2846468352,3368550600 -DD 825307392,3334865094 -DD 3520188672,2172715137 -DD 387389184,1869545583 -DD 67372032,320012307 -DD 3621246720,1667432547 -DD 336860160,3924361449 -DD 1482184704,2812739751 -DD 976894464,2677997727 -DD 1633771776,3166437564 -DD 3739147776,690552873 -DD 454761216,4193845497 -DD 286331136,791609391 -DD 471604224,3031695540 -DD 842150400,2021130360 -DD 252645120,101056518 -DD 2627509248,3890675943 -DD 370546176,1903231089 -DD 1397969664,3570663636 -DD 404232192,2880110763 -DD 4076007936,2290614408 -DD 572662272,2374828173 -DD 4278124032,1920073842 -DD 1145324544,3115909305 -DD 3486502656,4177002744 -DD 2998055424,2896953516 -DD 3284386560,909508662 -DD 3048584448,707395626 -DD 2054846976,1010565180 -DD 2442236160,4059103473 -DD 606348288,1077936192 -DD 134744064,3553820883 -DD 3907577856,3149594811 -DD 2829625344,1128464451 -DD 1616928768,353697813 -DD 4244438016,2913796269 -DD 1768515840,2004287607 -DD 1347440640,2155872384 -DD 2863311360,2189557890 -DD 3503345664,3974889708 -DD 2694881280,656867367 -DD 2105376000,3856990437 -DD 2711724288,2240086149 -DD 2307492096,892665909 -DD 1650614784,202113036 -DD 2543294208,1094778945 -DD 1414812672,4025417967 -DD 1532713728,2475884691 -DD 505290240,421068825 -DD 2509608192,555810849 -DD 3772833792,235798542 -DD 4294967040,1313734734 -DD 1684300800,1701118053 -DD 3537031680,3183280317 -DD 269488128,3099066552 -DD 3301229568,2408513679 -DD 0,3958046955 -DD 1212696576,3469607118 -DD 2745410304,808452144 -DD 4160222976,1600061535 -DD 1970631936,3318022341 -DD 3688618752,437911578 -DD 2324335104,3789619425 -DD 50529024,3402236106 -DD 3873891840,1195835463 -DD 3671775744,1027407933 -DD 151587072,16842753 -DD 1061109504,3604349142 -DD 3722304768,1448476758 -DD 2492765184,1296891981 -DD 2273806080,218955789 -DD 1549556736,1717960806 -DD 2206434048,3435921612 -DD 33686016,757923885 -DD 3452816640,303169554 -DD 1246382592,538968096 -DD 2425393152,2981167281 -DD 858993408,2576941209 -DD 1936945920,1280049228 -DD 1734829824,3267494082 -DD 4143379968,2122186878 -DD 4092850944,84213765 -DD 2644352256,3082223799 -DD 2139062016,825294897 -DD 3217014528,387383319 -DD 3806519808,3621191895 -DD 1381126656,1482162264 -DD 2610666240,1633747041 -DD 3638089728,454754331 -DD 640034304,471597084 -DD 3368601600,252641295 -DD 926365440,370540566 -DD 3334915584,404226072 -DD 993737472,572653602 -DD 2172748032,1145307204 -DD 2526451200,2998010034 -DD 1869573888,3048538293 -DD 1263225600,2442199185 -DD 320017152,134742024 -DD 3200171520,2829582504 -DD 1667457792,4244373756 -DD 774778368,1347420240 -DD 3924420864,3503292624 -DD 2038003968,2105344125 -DD 2812782336,2307457161 -DD 2358021120,2543255703 -DD 2678038272,1532690523 -DD 1852730880,2509570197 -DD 3166485504,4294902015 -DD 2391707136,3536978130 -DD 690563328,3301179588 -DD 4126536960,1212678216 -DD 4193908992,4160159991 -DD 3065427456,3688562907 -DD 791621376,50528259 -DD 4261281024,3671720154 -DD 3031741440,1061093439 -DD 1499027712,2492727444 -DD 2021160960,1549533276 -DD 2560137216,33685506 -DD 101058048,1246363722 -DD 1785358848,858980403 -DD 3890734848,1734803559 -DD 1179010560,4092788979 -DD 1903259904,2139029631 -DD 3132799488,3806462178 -DD 3570717696,2610626715 -DD 623191296,640024614 -DD 2880154368,926351415 -DD 1111638528,993722427 -DD 2290649088,2526412950 -DD 2728567296,1263206475 -DD 2374864128,3200123070 -DD 4210752000,774766638 -DD 1920102912,2037973113 -DD 117901056,2357985420 -DD 3115956480,1852702830 -DD 1431655680,2391670926 -DD 4177065984,4126474485 -DD 4008635904,3065381046 -DD 2896997376,4261216509 -DD 168430080,1499005017 -DD 909522432,2560098456 -DD 1229539584,1785331818 -DD 707406336,1178992710 -DD 1751672832,3132752058 -DD 1010580480,623181861 -DD 943208448,1111621698 -DD 4059164928,2728525986 -DD 2762253312,4210688250 -DD 1077952512,117899271 -DD 673720320,1431634005 -DD 3553874688,4008575214 -DD 2071689984,168427530 -DD 3149642496,1229520969 -DD 3385444608,1751646312 -DD 1128481536,943194168 -DD 3250700544,2762211492 -DD 353703168,673710120 -DD 3823362816,2071658619 -DD 2913840384,3385393353 -DD 4109693952,3250651329 -DD 2004317952,3823304931 -DD 3351758592,4109631732 -DD 2155905024,3351707847 -DD 2661195264,2661154974 -DD 14737632,939538488 -DD 328965,1090535745 -DD 5789784,369104406 -DD 14277081,1979741814 -DD 6776679,3640711641 -DD 5131854,2466288531 -DD 8487297,1610637408 -DD 13355979,4060148466 -DD 13224393,1912631922 -DD 723723,3254829762 -DD 11447982,2868947883 -DD 6974058,2583730842 -DD 14013909,1962964341 -DD 1579032,100664838 -DD 6118749,1459640151 -DD 8553090,2684395680 -DD 4605510,2432733585 -DD 14671839,4144035831 -DD 14079702,3036722613 -DD 2565927,3372272073 -DD 9079434,2717950626 -DD 3289650,2348846220 -DD 4934475,3523269330 -DD 4342338,2415956112 -DD 14408667,4127258358 -DD 1842204,117442311 -DD 10395294,2801837991 -DD 10263708,654321447 -DD 3815994,2382401166 -DD 13290186,2986390194 -DD 2434341,1224755529 -DD 8092539,3724599006 -DD 855309,1124090691 -DD 7434609,1543527516 -DD 6250335,3607156695 -DD 2039583,3338717127 -DD 16316664,1040203326 -DD 14145495,4110480885 -DD 4079166,2399178639 -DD 10329501,1728079719 -DD 8158332,520101663 -DD 6316128,402659352 -DD 12171705,1845522030 -DD 12500670,2936057775 -DD 12369084,788541231 -DD 9145227,3791708898 -DD 1447446,2231403909 -DD 3421236,218107149 -DD 5066061,1392530259 -DD 12829635,4026593520 -DD 7500402,2617285788 -DD 9803157,1694524773 -DD 11250603,3925928682 -DD 9342606,2734728099 -DD 12237498,2919280302 -DD 8026746,2650840734 -DD 11776947,3959483628 -DD 131586,2147516544 -DD 11842740,754986285 -DD 11382189,1795189611 -DD 10658466,2818615464 -DD 11316396,721431339 -DD 14211288,905983542 -DD 10132122,2785060518 -DD 1513239,3305162181 -DD 1710618,2248181382 -DD 3487029,1291865421 -DD 13421772,855651123 -DD 16250871,4244700669 -DD 10066329,1711302246 -DD 6381921,1476417624 -DD 5921370,2516620950 -DD 15263976,973093434 -DD 2368548,150997257 -DD 5658198,2499843477 -DD 4210752,268439568 -DD 14803425,2013296760 -DD 6513507,3623934168 -DD 592137,1107313218 -DD 3355443,3422604492 -DD 12566463,4009816047 -DD 10000536,637543974 -DD 9934743,3842041317 -DD 8750469,1627414881 -DD 6842472,436214298 -DD 16579836,1056980799 -DD 15527148,989870907 -DD 657930,2181071490 -DD 14342874,3053500086 -DD 7303023,3674266587 -DD 5460819,3556824276 -DD 6447714,2550175896 -DD 10724259,3892373736 -DD 3026478,2332068747 -DD 526344,33554946 -DD 11513775,3942706155 -DD 2631720,167774730 -DD 11579568,738208812 -DD 7631988,486546717 -DD 12763842,2952835248 -DD 12434877,1862299503 -DD 3552822,2365623693 -DD 2236962,2281736328 -DD 3684408,234884622 -DD 6579300,419436825 -DD 1973790,2264958855 -DD 3750201,1308642894 -DD 2894892,184552203 -DD 10921638,2835392937 -DD 3158064,201329676 -DD 15066597,2030074233 -DD 4473924,285217041 -DD 16645629,2130739071 -DD 8947848,570434082 -DD 10461087,3875596263 -DD 6645093,1493195097 -DD 8882055,3774931425 -DD 7039851,3657489114 -DD 16053492,1023425853 -DD 2302755,3355494600 -DD 4737096,301994514 -DD 1052688,67109892 -DD 13750737,1946186868 -DD 5329233,1409307732 -DD 12632256,805318704 -DD 16382457,2113961598 -DD 13816530,3019945140 -DD 10526880,671098920 -DD 5592405,1426085205 -DD 10592673,1744857192 -DD 4276545,1342197840 -DD 16448250,3187719870 -DD 4408131,3489714384 -DD 1250067,3288384708 -DD 12895428,822096177 -DD 3092271,3405827019 -DD 11053224,704653866 -DD 11974326,2902502829 -DD 3947580,251662095 -DD 2829099,3389049546 -DD 12698049,1879076976 -DD 16777215,4278255615 -DD 13158600,838873650 -DD 10855845,1761634665 -DD 2105376,134219784 -DD 9013641,1644192354 -DD 0,0 -DD 9474192,603989028 -DD 4671303,3506491857 -DD 15724527,4211145723 -DD 15395562,3120609978 -DD 12040119,3976261101 -DD 1381653,1157645637 -DD 394758,2164294017 -DD 13487565,1929409395 -DD 11908533,1828744557 -DD 1184274,2214626436 -DD 8289918,2667618207 -DD 12303291,3993038574 -DD 2697513,1241533002 -DD 986895,3271607235 -DD 12105912,771763758 -DD 460551,3238052289 -DD 263172,16777473 -DD 10197915,3858818790 -DD 9737364,620766501 -DD 2171169,1207978056 -DD 6710886,2566953369 -DD 15132390,3103832505 -DD 13553358,3003167667 -DD 15592941,2063629179 -DD 15198183,4177590777 -DD 3881787,3456159438 -DD 16711422,3204497343 -DD 8355711,3741376479 -DD 12961221,1895854449 -DD 10790052,687876393 -DD 3618615,3439381965 -DD 11645361,1811967084 -DD 5000268,318771987 -DD 9539985,1677747300 -DD 7237230,2600508315 -DD 9276813,1660969827 -DD 7763574,2634063261 -DD 197379,3221274816 -DD 2960685,1258310475 -DD 14606046,3070277559 -DD 9868950,2768283045 -DD 2500134,2298513801 -DD 8224125,1593859935 -DD 13027014,2969612721 -DD 6052956,385881879 -DD 13882323,4093703412 -DD 15921906,3154164924 -DD 5197647,3540046803 -DD 1644825,1174423110 -DD 4144959,3472936911 -DD 14474460,922761015 -DD 7960953,1577082462 -DD 1907997,1191200583 -DD 5395026,2483066004 -DD 15461355,4194368250 -DD 15987699,4227923196 -DD 7171437,1526750043 -DD 6184542,2533398423 -DD 16514043,4261478142 -DD 6908265,1509972570 -DD 11711154,2885725356 -DD 15790320,1006648380 -DD 3223857,1275087948 -DD 789516,50332419 -DD 13948116,889206069 -DD 13619151,4076925939 -DD 9211020,587211555 -DD 14869218,3087055032 -DD 7697781,1560304989 -DD 11119017,1778412138 -DD 4868682,2449511058 -DD 5723991,3573601749 -DD 8684676,553656609 -DD 1118481,1140868164 -DD 4539717,1358975313 -DD 1776411,3321939654 -DD 16119285,2097184125 -DD 15000804,956315961 -DD 921102,2197848963 -DD 7566195,3691044060 -DD 11184810,2852170410 -DD 15856113,2080406652 -DD 14540253,1996519287 -DD 5855577,1442862678 -DD 1315860,83887365 -DD 7105644,452991771 -DD 9605778,2751505572 -DD 5526612,352326933 -DD 13684944,872428596 -DD 7895160,503324190 -DD 7368816,469769244 -DD 14935011,4160813304 -DD 4802889,1375752786 -DD 8421504,536879136 -DD 5263440,335549460 -DD 10987431,3909151209 -DD 16185078,3170942397 -DD 7829367,3707821533 -DD 9671571,3825263844 -DD 8816262,2701173153 -DD 8618883,3758153952 -DD 2763306,2315291274 -DD 13092807,4043370993 -DD 5987163,3590379222 -DD 15329769,2046851706 -DD 15658734,3137387451 -DD 9408399,3808486371 -DD 65793,1073758272 -DD 4013373,1325420367 -ALIGN 16 -_Camellia_cbc_encrypt PROC PUBLIC -$L_Camellia_cbc_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov ecx,DWORD PTR 28[esp] - cmp ecx,0 - je $L016enc_out - pushfd - cld - mov eax,DWORD PTR 24[esp] - mov ebx,DWORD PTR 28[esp] - mov edx,DWORD PTR 36[esp] - mov ebp,DWORD PTR 40[esp] - lea esi,DWORD PTR [esp-64] - and esi,-64 - lea edi,DWORD PTR [edx-127] - sub edi,esi - neg edi - and edi,960 - sub esi,edi - mov edi,DWORD PTR 44[esp] - xchg esp,esi - add esp,4 - mov DWORD PTR 20[esp],esi - mov DWORD PTR 24[esp],eax - mov DWORD PTR 28[esp],ebx - mov DWORD PTR 32[esp],ecx - mov DWORD PTR 36[esp],edx - mov DWORD PTR 40[esp],ebp - call $L017pic_point -$L017pic_point: - pop ebp - lea ebp,DWORD PTR ($LCamellia_SBOX-$L017pic_point)[ebp] - mov esi,32 -ALIGN 4 -$L018prefetch_sbox: - mov eax,DWORD PTR [ebp] - mov ebx,DWORD PTR 32[ebp] - mov ecx,DWORD PTR 64[ebp] - mov edx,DWORD PTR 96[ebp] - lea ebp,DWORD PTR 128[ebp] - dec esi - jnz $L018prefetch_sbox - mov eax,DWORD PTR 36[esp] - sub ebp,4096 - mov esi,DWORD PTR 24[esp] - mov edx,DWORD PTR 272[eax] - cmp edi,0 - je $L019DECRYPT - mov ecx,DWORD PTR 32[esp] - mov edi,DWORD PTR 40[esp] - shl edx,6 - lea edx,DWORD PTR [edx*1+eax] - mov DWORD PTR 16[esp],edx - test ecx,4294967280 - jz $L020enc_tail - mov eax,DWORD PTR [edi] - mov ebx,DWORD PTR 4[edi] -ALIGN 4 -$L021enc_loop: - mov ecx,DWORD PTR 8[edi] - mov edx,DWORD PTR 12[edi] - xor eax,DWORD PTR [esi] - xor ebx,DWORD PTR 4[esi] - xor ecx,DWORD PTR 8[esi] - bswap eax - xor edx,DWORD PTR 12[esi] - bswap ebx - mov edi,DWORD PTR 36[esp] - bswap ecx - bswap edx - call __x86_Camellia_encrypt - mov esi,DWORD PTR 24[esp] - mov edi,DWORD PTR 28[esp] - bswap eax - bswap ebx - bswap ecx - mov DWORD PTR [edi],eax - bswap edx - mov DWORD PTR 4[edi],ebx - mov DWORD PTR 8[edi],ecx - mov DWORD PTR 12[edi],edx - mov ecx,DWORD PTR 32[esp] - lea esi,DWORD PTR 16[esi] - mov DWORD PTR 24[esp],esi - lea edx,DWORD PTR 16[edi] - mov DWORD PTR 28[esp],edx - sub ecx,16 - test ecx,4294967280 - mov DWORD PTR 32[esp],ecx - jnz $L021enc_loop - test ecx,15 - jnz $L020enc_tail - mov esi,DWORD PTR 40[esp] - mov ecx,DWORD PTR 8[edi] - mov edx,DWORD PTR 12[edi] - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],ecx - mov DWORD PTR 12[esi],edx - mov esp,DWORD PTR 20[esp] - popfd -$L016enc_out: - pop edi - pop esi - pop ebx - pop ebp - ret - pushfd -ALIGN 4 -$L020enc_tail: - mov eax,edi - mov edi,DWORD PTR 28[esp] - push eax - mov ebx,16 - sub ebx,ecx - cmp edi,esi - je $L022enc_in_place -ALIGN 4 -DD 2767451785 - jmp $L023enc_skip_in_place -$L022enc_in_place: - lea edi,DWORD PTR [ecx*1+edi] -$L023enc_skip_in_place: - mov ecx,ebx - xor eax,eax -ALIGN 4 -DD 2868115081 - pop edi - mov esi,DWORD PTR 28[esp] - mov eax,DWORD PTR [edi] - mov ebx,DWORD PTR 4[edi] - mov DWORD PTR 32[esp],16 - jmp $L021enc_loop -ALIGN 16 -$L019DECRYPT: - shl edx,6 - lea edx,DWORD PTR [edx*1+eax] - mov DWORD PTR 16[esp],eax - mov DWORD PTR 36[esp],edx - cmp esi,DWORD PTR 28[esp] - je $L024dec_in_place - mov edi,DWORD PTR 40[esp] - mov DWORD PTR 44[esp],edi -ALIGN 4 -$L025dec_loop: - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - bswap eax - mov edx,DWORD PTR 12[esi] - bswap ebx - mov edi,DWORD PTR 36[esp] - bswap ecx - bswap edx - call __x86_Camellia_decrypt - mov edi,DWORD PTR 44[esp] - mov esi,DWORD PTR 32[esp] - bswap eax - bswap ebx - bswap ecx - xor eax,DWORD PTR [edi] - bswap edx - xor ebx,DWORD PTR 4[edi] - xor ecx,DWORD PTR 8[edi] - xor edx,DWORD PTR 12[edi] - sub esi,16 - jc $L026dec_partial - mov DWORD PTR 32[esp],esi - mov esi,DWORD PTR 24[esp] - mov edi,DWORD PTR 28[esp] - mov DWORD PTR [edi],eax - mov DWORD PTR 4[edi],ebx - mov DWORD PTR 8[edi],ecx - mov DWORD PTR 12[edi],edx - mov DWORD PTR 44[esp],esi - lea esi,DWORD PTR 16[esi] - mov DWORD PTR 24[esp],esi - lea edi,DWORD PTR 16[edi] - mov DWORD PTR 28[esp],edi - jnz $L025dec_loop - mov edi,DWORD PTR 44[esp] -$L027dec_end: - mov esi,DWORD PTR 40[esp] - mov eax,DWORD PTR [edi] - mov ebx,DWORD PTR 4[edi] - mov ecx,DWORD PTR 8[edi] - mov edx,DWORD PTR 12[edi] - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],ecx - mov DWORD PTR 12[esi],edx - jmp $L028dec_out -ALIGN 4 -$L026dec_partial: - lea edi,DWORD PTR 44[esp] - mov DWORD PTR [edi],eax - mov DWORD PTR 4[edi],ebx - mov DWORD PTR 8[edi],ecx - mov DWORD PTR 12[edi],edx - lea ecx,DWORD PTR 16[esi] - mov esi,edi - mov edi,DWORD PTR 28[esp] -DD 2767451785 - mov edi,DWORD PTR 24[esp] - jmp $L027dec_end -ALIGN 4 -$L024dec_in_place: -$L029dec_in_place_loop: - lea edi,DWORD PTR 44[esp] - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edx,DWORD PTR 12[esi] - mov DWORD PTR [edi],eax - mov DWORD PTR 4[edi],ebx - mov DWORD PTR 8[edi],ecx - bswap eax - mov DWORD PTR 12[edi],edx - bswap ebx - mov edi,DWORD PTR 36[esp] - bswap ecx - bswap edx - call __x86_Camellia_decrypt - mov edi,DWORD PTR 40[esp] - mov esi,DWORD PTR 28[esp] - bswap eax - bswap ebx - bswap ecx - xor eax,DWORD PTR [edi] - bswap edx - xor ebx,DWORD PTR 4[edi] - xor ecx,DWORD PTR 8[edi] - xor edx,DWORD PTR 12[edi] - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],ecx - mov DWORD PTR 12[esi],edx - lea esi,DWORD PTR 16[esi] - mov DWORD PTR 28[esp],esi - lea esi,DWORD PTR 44[esp] - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edx,DWORD PTR 12[esi] - mov DWORD PTR [edi],eax - mov DWORD PTR 4[edi],ebx - mov DWORD PTR 8[edi],ecx - mov DWORD PTR 12[edi],edx - mov esi,DWORD PTR 24[esp] - lea esi,DWORD PTR 16[esi] - mov DWORD PTR 24[esp],esi - mov ecx,DWORD PTR 32[esp] - sub ecx,16 - jc $L030dec_in_place_partial - mov DWORD PTR 32[esp],ecx - jnz $L029dec_in_place_loop - jmp $L028dec_out -ALIGN 4 -$L030dec_in_place_partial: - mov edi,DWORD PTR 28[esp] - lea esi,DWORD PTR 44[esp] - lea edi,DWORD PTR [ecx*1+edi] - lea esi,DWORD PTR 16[ecx*1+esi] - neg ecx -DD 2767451785 -ALIGN 4 -$L028dec_out: - mov esp,DWORD PTR 20[esp] - popfd - pop edi - pop esi - pop ebx - pop ebp - ret -_Camellia_cbc_encrypt ENDP -DB 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54 -DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 -DB 115,108,46,111,114,103,62,0 -.text$ ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +ALIGN 16 +_Camellia_EncryptBlock_Rounds PROC PUBLIC +$L_Camellia_EncryptBlock_Rounds_begin:: + push ebp + push ebx + push esi + push edi + mov eax,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edi,DWORD PTR 28[esp] + mov ebx,esp + sub esp,28 + and esp,-64 + lea ecx,DWORD PTR [edi-127] + sub ecx,esp + neg ecx + and ecx,960 + sub esp,ecx + add esp,4 + shl eax,6 + lea eax,DWORD PTR [eax*1+edi] + mov DWORD PTR 20[esp],ebx + mov DWORD PTR 16[esp],eax + call $L000pic_point +$L000pic_point: + pop ebp + lea ebp,DWORD PTR ($LCamellia_SBOX-$L000pic_point)[ebp] + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + bswap eax + mov edx,DWORD PTR 12[esi] + bswap ebx + bswap ecx + bswap edx + call __x86_Camellia_encrypt + mov esp,DWORD PTR 20[esp] + bswap eax + mov esi,DWORD PTR 32[esp] + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],ecx + mov DWORD PTR 12[esi],edx + pop edi + pop esi + pop ebx + pop ebp + ret +_Camellia_EncryptBlock_Rounds ENDP +ALIGN 16 +_Camellia_EncryptBlock PROC PUBLIC +$L_Camellia_EncryptBlock_begin:: + mov eax,128 + sub eax,DWORD PTR 4[esp] + mov eax,3 + adc eax,0 + mov DWORD PTR 4[esp],eax + jmp $L_Camellia_EncryptBlock_Rounds_begin +_Camellia_EncryptBlock ENDP +ALIGN 16 +_Camellia_encrypt PROC PUBLIC +$L_Camellia_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 28[esp] + mov ebx,esp + sub esp,28 + and esp,-64 + mov eax,DWORD PTR 272[edi] + lea ecx,DWORD PTR [edi-127] + sub ecx,esp + neg ecx + and ecx,960 + sub esp,ecx + add esp,4 + shl eax,6 + lea eax,DWORD PTR [eax*1+edi] + mov DWORD PTR 20[esp],ebx + mov DWORD PTR 16[esp],eax + call $L001pic_point +$L001pic_point: + pop ebp + lea ebp,DWORD PTR ($LCamellia_SBOX-$L001pic_point)[ebp] + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + bswap eax + mov edx,DWORD PTR 12[esi] + bswap ebx + bswap ecx + bswap edx + call __x86_Camellia_encrypt + mov esp,DWORD PTR 20[esp] + bswap eax + mov esi,DWORD PTR 24[esp] + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],ecx + mov DWORD PTR 12[esi],edx + pop edi + pop esi + pop ebx + pop ebp + ret +_Camellia_encrypt ENDP +ALIGN 16 +__x86_Camellia_encrypt PROC PRIVATE + xor eax,DWORD PTR [edi] + xor ebx,DWORD PTR 4[edi] + xor ecx,DWORD PTR 8[edi] + xor edx,DWORD PTR 12[edi] + mov esi,DWORD PTR 16[edi] + mov DWORD PTR 4[esp],eax + mov DWORD PTR 8[esp],ebx + mov DWORD PTR 12[esp],ecx + mov DWORD PTR 16[esp],edx +ALIGN 16 +$L002loop: + xor eax,esi + xor ebx,DWORD PTR 20[edi] + movzx esi,ah + mov edx,DWORD PTR 2052[esi*8+ebp] + movzx esi,al + xor edx,DWORD PTR 4[esi*8+ebp] + shr eax,16 + movzx esi,bl + mov ecx,DWORD PTR [esi*8+ebp] + movzx esi,ah + xor edx,DWORD PTR [esi*8+ebp] + movzx esi,bh + xor ecx,DWORD PTR 4[esi*8+ebp] + shr ebx,16 + movzx eax,al + xor edx,DWORD PTR 2048[eax*8+ebp] + movzx esi,bh + mov eax,DWORD PTR 16[esp] + xor ecx,edx + ror edx,8 + xor ecx,DWORD PTR 2048[esi*8+ebp] + movzx esi,bl + mov ebx,DWORD PTR 12[esp] + xor edx,eax + xor ecx,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 24[edi] + xor edx,ecx + mov DWORD PTR 16[esp],edx + xor ecx,ebx + mov DWORD PTR 12[esp],ecx + xor ecx,esi + xor edx,DWORD PTR 28[edi] + movzx esi,ch + mov ebx,DWORD PTR 2052[esi*8+ebp] + movzx esi,cl + xor ebx,DWORD PTR 4[esi*8+ebp] + shr ecx,16 + movzx esi,dl + mov eax,DWORD PTR [esi*8+ebp] + movzx esi,ch + xor ebx,DWORD PTR [esi*8+ebp] + movzx esi,dh + xor eax,DWORD PTR 4[esi*8+ebp] + shr edx,16 + movzx ecx,cl + xor ebx,DWORD PTR 2048[ecx*8+ebp] + movzx esi,dh + mov ecx,DWORD PTR 8[esp] + xor eax,ebx + ror ebx,8 + xor eax,DWORD PTR 2048[esi*8+ebp] + movzx esi,dl + mov edx,DWORD PTR 4[esp] + xor ebx,ecx + xor eax,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 32[edi] + xor ebx,eax + mov DWORD PTR 8[esp],ebx + xor eax,edx + mov DWORD PTR 4[esp],eax + xor eax,esi + xor ebx,DWORD PTR 36[edi] + movzx esi,ah + mov edx,DWORD PTR 2052[esi*8+ebp] + movzx esi,al + xor edx,DWORD PTR 4[esi*8+ebp] + shr eax,16 + movzx esi,bl + mov ecx,DWORD PTR [esi*8+ebp] + movzx esi,ah + xor edx,DWORD PTR [esi*8+ebp] + movzx esi,bh + xor ecx,DWORD PTR 4[esi*8+ebp] + shr ebx,16 + movzx eax,al + xor edx,DWORD PTR 2048[eax*8+ebp] + movzx esi,bh + mov eax,DWORD PTR 16[esp] + xor ecx,edx + ror edx,8 + xor ecx,DWORD PTR 2048[esi*8+ebp] + movzx esi,bl + mov ebx,DWORD PTR 12[esp] + xor edx,eax + xor ecx,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 40[edi] + xor edx,ecx + mov DWORD PTR 16[esp],edx + xor ecx,ebx + mov DWORD PTR 12[esp],ecx + xor ecx,esi + xor edx,DWORD PTR 44[edi] + movzx esi,ch + mov ebx,DWORD PTR 2052[esi*8+ebp] + movzx esi,cl + xor ebx,DWORD PTR 4[esi*8+ebp] + shr ecx,16 + movzx esi,dl + mov eax,DWORD PTR [esi*8+ebp] + movzx esi,ch + xor ebx,DWORD PTR [esi*8+ebp] + movzx esi,dh + xor eax,DWORD PTR 4[esi*8+ebp] + shr edx,16 + movzx ecx,cl + xor ebx,DWORD PTR 2048[ecx*8+ebp] + movzx esi,dh + mov ecx,DWORD PTR 8[esp] + xor eax,ebx + ror ebx,8 + xor eax,DWORD PTR 2048[esi*8+ebp] + movzx esi,dl + mov edx,DWORD PTR 4[esp] + xor ebx,ecx + xor eax,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 48[edi] + xor ebx,eax + mov DWORD PTR 8[esp],ebx + xor eax,edx + mov DWORD PTR 4[esp],eax + xor eax,esi + xor ebx,DWORD PTR 52[edi] + movzx esi,ah + mov edx,DWORD PTR 2052[esi*8+ebp] + movzx esi,al + xor edx,DWORD PTR 4[esi*8+ebp] + shr eax,16 + movzx esi,bl + mov ecx,DWORD PTR [esi*8+ebp] + movzx esi,ah + xor edx,DWORD PTR [esi*8+ebp] + movzx esi,bh + xor ecx,DWORD PTR 4[esi*8+ebp] + shr ebx,16 + movzx eax,al + xor edx,DWORD PTR 2048[eax*8+ebp] + movzx esi,bh + mov eax,DWORD PTR 16[esp] + xor ecx,edx + ror edx,8 + xor ecx,DWORD PTR 2048[esi*8+ebp] + movzx esi,bl + mov ebx,DWORD PTR 12[esp] + xor edx,eax + xor ecx,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 56[edi] + xor edx,ecx + mov DWORD PTR 16[esp],edx + xor ecx,ebx + mov DWORD PTR 12[esp],ecx + xor ecx,esi + xor edx,DWORD PTR 60[edi] + movzx esi,ch + mov ebx,DWORD PTR 2052[esi*8+ebp] + movzx esi,cl + xor ebx,DWORD PTR 4[esi*8+ebp] + shr ecx,16 + movzx esi,dl + mov eax,DWORD PTR [esi*8+ebp] + movzx esi,ch + xor ebx,DWORD PTR [esi*8+ebp] + movzx esi,dh + xor eax,DWORD PTR 4[esi*8+ebp] + shr edx,16 + movzx ecx,cl + xor ebx,DWORD PTR 2048[ecx*8+ebp] + movzx esi,dh + mov ecx,DWORD PTR 8[esp] + xor eax,ebx + ror ebx,8 + xor eax,DWORD PTR 2048[esi*8+ebp] + movzx esi,dl + mov edx,DWORD PTR 4[esp] + xor ebx,ecx + xor eax,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 64[edi] + xor ebx,eax + mov DWORD PTR 8[esp],ebx + xor eax,edx + mov DWORD PTR 4[esp],eax + add edi,64 + cmp edi,DWORD PTR 20[esp] + je $L003done + and esi,eax + mov edx,DWORD PTR 16[esp] + rol esi,1 + mov ecx,edx + xor ebx,esi + or ecx,DWORD PTR 12[edi] + mov DWORD PTR 8[esp],ebx + xor ecx,DWORD PTR 12[esp] + mov esi,DWORD PTR 4[edi] + mov DWORD PTR 12[esp],ecx + or esi,ebx + and ecx,DWORD PTR 8[edi] + xor eax,esi + rol ecx,1 + mov DWORD PTR 4[esp],eax + xor edx,ecx + mov esi,DWORD PTR 16[edi] + mov DWORD PTR 16[esp],edx + jmp $L002loop +ALIGN 8 +$L003done: + mov ecx,eax + mov edx,ebx + mov eax,DWORD PTR 12[esp] + mov ebx,DWORD PTR 16[esp] + xor eax,esi + xor ebx,DWORD PTR 4[edi] + xor ecx,DWORD PTR 8[edi] + xor edx,DWORD PTR 12[edi] + ret +__x86_Camellia_encrypt ENDP +ALIGN 16 +_Camellia_DecryptBlock_Rounds PROC PUBLIC +$L_Camellia_DecryptBlock_Rounds_begin:: + push ebp + push ebx + push esi + push edi + mov eax,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edi,DWORD PTR 28[esp] + mov ebx,esp + sub esp,28 + and esp,-64 + lea ecx,DWORD PTR [edi-127] + sub ecx,esp + neg ecx + and ecx,960 + sub esp,ecx + add esp,4 + shl eax,6 + mov DWORD PTR 16[esp],edi + lea edi,DWORD PTR [eax*1+edi] + mov DWORD PTR 20[esp],ebx + call $L004pic_point +$L004pic_point: + pop ebp + lea ebp,DWORD PTR ($LCamellia_SBOX-$L004pic_point)[ebp] + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + bswap eax + mov edx,DWORD PTR 12[esi] + bswap ebx + bswap ecx + bswap edx + call __x86_Camellia_decrypt + mov esp,DWORD PTR 20[esp] + bswap eax + mov esi,DWORD PTR 32[esp] + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],ecx + mov DWORD PTR 12[esi],edx + pop edi + pop esi + pop ebx + pop ebp + ret +_Camellia_DecryptBlock_Rounds ENDP +ALIGN 16 +_Camellia_DecryptBlock PROC PUBLIC +$L_Camellia_DecryptBlock_begin:: + mov eax,128 + sub eax,DWORD PTR 4[esp] + mov eax,3 + adc eax,0 + mov DWORD PTR 4[esp],eax + jmp $L_Camellia_DecryptBlock_Rounds_begin +_Camellia_DecryptBlock ENDP +ALIGN 16 +_Camellia_decrypt PROC PUBLIC +$L_Camellia_decrypt_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 28[esp] + mov ebx,esp + sub esp,28 + and esp,-64 + mov eax,DWORD PTR 272[edi] + lea ecx,DWORD PTR [edi-127] + sub ecx,esp + neg ecx + and ecx,960 + sub esp,ecx + add esp,4 + shl eax,6 + mov DWORD PTR 16[esp],edi + lea edi,DWORD PTR [eax*1+edi] + mov DWORD PTR 20[esp],ebx + call $L005pic_point +$L005pic_point: + pop ebp + lea ebp,DWORD PTR ($LCamellia_SBOX-$L005pic_point)[ebp] + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + bswap eax + mov edx,DWORD PTR 12[esi] + bswap ebx + bswap ecx + bswap edx + call __x86_Camellia_decrypt + mov esp,DWORD PTR 20[esp] + bswap eax + mov esi,DWORD PTR 24[esp] + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],ecx + mov DWORD PTR 12[esi],edx + pop edi + pop esi + pop ebx + pop ebp + ret +_Camellia_decrypt ENDP +ALIGN 16 +__x86_Camellia_decrypt PROC PRIVATE + xor eax,DWORD PTR [edi] + xor ebx,DWORD PTR 4[edi] + xor ecx,DWORD PTR 8[edi] + xor edx,DWORD PTR 12[edi] + mov esi,DWORD PTR [edi-8] + mov DWORD PTR 4[esp],eax + mov DWORD PTR 8[esp],ebx + mov DWORD PTR 12[esp],ecx + mov DWORD PTR 16[esp],edx +ALIGN 16 +$L006loop: + xor eax,esi + xor ebx,DWORD PTR [edi-4] + movzx esi,ah + mov edx,DWORD PTR 2052[esi*8+ebp] + movzx esi,al + xor edx,DWORD PTR 4[esi*8+ebp] + shr eax,16 + movzx esi,bl + mov ecx,DWORD PTR [esi*8+ebp] + movzx esi,ah + xor edx,DWORD PTR [esi*8+ebp] + movzx esi,bh + xor ecx,DWORD PTR 4[esi*8+ebp] + shr ebx,16 + movzx eax,al + xor edx,DWORD PTR 2048[eax*8+ebp] + movzx esi,bh + mov eax,DWORD PTR 16[esp] + xor ecx,edx + ror edx,8 + xor ecx,DWORD PTR 2048[esi*8+ebp] + movzx esi,bl + mov ebx,DWORD PTR 12[esp] + xor edx,eax + xor ecx,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR [edi-16] + xor edx,ecx + mov DWORD PTR 16[esp],edx + xor ecx,ebx + mov DWORD PTR 12[esp],ecx + xor ecx,esi + xor edx,DWORD PTR [edi-12] + movzx esi,ch + mov ebx,DWORD PTR 2052[esi*8+ebp] + movzx esi,cl + xor ebx,DWORD PTR 4[esi*8+ebp] + shr ecx,16 + movzx esi,dl + mov eax,DWORD PTR [esi*8+ebp] + movzx esi,ch + xor ebx,DWORD PTR [esi*8+ebp] + movzx esi,dh + xor eax,DWORD PTR 4[esi*8+ebp] + shr edx,16 + movzx ecx,cl + xor ebx,DWORD PTR 2048[ecx*8+ebp] + movzx esi,dh + mov ecx,DWORD PTR 8[esp] + xor eax,ebx + ror ebx,8 + xor eax,DWORD PTR 2048[esi*8+ebp] + movzx esi,dl + mov edx,DWORD PTR 4[esp] + xor ebx,ecx + xor eax,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR [edi-24] + xor ebx,eax + mov DWORD PTR 8[esp],ebx + xor eax,edx + mov DWORD PTR 4[esp],eax + xor eax,esi + xor ebx,DWORD PTR [edi-20] + movzx esi,ah + mov edx,DWORD PTR 2052[esi*8+ebp] + movzx esi,al + xor edx,DWORD PTR 4[esi*8+ebp] + shr eax,16 + movzx esi,bl + mov ecx,DWORD PTR [esi*8+ebp] + movzx esi,ah + xor edx,DWORD PTR [esi*8+ebp] + movzx esi,bh + xor ecx,DWORD PTR 4[esi*8+ebp] + shr ebx,16 + movzx eax,al + xor edx,DWORD PTR 2048[eax*8+ebp] + movzx esi,bh + mov eax,DWORD PTR 16[esp] + xor ecx,edx + ror edx,8 + xor ecx,DWORD PTR 2048[esi*8+ebp] + movzx esi,bl + mov ebx,DWORD PTR 12[esp] + xor edx,eax + xor ecx,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR [edi-32] + xor edx,ecx + mov DWORD PTR 16[esp],edx + xor ecx,ebx + mov DWORD PTR 12[esp],ecx + xor ecx,esi + xor edx,DWORD PTR [edi-28] + movzx esi,ch + mov ebx,DWORD PTR 2052[esi*8+ebp] + movzx esi,cl + xor ebx,DWORD PTR 4[esi*8+ebp] + shr ecx,16 + movzx esi,dl + mov eax,DWORD PTR [esi*8+ebp] + movzx esi,ch + xor ebx,DWORD PTR [esi*8+ebp] + movzx esi,dh + xor eax,DWORD PTR 4[esi*8+ebp] + shr edx,16 + movzx ecx,cl + xor ebx,DWORD PTR 2048[ecx*8+ebp] + movzx esi,dh + mov ecx,DWORD PTR 8[esp] + xor eax,ebx + ror ebx,8 + xor eax,DWORD PTR 2048[esi*8+ebp] + movzx esi,dl + mov edx,DWORD PTR 4[esp] + xor ebx,ecx + xor eax,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR [edi-40] + xor ebx,eax + mov DWORD PTR 8[esp],ebx + xor eax,edx + mov DWORD PTR 4[esp],eax + xor eax,esi + xor ebx,DWORD PTR [edi-36] + movzx esi,ah + mov edx,DWORD PTR 2052[esi*8+ebp] + movzx esi,al + xor edx,DWORD PTR 4[esi*8+ebp] + shr eax,16 + movzx esi,bl + mov ecx,DWORD PTR [esi*8+ebp] + movzx esi,ah + xor edx,DWORD PTR [esi*8+ebp] + movzx esi,bh + xor ecx,DWORD PTR 4[esi*8+ebp] + shr ebx,16 + movzx eax,al + xor edx,DWORD PTR 2048[eax*8+ebp] + movzx esi,bh + mov eax,DWORD PTR 16[esp] + xor ecx,edx + ror edx,8 + xor ecx,DWORD PTR 2048[esi*8+ebp] + movzx esi,bl + mov ebx,DWORD PTR 12[esp] + xor edx,eax + xor ecx,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR [edi-48] + xor edx,ecx + mov DWORD PTR 16[esp],edx + xor ecx,ebx + mov DWORD PTR 12[esp],ecx + xor ecx,esi + xor edx,DWORD PTR [edi-44] + movzx esi,ch + mov ebx,DWORD PTR 2052[esi*8+ebp] + movzx esi,cl + xor ebx,DWORD PTR 4[esi*8+ebp] + shr ecx,16 + movzx esi,dl + mov eax,DWORD PTR [esi*8+ebp] + movzx esi,ch + xor ebx,DWORD PTR [esi*8+ebp] + movzx esi,dh + xor eax,DWORD PTR 4[esi*8+ebp] + shr edx,16 + movzx ecx,cl + xor ebx,DWORD PTR 2048[ecx*8+ebp] + movzx esi,dh + mov ecx,DWORD PTR 8[esp] + xor eax,ebx + ror ebx,8 + xor eax,DWORD PTR 2048[esi*8+ebp] + movzx esi,dl + mov edx,DWORD PTR 4[esp] + xor ebx,ecx + xor eax,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR [edi-56] + xor ebx,eax + mov DWORD PTR 8[esp],ebx + xor eax,edx + mov DWORD PTR 4[esp],eax + sub edi,64 + cmp edi,DWORD PTR 20[esp] + je $L007done + and esi,eax + mov edx,DWORD PTR 16[esp] + rol esi,1 + mov ecx,edx + xor ebx,esi + or ecx,DWORD PTR 4[edi] + mov DWORD PTR 8[esp],ebx + xor ecx,DWORD PTR 12[esp] + mov esi,DWORD PTR 12[edi] + mov DWORD PTR 12[esp],ecx + or esi,ebx + and ecx,DWORD PTR [edi] + xor eax,esi + rol ecx,1 + mov DWORD PTR 4[esp],eax + xor edx,ecx + mov esi,DWORD PTR [edi-8] + mov DWORD PTR 16[esp],edx + jmp $L006loop +ALIGN 8 +$L007done: + mov ecx,eax + mov edx,ebx + mov eax,DWORD PTR 12[esp] + mov ebx,DWORD PTR 16[esp] + xor ecx,esi + xor edx,DWORD PTR 12[edi] + xor eax,DWORD PTR [edi] + xor ebx,DWORD PTR 4[edi] + ret +__x86_Camellia_decrypt ENDP +ALIGN 16 +_Camellia_Ekeygen PROC PUBLIC +$L_Camellia_Ekeygen_begin:: + push ebp + push ebx + push esi + push edi + sub esp,16 + mov ebp,DWORD PTR 36[esp] + mov esi,DWORD PTR 40[esp] + mov edi,DWORD PTR 44[esp] + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edx,DWORD PTR 12[esi] + bswap eax + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR [edi],eax + mov DWORD PTR 4[edi],ebx + mov DWORD PTR 8[edi],ecx + mov DWORD PTR 12[edi],edx + cmp ebp,128 + je $L0081st128 + mov eax,DWORD PTR 16[esi] + mov ebx,DWORD PTR 20[esi] + cmp ebp,192 + je $L0091st192 + mov ecx,DWORD PTR 24[esi] + mov edx,DWORD PTR 28[esi] + jmp $L0101st256 +ALIGN 4 +$L0091st192: + mov ecx,eax + mov edx,ebx + not ecx + not edx +ALIGN 4 +$L0101st256: + bswap eax + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR 32[edi],eax + mov DWORD PTR 36[edi],ebx + mov DWORD PTR 40[edi],ecx + mov DWORD PTR 44[edi],edx + xor eax,DWORD PTR [edi] + xor ebx,DWORD PTR 4[edi] + xor ecx,DWORD PTR 8[edi] + xor edx,DWORD PTR 12[edi] +ALIGN 4 +$L0081st128: + call $L011pic_point +$L011pic_point: + pop ebp + lea ebp,DWORD PTR ($LCamellia_SBOX-$L011pic_point)[ebp] + lea edi,DWORD PTR ($LCamellia_SIGMA-$LCamellia_SBOX)[ebp] + mov esi,DWORD PTR [edi] + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],ebx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],edx + xor eax,esi + xor ebx,DWORD PTR 4[edi] + movzx esi,ah + mov edx,DWORD PTR 2052[esi*8+ebp] + movzx esi,al + xor edx,DWORD PTR 4[esi*8+ebp] + shr eax,16 + movzx esi,bl + mov ecx,DWORD PTR [esi*8+ebp] + movzx esi,ah + xor edx,DWORD PTR [esi*8+ebp] + movzx esi,bh + xor ecx,DWORD PTR 4[esi*8+ebp] + shr ebx,16 + movzx eax,al + xor edx,DWORD PTR 2048[eax*8+ebp] + movzx esi,bh + mov eax,DWORD PTR 12[esp] + xor ecx,edx + ror edx,8 + xor ecx,DWORD PTR 2048[esi*8+ebp] + movzx esi,bl + mov ebx,DWORD PTR 8[esp] + xor edx,eax + xor ecx,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 8[edi] + xor edx,ecx + mov DWORD PTR 12[esp],edx + xor ecx,ebx + mov DWORD PTR 8[esp],ecx + xor ecx,esi + xor edx,DWORD PTR 12[edi] + movzx esi,ch + mov ebx,DWORD PTR 2052[esi*8+ebp] + movzx esi,cl + xor ebx,DWORD PTR 4[esi*8+ebp] + shr ecx,16 + movzx esi,dl + mov eax,DWORD PTR [esi*8+ebp] + movzx esi,ch + xor ebx,DWORD PTR [esi*8+ebp] + movzx esi,dh + xor eax,DWORD PTR 4[esi*8+ebp] + shr edx,16 + movzx ecx,cl + xor ebx,DWORD PTR 2048[ecx*8+ebp] + movzx esi,dh + mov ecx,DWORD PTR 4[esp] + xor eax,ebx + ror ebx,8 + xor eax,DWORD PTR 2048[esi*8+ebp] + movzx esi,dl + mov edx,DWORD PTR [esp] + xor ebx,ecx + xor eax,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 16[edi] + xor ebx,eax + mov DWORD PTR 4[esp],ebx + xor eax,edx + mov DWORD PTR [esp],eax + mov ecx,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] + mov esi,DWORD PTR 44[esp] + xor eax,DWORD PTR [esi] + xor ebx,DWORD PTR 4[esi] + xor ecx,DWORD PTR 8[esi] + xor edx,DWORD PTR 12[esi] + mov esi,DWORD PTR 16[edi] + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],ebx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],edx + xor eax,esi + xor ebx,DWORD PTR 20[edi] + movzx esi,ah + mov edx,DWORD PTR 2052[esi*8+ebp] + movzx esi,al + xor edx,DWORD PTR 4[esi*8+ebp] + shr eax,16 + movzx esi,bl + mov ecx,DWORD PTR [esi*8+ebp] + movzx esi,ah + xor edx,DWORD PTR [esi*8+ebp] + movzx esi,bh + xor ecx,DWORD PTR 4[esi*8+ebp] + shr ebx,16 + movzx eax,al + xor edx,DWORD PTR 2048[eax*8+ebp] + movzx esi,bh + mov eax,DWORD PTR 12[esp] + xor ecx,edx + ror edx,8 + xor ecx,DWORD PTR 2048[esi*8+ebp] + movzx esi,bl + mov ebx,DWORD PTR 8[esp] + xor edx,eax + xor ecx,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 24[edi] + xor edx,ecx + mov DWORD PTR 12[esp],edx + xor ecx,ebx + mov DWORD PTR 8[esp],ecx + xor ecx,esi + xor edx,DWORD PTR 28[edi] + movzx esi,ch + mov ebx,DWORD PTR 2052[esi*8+ebp] + movzx esi,cl + xor ebx,DWORD PTR 4[esi*8+ebp] + shr ecx,16 + movzx esi,dl + mov eax,DWORD PTR [esi*8+ebp] + movzx esi,ch + xor ebx,DWORD PTR [esi*8+ebp] + movzx esi,dh + xor eax,DWORD PTR 4[esi*8+ebp] + shr edx,16 + movzx ecx,cl + xor ebx,DWORD PTR 2048[ecx*8+ebp] + movzx esi,dh + mov ecx,DWORD PTR 4[esp] + xor eax,ebx + ror ebx,8 + xor eax,DWORD PTR 2048[esi*8+ebp] + movzx esi,dl + mov edx,DWORD PTR [esp] + xor ebx,ecx + xor eax,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 32[edi] + xor ebx,eax + mov DWORD PTR 4[esp],ebx + xor eax,edx + mov DWORD PTR [esp],eax + mov ecx,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] + mov esi,DWORD PTR 36[esp] + cmp esi,128 + jne $L0122nd256 + mov edi,DWORD PTR 44[esp] + lea edi,DWORD PTR 128[edi] + mov DWORD PTR [edi-112],eax + mov DWORD PTR [edi-108],ebx + mov DWORD PTR [edi-104],ecx + mov DWORD PTR [edi-100],edx + mov ebp,eax + shl eax,15 + mov esi,ebx + shr esi,17 + shl ebx,15 + or eax,esi + mov esi,ecx + shl ecx,15 + mov DWORD PTR [edi-80],eax + shr esi,17 + or ebx,esi + shr ebp,17 + mov esi,edx + shr esi,17 + mov DWORD PTR [edi-76],ebx + shl edx,15 + or ecx,esi + or edx,ebp + mov DWORD PTR [edi-72],ecx + mov DWORD PTR [edi-68],edx + mov ebp,eax + shl eax,15 + mov esi,ebx + shr esi,17 + shl ebx,15 + or eax,esi + mov esi,ecx + shl ecx,15 + mov DWORD PTR [edi-64],eax + shr esi,17 + or ebx,esi + shr ebp,17 + mov esi,edx + shr esi,17 + mov DWORD PTR [edi-60],ebx + shl edx,15 + or ecx,esi + or edx,ebp + mov DWORD PTR [edi-56],ecx + mov DWORD PTR [edi-52],edx + mov ebp,eax + shl eax,15 + mov esi,ebx + shr esi,17 + shl ebx,15 + or eax,esi + mov esi,ecx + shl ecx,15 + mov DWORD PTR [edi-32],eax + shr esi,17 + or ebx,esi + shr ebp,17 + mov esi,edx + shr esi,17 + mov DWORD PTR [edi-28],ebx + shl edx,15 + or ecx,esi + or edx,ebp + mov ebp,eax + shl eax,15 + mov esi,ebx + shr esi,17 + shl ebx,15 + or eax,esi + mov esi,ecx + shl ecx,15 + mov DWORD PTR [edi-16],eax + shr esi,17 + or ebx,esi + shr ebp,17 + mov esi,edx + shr esi,17 + mov DWORD PTR [edi-12],ebx + shl edx,15 + or ecx,esi + or edx,ebp + mov DWORD PTR [edi-8],ecx + mov DWORD PTR [edi-4],edx + mov ebp,ebx + shl ebx,2 + mov esi,ecx + shr esi,30 + shl ecx,2 + or ebx,esi + mov esi,edx + shl edx,2 + mov DWORD PTR 32[edi],ebx + shr esi,30 + or ecx,esi + shr ebp,30 + mov esi,eax + shr esi,30 + mov DWORD PTR 36[edi],ecx + shl eax,2 + or edx,esi + or eax,ebp + mov DWORD PTR 40[edi],edx + mov DWORD PTR 44[edi],eax + mov ebp,ebx + shl ebx,17 + mov esi,ecx + shr esi,15 + shl ecx,17 + or ebx,esi + mov esi,edx + shl edx,17 + mov DWORD PTR 64[edi],ebx + shr esi,15 + or ecx,esi + shr ebp,15 + mov esi,eax + shr esi,15 + mov DWORD PTR 68[edi],ecx + shl eax,17 + or edx,esi + or eax,ebp + mov DWORD PTR 72[edi],edx + mov DWORD PTR 76[edi],eax + mov ebx,DWORD PTR [edi-128] + mov ecx,DWORD PTR [edi-124] + mov edx,DWORD PTR [edi-120] + mov eax,DWORD PTR [edi-116] + mov ebp,ebx + shl ebx,15 + mov esi,ecx + shr esi,17 + shl ecx,15 + or ebx,esi + mov esi,edx + shl edx,15 + mov DWORD PTR [edi-96],ebx + shr esi,17 + or ecx,esi + shr ebp,17 + mov esi,eax + shr esi,17 + mov DWORD PTR [edi-92],ecx + shl eax,15 + or edx,esi + or eax,ebp + mov DWORD PTR [edi-88],edx + mov DWORD PTR [edi-84],eax + mov ebp,ebx + shl ebx,30 + mov esi,ecx + shr esi,2 + shl ecx,30 + or ebx,esi + mov esi,edx + shl edx,30 + mov DWORD PTR [edi-48],ebx + shr esi,2 + or ecx,esi + shr ebp,2 + mov esi,eax + shr esi,2 + mov DWORD PTR [edi-44],ecx + shl eax,30 + or edx,esi + or eax,ebp + mov DWORD PTR [edi-40],edx + mov DWORD PTR [edi-36],eax + mov ebp,ebx + shl ebx,15 + mov esi,ecx + shr esi,17 + shl ecx,15 + or ebx,esi + mov esi,edx + shl edx,15 + shr esi,17 + or ecx,esi + shr ebp,17 + mov esi,eax + shr esi,17 + shl eax,15 + or edx,esi + or eax,ebp + mov DWORD PTR [edi-24],edx + mov DWORD PTR [edi-20],eax + mov ebp,ebx + shl ebx,17 + mov esi,ecx + shr esi,15 + shl ecx,17 + or ebx,esi + mov esi,edx + shl edx,17 + mov DWORD PTR [edi],ebx + shr esi,15 + or ecx,esi + shr ebp,15 + mov esi,eax + shr esi,15 + mov DWORD PTR 4[edi],ecx + shl eax,17 + or edx,esi + or eax,ebp + mov DWORD PTR 8[edi],edx + mov DWORD PTR 12[edi],eax + mov ebp,ebx + shl ebx,17 + mov esi,ecx + shr esi,15 + shl ecx,17 + or ebx,esi + mov esi,edx + shl edx,17 + mov DWORD PTR 16[edi],ebx + shr esi,15 + or ecx,esi + shr ebp,15 + mov esi,eax + shr esi,15 + mov DWORD PTR 20[edi],ecx + shl eax,17 + or edx,esi + or eax,ebp + mov DWORD PTR 24[edi],edx + mov DWORD PTR 28[edi],eax + mov ebp,ebx + shl ebx,17 + mov esi,ecx + shr esi,15 + shl ecx,17 + or ebx,esi + mov esi,edx + shl edx,17 + mov DWORD PTR 48[edi],ebx + shr esi,15 + or ecx,esi + shr ebp,15 + mov esi,eax + shr esi,15 + mov DWORD PTR 52[edi],ecx + shl eax,17 + or edx,esi + or eax,ebp + mov DWORD PTR 56[edi],edx + mov DWORD PTR 60[edi],eax + mov eax,3 + jmp $L013done +ALIGN 16 +$L0122nd256: + mov esi,DWORD PTR 44[esp] + mov DWORD PTR 48[esi],eax + mov DWORD PTR 52[esi],ebx + mov DWORD PTR 56[esi],ecx + mov DWORD PTR 60[esi],edx + xor eax,DWORD PTR 32[esi] + xor ebx,DWORD PTR 36[esi] + xor ecx,DWORD PTR 40[esi] + xor edx,DWORD PTR 44[esi] + mov esi,DWORD PTR 32[edi] + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],ebx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],edx + xor eax,esi + xor ebx,DWORD PTR 36[edi] + movzx esi,ah + mov edx,DWORD PTR 2052[esi*8+ebp] + movzx esi,al + xor edx,DWORD PTR 4[esi*8+ebp] + shr eax,16 + movzx esi,bl + mov ecx,DWORD PTR [esi*8+ebp] + movzx esi,ah + xor edx,DWORD PTR [esi*8+ebp] + movzx esi,bh + xor ecx,DWORD PTR 4[esi*8+ebp] + shr ebx,16 + movzx eax,al + xor edx,DWORD PTR 2048[eax*8+ebp] + movzx esi,bh + mov eax,DWORD PTR 12[esp] + xor ecx,edx + ror edx,8 + xor ecx,DWORD PTR 2048[esi*8+ebp] + movzx esi,bl + mov ebx,DWORD PTR 8[esp] + xor edx,eax + xor ecx,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 40[edi] + xor edx,ecx + mov DWORD PTR 12[esp],edx + xor ecx,ebx + mov DWORD PTR 8[esp],ecx + xor ecx,esi + xor edx,DWORD PTR 44[edi] + movzx esi,ch + mov ebx,DWORD PTR 2052[esi*8+ebp] + movzx esi,cl + xor ebx,DWORD PTR 4[esi*8+ebp] + shr ecx,16 + movzx esi,dl + mov eax,DWORD PTR [esi*8+ebp] + movzx esi,ch + xor ebx,DWORD PTR [esi*8+ebp] + movzx esi,dh + xor eax,DWORD PTR 4[esi*8+ebp] + shr edx,16 + movzx ecx,cl + xor ebx,DWORD PTR 2048[ecx*8+ebp] + movzx esi,dh + mov ecx,DWORD PTR 4[esp] + xor eax,ebx + ror ebx,8 + xor eax,DWORD PTR 2048[esi*8+ebp] + movzx esi,dl + mov edx,DWORD PTR [esp] + xor ebx,ecx + xor eax,DWORD PTR 2052[esi*8+ebp] + mov esi,DWORD PTR 48[edi] + xor ebx,eax + mov DWORD PTR 4[esp],ebx + xor eax,edx + mov DWORD PTR [esp],eax + mov ecx,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] + mov edi,DWORD PTR 44[esp] + lea edi,DWORD PTR 128[edi] + mov DWORD PTR [edi-112],eax + mov DWORD PTR [edi-108],ebx + mov DWORD PTR [edi-104],ecx + mov DWORD PTR [edi-100],edx + mov ebp,eax + shl eax,30 + mov esi,ebx + shr esi,2 + shl ebx,30 + or eax,esi + mov esi,ecx + shl ecx,30 + mov DWORD PTR [edi-48],eax + shr esi,2 + or ebx,esi + shr ebp,2 + mov esi,edx + shr esi,2 + mov DWORD PTR [edi-44],ebx + shl edx,30 + or ecx,esi + or edx,ebp + mov DWORD PTR [edi-40],ecx + mov DWORD PTR [edi-36],edx + mov ebp,eax + shl eax,30 + mov esi,ebx + shr esi,2 + shl ebx,30 + or eax,esi + mov esi,ecx + shl ecx,30 + mov DWORD PTR 32[edi],eax + shr esi,2 + or ebx,esi + shr ebp,2 + mov esi,edx + shr esi,2 + mov DWORD PTR 36[edi],ebx + shl edx,30 + or ecx,esi + or edx,ebp + mov DWORD PTR 40[edi],ecx + mov DWORD PTR 44[edi],edx + mov ebp,ebx + shl ebx,19 + mov esi,ecx + shr esi,13 + shl ecx,19 + or ebx,esi + mov esi,edx + shl edx,19 + mov DWORD PTR 128[edi],ebx + shr esi,13 + or ecx,esi + shr ebp,13 + mov esi,eax + shr esi,13 + mov DWORD PTR 132[edi],ecx + shl eax,19 + or edx,esi + or eax,ebp + mov DWORD PTR 136[edi],edx + mov DWORD PTR 140[edi],eax + mov ebx,DWORD PTR [edi-96] + mov ecx,DWORD PTR [edi-92] + mov edx,DWORD PTR [edi-88] + mov eax,DWORD PTR [edi-84] + mov ebp,ebx + shl ebx,15 + mov esi,ecx + shr esi,17 + shl ecx,15 + or ebx,esi + mov esi,edx + shl edx,15 + mov DWORD PTR [edi-96],ebx + shr esi,17 + or ecx,esi + shr ebp,17 + mov esi,eax + shr esi,17 + mov DWORD PTR [edi-92],ecx + shl eax,15 + or edx,esi + or eax,ebp + mov DWORD PTR [edi-88],edx + mov DWORD PTR [edi-84],eax + mov ebp,ebx + shl ebx,15 + mov esi,ecx + shr esi,17 + shl ecx,15 + or ebx,esi + mov esi,edx + shl edx,15 + mov DWORD PTR [edi-64],ebx + shr esi,17 + or ecx,esi + shr ebp,17 + mov esi,eax + shr esi,17 + mov DWORD PTR [edi-60],ecx + shl eax,15 + or edx,esi + or eax,ebp + mov DWORD PTR [edi-56],edx + mov DWORD PTR [edi-52],eax + mov ebp,ebx + shl ebx,30 + mov esi,ecx + shr esi,2 + shl ecx,30 + or ebx,esi + mov esi,edx + shl edx,30 + mov DWORD PTR 16[edi],ebx + shr esi,2 + or ecx,esi + shr ebp,2 + mov esi,eax + shr esi,2 + mov DWORD PTR 20[edi],ecx + shl eax,30 + or edx,esi + or eax,ebp + mov DWORD PTR 24[edi],edx + mov DWORD PTR 28[edi],eax + mov ebp,ecx + shl ecx,2 + mov esi,edx + shr esi,30 + shl edx,2 + or ecx,esi + mov esi,eax + shl eax,2 + mov DWORD PTR 80[edi],ecx + shr esi,30 + or edx,esi + shr ebp,30 + mov esi,ebx + shr esi,30 + mov DWORD PTR 84[edi],edx + shl ebx,2 + or eax,esi + or ebx,ebp + mov DWORD PTR 88[edi],eax + mov DWORD PTR 92[edi],ebx + mov ecx,DWORD PTR [edi-80] + mov edx,DWORD PTR [edi-76] + mov eax,DWORD PTR [edi-72] + mov ebx,DWORD PTR [edi-68] + mov ebp,ecx + shl ecx,15 + mov esi,edx + shr esi,17 + shl edx,15 + or ecx,esi + mov esi,eax + shl eax,15 + mov DWORD PTR [edi-80],ecx + shr esi,17 + or edx,esi + shr ebp,17 + mov esi,ebx + shr esi,17 + mov DWORD PTR [edi-76],edx + shl ebx,15 + or eax,esi + or ebx,ebp + mov DWORD PTR [edi-72],eax + mov DWORD PTR [edi-68],ebx + mov ebp,ecx + shl ecx,30 + mov esi,edx + shr esi,2 + shl edx,30 + or ecx,esi + mov esi,eax + shl eax,30 + mov DWORD PTR [edi-16],ecx + shr esi,2 + or edx,esi + shr ebp,2 + mov esi,ebx + shr esi,2 + mov DWORD PTR [edi-12],edx + shl ebx,30 + or eax,esi + or ebx,ebp + mov DWORD PTR [edi-8],eax + mov DWORD PTR [edi-4],ebx + mov DWORD PTR 64[edi],edx + mov DWORD PTR 68[edi],eax + mov DWORD PTR 72[edi],ebx + mov DWORD PTR 76[edi],ecx + mov ebp,edx + shl edx,17 + mov esi,eax + shr esi,15 + shl eax,17 + or edx,esi + mov esi,ebx + shl ebx,17 + mov DWORD PTR 96[edi],edx + shr esi,15 + or eax,esi + shr ebp,15 + mov esi,ecx + shr esi,15 + mov DWORD PTR 100[edi],eax + shl ecx,17 + or ebx,esi + or ecx,ebp + mov DWORD PTR 104[edi],ebx + mov DWORD PTR 108[edi],ecx + mov edx,DWORD PTR [edi-128] + mov eax,DWORD PTR [edi-124] + mov ebx,DWORD PTR [edi-120] + mov ecx,DWORD PTR [edi-116] + mov ebp,eax + shl eax,13 + mov esi,ebx + shr esi,19 + shl ebx,13 + or eax,esi + mov esi,ecx + shl ecx,13 + mov DWORD PTR [edi-32],eax + shr esi,19 + or ebx,esi + shr ebp,19 + mov esi,edx + shr esi,19 + mov DWORD PTR [edi-28],ebx + shl edx,13 + or ecx,esi + or edx,ebp + mov DWORD PTR [edi-24],ecx + mov DWORD PTR [edi-20],edx + mov ebp,eax + shl eax,15 + mov esi,ebx + shr esi,17 + shl ebx,15 + or eax,esi + mov esi,ecx + shl ecx,15 + mov DWORD PTR [edi],eax + shr esi,17 + or ebx,esi + shr ebp,17 + mov esi,edx + shr esi,17 + mov DWORD PTR 4[edi],ebx + shl edx,15 + or ecx,esi + or edx,ebp + mov DWORD PTR 8[edi],ecx + mov DWORD PTR 12[edi],edx + mov ebp,eax + shl eax,17 + mov esi,ebx + shr esi,15 + shl ebx,17 + or eax,esi + mov esi,ecx + shl ecx,17 + mov DWORD PTR 48[edi],eax + shr esi,15 + or ebx,esi + shr ebp,15 + mov esi,edx + shr esi,15 + mov DWORD PTR 52[edi],ebx + shl edx,17 + or ecx,esi + or edx,ebp + mov DWORD PTR 56[edi],ecx + mov DWORD PTR 60[edi],edx + mov ebp,ebx + shl ebx,2 + mov esi,ecx + shr esi,30 + shl ecx,2 + or ebx,esi + mov esi,edx + shl edx,2 + mov DWORD PTR 112[edi],ebx + shr esi,30 + or ecx,esi + shr ebp,30 + mov esi,eax + shr esi,30 + mov DWORD PTR 116[edi],ecx + shl eax,2 + or edx,esi + or eax,ebp + mov DWORD PTR 120[edi],edx + mov DWORD PTR 124[edi],eax + mov eax,4 +$L013done: + lea edx,DWORD PTR 144[edi] + add esp,16 + pop edi + pop esi + pop ebx + pop ebp + ret +_Camellia_Ekeygen ENDP +ALIGN 16 +_Camellia_set_key PROC PUBLIC +$L_Camellia_set_key_begin:: + push ebx + mov ecx,DWORD PTR 8[esp] + mov ebx,DWORD PTR 12[esp] + mov edx,DWORD PTR 16[esp] + mov eax,-1 + test ecx,ecx + jz $L014done + test edx,edx + jz $L014done + mov eax,-2 + cmp ebx,256 + je $L015arg_ok + cmp ebx,192 + je $L015arg_ok + cmp ebx,128 + jne $L014done +ALIGN 4 +$L015arg_ok: + push edx + push ecx + push ebx + call $L_Camellia_Ekeygen_begin + add esp,12 + mov DWORD PTR [edx],eax + xor eax,eax +ALIGN 4 +$L014done: + pop ebx + ret +_Camellia_set_key ENDP +ALIGN 64 +$LCamellia_SIGMA:: +DD 2694735487,1003262091,3061508184,1286239154 +DD 3337565999,3914302142,1426019237,4057165596 +DD 283453434,3731369245,2958461122,3018244605 +DD 0,0,0,0 +ALIGN 64 +$LCamellia_SBOX:: +DD 1886416896,1886388336 +DD 2189591040,741081132 +DD 741092352,3014852787 +DD 3974949888,3233808576 +DD 3014898432,3840147684 +DD 656877312,1465319511 +DD 3233857536,3941204202 +DD 3857048832,2930639022 +DD 3840205824,589496355 +DD 2240120064,1802174571 +DD 1465341696,1162149957 +DD 892679424,2779054245 +DD 3941263872,3991732461 +DD 202116096,1330577487 +DD 2930683392,488439837 +DD 1094795520,2459041938 +DD 589505280,2256928902 +DD 4025478912,2947481775 +DD 1802201856,2088501372 +DD 2475922176,522125343 +DD 1162167552,1044250686 +DD 421075200,3705405660 +DD 2779096320,1583218782 +DD 555819264,185270283 +DD 3991792896,2795896998 +DD 235802112,960036921 +DD 1330597632,3587506389 +DD 1313754624,1566376029 +DD 488447232,3654877401 +DD 1701143808,1515847770 +DD 2459079168,1364262993 +DD 3183328512,1819017324 +DD 2256963072,2341142667 +DD 3099113472,2593783962 +DD 2947526400,4227531003 +DD 2408550144,2964324528 +DD 2088532992,1953759348 +DD 3958106880,724238379 +DD 522133248,4042260720 +DD 3469659648,2223243396 +DD 1044266496,3755933919 +DD 808464384,3419078859 +DD 3705461760,875823156 +DD 1600085760,1987444854 +DD 1583242752,1835860077 +DD 3318072576,2846425257 +DD 185273088,3520135377 +DD 437918208,67371012 +DD 2795939328,336855060 +DD 3789676800,976879674 +DD 960051456,3739091166 +DD 3402287616,286326801 +DD 3587560704,842137650 +DD 1195853568,2627469468 +DD 1566399744,1397948499 +DD 1027423488,4075946226 +DD 3654932736,4278059262 +DD 16843008,3486449871 +DD 1515870720,3284336835 +DD 3604403712,2054815866 +DD 1364283648,606339108 +DD 1448498688,3907518696 +DD 1819044864,1616904288 +DD 1296911616,1768489065 +DD 2341178112,2863268010 +DD 218959104,2694840480 +DD 2593823232,2711683233 +DD 1717986816,1650589794 +DD 4227595008,1414791252 +DD 3435973632,505282590 +DD 2964369408,3772776672 +DD 757935360,1684275300 +DD 1953788928,269484048 +DD 303174144,0 +DD 724249344,2745368739 +DD 538976256,1970602101 +DD 4042321920,2324299914 +DD 2981212416,3873833190 +DD 2223277056,151584777 +DD 2576980224,3722248413 +DD 3755990784,2273771655 +DD 1280068608,2206400643 +DD 3419130624,3452764365 +DD 3267543552,2425356432 +DD 875836416,1936916595 +DD 2122219008,4143317238 +DD 1987474944,2644312221 +DD 84215040,3216965823 +DD 1835887872,1381105746 +DD 3082270464,3638034648 +DD 2846468352,3368550600 +DD 825307392,3334865094 +DD 3520188672,2172715137 +DD 387389184,1869545583 +DD 67372032,320012307 +DD 3621246720,1667432547 +DD 336860160,3924361449 +DD 1482184704,2812739751 +DD 976894464,2677997727 +DD 1633771776,3166437564 +DD 3739147776,690552873 +DD 454761216,4193845497 +DD 286331136,791609391 +DD 471604224,3031695540 +DD 842150400,2021130360 +DD 252645120,101056518 +DD 2627509248,3890675943 +DD 370546176,1903231089 +DD 1397969664,3570663636 +DD 404232192,2880110763 +DD 4076007936,2290614408 +DD 572662272,2374828173 +DD 4278124032,1920073842 +DD 1145324544,3115909305 +DD 3486502656,4177002744 +DD 2998055424,2896953516 +DD 3284386560,909508662 +DD 3048584448,707395626 +DD 2054846976,1010565180 +DD 2442236160,4059103473 +DD 606348288,1077936192 +DD 134744064,3553820883 +DD 3907577856,3149594811 +DD 2829625344,1128464451 +DD 1616928768,353697813 +DD 4244438016,2913796269 +DD 1768515840,2004287607 +DD 1347440640,2155872384 +DD 2863311360,2189557890 +DD 3503345664,3974889708 +DD 2694881280,656867367 +DD 2105376000,3856990437 +DD 2711724288,2240086149 +DD 2307492096,892665909 +DD 1650614784,202113036 +DD 2543294208,1094778945 +DD 1414812672,4025417967 +DD 1532713728,2475884691 +DD 505290240,421068825 +DD 2509608192,555810849 +DD 3772833792,235798542 +DD 4294967040,1313734734 +DD 1684300800,1701118053 +DD 3537031680,3183280317 +DD 269488128,3099066552 +DD 3301229568,2408513679 +DD 0,3958046955 +DD 1212696576,3469607118 +DD 2745410304,808452144 +DD 4160222976,1600061535 +DD 1970631936,3318022341 +DD 3688618752,437911578 +DD 2324335104,3789619425 +DD 50529024,3402236106 +DD 3873891840,1195835463 +DD 3671775744,1027407933 +DD 151587072,16842753 +DD 1061109504,3604349142 +DD 3722304768,1448476758 +DD 2492765184,1296891981 +DD 2273806080,218955789 +DD 1549556736,1717960806 +DD 2206434048,3435921612 +DD 33686016,757923885 +DD 3452816640,303169554 +DD 1246382592,538968096 +DD 2425393152,2981167281 +DD 858993408,2576941209 +DD 1936945920,1280049228 +DD 1734829824,3267494082 +DD 4143379968,2122186878 +DD 4092850944,84213765 +DD 2644352256,3082223799 +DD 2139062016,825294897 +DD 3217014528,387383319 +DD 3806519808,3621191895 +DD 1381126656,1482162264 +DD 2610666240,1633747041 +DD 3638089728,454754331 +DD 640034304,471597084 +DD 3368601600,252641295 +DD 926365440,370540566 +DD 3334915584,404226072 +DD 993737472,572653602 +DD 2172748032,1145307204 +DD 2526451200,2998010034 +DD 1869573888,3048538293 +DD 1263225600,2442199185 +DD 320017152,134742024 +DD 3200171520,2829582504 +DD 1667457792,4244373756 +DD 774778368,1347420240 +DD 3924420864,3503292624 +DD 2038003968,2105344125 +DD 2812782336,2307457161 +DD 2358021120,2543255703 +DD 2678038272,1532690523 +DD 1852730880,2509570197 +DD 3166485504,4294902015 +DD 2391707136,3536978130 +DD 690563328,3301179588 +DD 4126536960,1212678216 +DD 4193908992,4160159991 +DD 3065427456,3688562907 +DD 791621376,50528259 +DD 4261281024,3671720154 +DD 3031741440,1061093439 +DD 1499027712,2492727444 +DD 2021160960,1549533276 +DD 2560137216,33685506 +DD 101058048,1246363722 +DD 1785358848,858980403 +DD 3890734848,1734803559 +DD 1179010560,4092788979 +DD 1903259904,2139029631 +DD 3132799488,3806462178 +DD 3570717696,2610626715 +DD 623191296,640024614 +DD 2880154368,926351415 +DD 1111638528,993722427 +DD 2290649088,2526412950 +DD 2728567296,1263206475 +DD 2374864128,3200123070 +DD 4210752000,774766638 +DD 1920102912,2037973113 +DD 117901056,2357985420 +DD 3115956480,1852702830 +DD 1431655680,2391670926 +DD 4177065984,4126474485 +DD 4008635904,3065381046 +DD 2896997376,4261216509 +DD 168430080,1499005017 +DD 909522432,2560098456 +DD 1229539584,1785331818 +DD 707406336,1178992710 +DD 1751672832,3132752058 +DD 1010580480,623181861 +DD 943208448,1111621698 +DD 4059164928,2728525986 +DD 2762253312,4210688250 +DD 1077952512,117899271 +DD 673720320,1431634005 +DD 3553874688,4008575214 +DD 2071689984,168427530 +DD 3149642496,1229520969 +DD 3385444608,1751646312 +DD 1128481536,943194168 +DD 3250700544,2762211492 +DD 353703168,673710120 +DD 3823362816,2071658619 +DD 2913840384,3385393353 +DD 4109693952,3250651329 +DD 2004317952,3823304931 +DD 3351758592,4109631732 +DD 2155905024,3351707847 +DD 2661195264,2661154974 +DD 14737632,939538488 +DD 328965,1090535745 +DD 5789784,369104406 +DD 14277081,1979741814 +DD 6776679,3640711641 +DD 5131854,2466288531 +DD 8487297,1610637408 +DD 13355979,4060148466 +DD 13224393,1912631922 +DD 723723,3254829762 +DD 11447982,2868947883 +DD 6974058,2583730842 +DD 14013909,1962964341 +DD 1579032,100664838 +DD 6118749,1459640151 +DD 8553090,2684395680 +DD 4605510,2432733585 +DD 14671839,4144035831 +DD 14079702,3036722613 +DD 2565927,3372272073 +DD 9079434,2717950626 +DD 3289650,2348846220 +DD 4934475,3523269330 +DD 4342338,2415956112 +DD 14408667,4127258358 +DD 1842204,117442311 +DD 10395294,2801837991 +DD 10263708,654321447 +DD 3815994,2382401166 +DD 13290186,2986390194 +DD 2434341,1224755529 +DD 8092539,3724599006 +DD 855309,1124090691 +DD 7434609,1543527516 +DD 6250335,3607156695 +DD 2039583,3338717127 +DD 16316664,1040203326 +DD 14145495,4110480885 +DD 4079166,2399178639 +DD 10329501,1728079719 +DD 8158332,520101663 +DD 6316128,402659352 +DD 12171705,1845522030 +DD 12500670,2936057775 +DD 12369084,788541231 +DD 9145227,3791708898 +DD 1447446,2231403909 +DD 3421236,218107149 +DD 5066061,1392530259 +DD 12829635,4026593520 +DD 7500402,2617285788 +DD 9803157,1694524773 +DD 11250603,3925928682 +DD 9342606,2734728099 +DD 12237498,2919280302 +DD 8026746,2650840734 +DD 11776947,3959483628 +DD 131586,2147516544 +DD 11842740,754986285 +DD 11382189,1795189611 +DD 10658466,2818615464 +DD 11316396,721431339 +DD 14211288,905983542 +DD 10132122,2785060518 +DD 1513239,3305162181 +DD 1710618,2248181382 +DD 3487029,1291865421 +DD 13421772,855651123 +DD 16250871,4244700669 +DD 10066329,1711302246 +DD 6381921,1476417624 +DD 5921370,2516620950 +DD 15263976,973093434 +DD 2368548,150997257 +DD 5658198,2499843477 +DD 4210752,268439568 +DD 14803425,2013296760 +DD 6513507,3623934168 +DD 592137,1107313218 +DD 3355443,3422604492 +DD 12566463,4009816047 +DD 10000536,637543974 +DD 9934743,3842041317 +DD 8750469,1627414881 +DD 6842472,436214298 +DD 16579836,1056980799 +DD 15527148,989870907 +DD 657930,2181071490 +DD 14342874,3053500086 +DD 7303023,3674266587 +DD 5460819,3556824276 +DD 6447714,2550175896 +DD 10724259,3892373736 +DD 3026478,2332068747 +DD 526344,33554946 +DD 11513775,3942706155 +DD 2631720,167774730 +DD 11579568,738208812 +DD 7631988,486546717 +DD 12763842,2952835248 +DD 12434877,1862299503 +DD 3552822,2365623693 +DD 2236962,2281736328 +DD 3684408,234884622 +DD 6579300,419436825 +DD 1973790,2264958855 +DD 3750201,1308642894 +DD 2894892,184552203 +DD 10921638,2835392937 +DD 3158064,201329676 +DD 15066597,2030074233 +DD 4473924,285217041 +DD 16645629,2130739071 +DD 8947848,570434082 +DD 10461087,3875596263 +DD 6645093,1493195097 +DD 8882055,3774931425 +DD 7039851,3657489114 +DD 16053492,1023425853 +DD 2302755,3355494600 +DD 4737096,301994514 +DD 1052688,67109892 +DD 13750737,1946186868 +DD 5329233,1409307732 +DD 12632256,805318704 +DD 16382457,2113961598 +DD 13816530,3019945140 +DD 10526880,671098920 +DD 5592405,1426085205 +DD 10592673,1744857192 +DD 4276545,1342197840 +DD 16448250,3187719870 +DD 4408131,3489714384 +DD 1250067,3288384708 +DD 12895428,822096177 +DD 3092271,3405827019 +DD 11053224,704653866 +DD 11974326,2902502829 +DD 3947580,251662095 +DD 2829099,3389049546 +DD 12698049,1879076976 +DD 16777215,4278255615 +DD 13158600,838873650 +DD 10855845,1761634665 +DD 2105376,134219784 +DD 9013641,1644192354 +DD 0,0 +DD 9474192,603989028 +DD 4671303,3506491857 +DD 15724527,4211145723 +DD 15395562,3120609978 +DD 12040119,3976261101 +DD 1381653,1157645637 +DD 394758,2164294017 +DD 13487565,1929409395 +DD 11908533,1828744557 +DD 1184274,2214626436 +DD 8289918,2667618207 +DD 12303291,3993038574 +DD 2697513,1241533002 +DD 986895,3271607235 +DD 12105912,771763758 +DD 460551,3238052289 +DD 263172,16777473 +DD 10197915,3858818790 +DD 9737364,620766501 +DD 2171169,1207978056 +DD 6710886,2566953369 +DD 15132390,3103832505 +DD 13553358,3003167667 +DD 15592941,2063629179 +DD 15198183,4177590777 +DD 3881787,3456159438 +DD 16711422,3204497343 +DD 8355711,3741376479 +DD 12961221,1895854449 +DD 10790052,687876393 +DD 3618615,3439381965 +DD 11645361,1811967084 +DD 5000268,318771987 +DD 9539985,1677747300 +DD 7237230,2600508315 +DD 9276813,1660969827 +DD 7763574,2634063261 +DD 197379,3221274816 +DD 2960685,1258310475 +DD 14606046,3070277559 +DD 9868950,2768283045 +DD 2500134,2298513801 +DD 8224125,1593859935 +DD 13027014,2969612721 +DD 6052956,385881879 +DD 13882323,4093703412 +DD 15921906,3154164924 +DD 5197647,3540046803 +DD 1644825,1174423110 +DD 4144959,3472936911 +DD 14474460,922761015 +DD 7960953,1577082462 +DD 1907997,1191200583 +DD 5395026,2483066004 +DD 15461355,4194368250 +DD 15987699,4227923196 +DD 7171437,1526750043 +DD 6184542,2533398423 +DD 16514043,4261478142 +DD 6908265,1509972570 +DD 11711154,2885725356 +DD 15790320,1006648380 +DD 3223857,1275087948 +DD 789516,50332419 +DD 13948116,889206069 +DD 13619151,4076925939 +DD 9211020,587211555 +DD 14869218,3087055032 +DD 7697781,1560304989 +DD 11119017,1778412138 +DD 4868682,2449511058 +DD 5723991,3573601749 +DD 8684676,553656609 +DD 1118481,1140868164 +DD 4539717,1358975313 +DD 1776411,3321939654 +DD 16119285,2097184125 +DD 15000804,956315961 +DD 921102,2197848963 +DD 7566195,3691044060 +DD 11184810,2852170410 +DD 15856113,2080406652 +DD 14540253,1996519287 +DD 5855577,1442862678 +DD 1315860,83887365 +DD 7105644,452991771 +DD 9605778,2751505572 +DD 5526612,352326933 +DD 13684944,872428596 +DD 7895160,503324190 +DD 7368816,469769244 +DD 14935011,4160813304 +DD 4802889,1375752786 +DD 8421504,536879136 +DD 5263440,335549460 +DD 10987431,3909151209 +DD 16185078,3170942397 +DD 7829367,3707821533 +DD 9671571,3825263844 +DD 8816262,2701173153 +DD 8618883,3758153952 +DD 2763306,2315291274 +DD 13092807,4043370993 +DD 5987163,3590379222 +DD 15329769,2046851706 +DD 15658734,3137387451 +DD 9408399,3808486371 +DD 65793,1073758272 +DD 4013373,1325420367 +ALIGN 16 +_Camellia_cbc_encrypt PROC PUBLIC +$L_Camellia_cbc_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov ecx,DWORD PTR 28[esp] + cmp ecx,0 + je $L016enc_out + pushfd + cld + mov eax,DWORD PTR 24[esp] + mov ebx,DWORD PTR 28[esp] + mov edx,DWORD PTR 36[esp] + mov ebp,DWORD PTR 40[esp] + lea esi,DWORD PTR [esp-64] + and esi,-64 + lea edi,DWORD PTR [edx-127] + sub edi,esi + neg edi + and edi,960 + sub esi,edi + mov edi,DWORD PTR 44[esp] + xchg esp,esi + add esp,4 + mov DWORD PTR 20[esp],esi + mov DWORD PTR 24[esp],eax + mov DWORD PTR 28[esp],ebx + mov DWORD PTR 32[esp],ecx + mov DWORD PTR 36[esp],edx + mov DWORD PTR 40[esp],ebp + call $L017pic_point +$L017pic_point: + pop ebp + lea ebp,DWORD PTR ($LCamellia_SBOX-$L017pic_point)[ebp] + mov esi,32 +ALIGN 4 +$L018prefetch_sbox: + mov eax,DWORD PTR [ebp] + mov ebx,DWORD PTR 32[ebp] + mov ecx,DWORD PTR 64[ebp] + mov edx,DWORD PTR 96[ebp] + lea ebp,DWORD PTR 128[ebp] + dec esi + jnz $L018prefetch_sbox + mov eax,DWORD PTR 36[esp] + sub ebp,4096 + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 272[eax] + cmp edi,0 + je $L019DECRYPT + mov ecx,DWORD PTR 32[esp] + mov edi,DWORD PTR 40[esp] + shl edx,6 + lea edx,DWORD PTR [edx*1+eax] + mov DWORD PTR 16[esp],edx + test ecx,4294967280 + jz $L020enc_tail + mov eax,DWORD PTR [edi] + mov ebx,DWORD PTR 4[edi] +ALIGN 4 +$L021enc_loop: + mov ecx,DWORD PTR 8[edi] + mov edx,DWORD PTR 12[edi] + xor eax,DWORD PTR [esi] + xor ebx,DWORD PTR 4[esi] + xor ecx,DWORD PTR 8[esi] + bswap eax + xor edx,DWORD PTR 12[esi] + bswap ebx + mov edi,DWORD PTR 36[esp] + bswap ecx + bswap edx + call __x86_Camellia_encrypt + mov esi,DWORD PTR 24[esp] + mov edi,DWORD PTR 28[esp] + bswap eax + bswap ebx + bswap ecx + mov DWORD PTR [edi],eax + bswap edx + mov DWORD PTR 4[edi],ebx + mov DWORD PTR 8[edi],ecx + mov DWORD PTR 12[edi],edx + mov ecx,DWORD PTR 32[esp] + lea esi,DWORD PTR 16[esi] + mov DWORD PTR 24[esp],esi + lea edx,DWORD PTR 16[edi] + mov DWORD PTR 28[esp],edx + sub ecx,16 + test ecx,4294967280 + mov DWORD PTR 32[esp],ecx + jnz $L021enc_loop + test ecx,15 + jnz $L020enc_tail + mov esi,DWORD PTR 40[esp] + mov ecx,DWORD PTR 8[edi] + mov edx,DWORD PTR 12[edi] + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],ecx + mov DWORD PTR 12[esi],edx + mov esp,DWORD PTR 20[esp] + popfd +$L016enc_out: + pop edi + pop esi + pop ebx + pop ebp + ret + pushfd +ALIGN 4 +$L020enc_tail: + mov eax,edi + mov edi,DWORD PTR 28[esp] + push eax + mov ebx,16 + sub ebx,ecx + cmp edi,esi + je $L022enc_in_place +ALIGN 4 +DD 2767451785 + jmp $L023enc_skip_in_place +$L022enc_in_place: + lea edi,DWORD PTR [ecx*1+edi] +$L023enc_skip_in_place: + mov ecx,ebx + xor eax,eax +ALIGN 4 +DD 2868115081 + pop edi + mov esi,DWORD PTR 28[esp] + mov eax,DWORD PTR [edi] + mov ebx,DWORD PTR 4[edi] + mov DWORD PTR 32[esp],16 + jmp $L021enc_loop +ALIGN 16 +$L019DECRYPT: + shl edx,6 + lea edx,DWORD PTR [edx*1+eax] + mov DWORD PTR 16[esp],eax + mov DWORD PTR 36[esp],edx + cmp esi,DWORD PTR 28[esp] + je $L024dec_in_place + mov edi,DWORD PTR 40[esp] + mov DWORD PTR 44[esp],edi +ALIGN 4 +$L025dec_loop: + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + bswap eax + mov edx,DWORD PTR 12[esi] + bswap ebx + mov edi,DWORD PTR 36[esp] + bswap ecx + bswap edx + call __x86_Camellia_decrypt + mov edi,DWORD PTR 44[esp] + mov esi,DWORD PTR 32[esp] + bswap eax + bswap ebx + bswap ecx + xor eax,DWORD PTR [edi] + bswap edx + xor ebx,DWORD PTR 4[edi] + xor ecx,DWORD PTR 8[edi] + xor edx,DWORD PTR 12[edi] + sub esi,16 + jc $L026dec_partial + mov DWORD PTR 32[esp],esi + mov esi,DWORD PTR 24[esp] + mov edi,DWORD PTR 28[esp] + mov DWORD PTR [edi],eax + mov DWORD PTR 4[edi],ebx + mov DWORD PTR 8[edi],ecx + mov DWORD PTR 12[edi],edx + mov DWORD PTR 44[esp],esi + lea esi,DWORD PTR 16[esi] + mov DWORD PTR 24[esp],esi + lea edi,DWORD PTR 16[edi] + mov DWORD PTR 28[esp],edi + jnz $L025dec_loop + mov edi,DWORD PTR 44[esp] +$L027dec_end: + mov esi,DWORD PTR 40[esp] + mov eax,DWORD PTR [edi] + mov ebx,DWORD PTR 4[edi] + mov ecx,DWORD PTR 8[edi] + mov edx,DWORD PTR 12[edi] + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],ecx + mov DWORD PTR 12[esi],edx + jmp $L028dec_out +ALIGN 4 +$L026dec_partial: + lea edi,DWORD PTR 44[esp] + mov DWORD PTR [edi],eax + mov DWORD PTR 4[edi],ebx + mov DWORD PTR 8[edi],ecx + mov DWORD PTR 12[edi],edx + lea ecx,DWORD PTR 16[esi] + mov esi,edi + mov edi,DWORD PTR 28[esp] +DD 2767451785 + mov edi,DWORD PTR 24[esp] + jmp $L027dec_end +ALIGN 4 +$L024dec_in_place: +$L029dec_in_place_loop: + lea edi,DWORD PTR 44[esp] + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edx,DWORD PTR 12[esi] + mov DWORD PTR [edi],eax + mov DWORD PTR 4[edi],ebx + mov DWORD PTR 8[edi],ecx + bswap eax + mov DWORD PTR 12[edi],edx + bswap ebx + mov edi,DWORD PTR 36[esp] + bswap ecx + bswap edx + call __x86_Camellia_decrypt + mov edi,DWORD PTR 40[esp] + mov esi,DWORD PTR 28[esp] + bswap eax + bswap ebx + bswap ecx + xor eax,DWORD PTR [edi] + bswap edx + xor ebx,DWORD PTR 4[edi] + xor ecx,DWORD PTR 8[edi] + xor edx,DWORD PTR 12[edi] + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],ecx + mov DWORD PTR 12[esi],edx + lea esi,DWORD PTR 16[esi] + mov DWORD PTR 28[esp],esi + lea esi,DWORD PTR 44[esp] + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edx,DWORD PTR 12[esi] + mov DWORD PTR [edi],eax + mov DWORD PTR 4[edi],ebx + mov DWORD PTR 8[edi],ecx + mov DWORD PTR 12[edi],edx + mov esi,DWORD PTR 24[esp] + lea esi,DWORD PTR 16[esi] + mov DWORD PTR 24[esp],esi + mov ecx,DWORD PTR 32[esp] + sub ecx,16 + jc $L030dec_in_place_partial + mov DWORD PTR 32[esp],ecx + jnz $L029dec_in_place_loop + jmp $L028dec_out +ALIGN 4 +$L030dec_in_place_partial: + mov edi,DWORD PTR 28[esp] + lea esi,DWORD PTR 44[esp] + lea edi,DWORD PTR [ecx*1+edi] + lea esi,DWORD PTR 16[ecx*1+esi] + neg ecx +DD 2767451785 +ALIGN 4 +$L028dec_out: + mov esp,DWORD PTR 20[esp] + popfd + pop edi + pop esi + pop ebx + pop ebp + ret +_Camellia_cbc_encrypt ENDP +DB 67,97,109,101,108,108,105,97,32,102,111,114,32,120,56,54 +DB 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 +DB 115,108,46,111,114,103,62,0 +.text$ ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/chacha/chacha-x86.masm b/contrib/libs/openssl/asm/windows/crypto/chacha/chacha-x86.masm index 2d436b36c3..e99c331a6c 100644 --- a/contrib/libs/openssl/asm/windows/crypto/chacha/chacha-x86.masm +++ b/contrib/libs/openssl/asm/windows/crypto/chacha/chacha-x86.masm @@ -1,1023 +1,1023 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -ALIGN 16 -_ChaCha20_ctr32 PROC PUBLIC -$L_ChaCha20_ctr32_begin:: - push ebp - push ebx - push esi - push edi - xor eax,eax - cmp eax,DWORD PTR 28[esp] - je $L000no_data - call $Lpic_point -$Lpic_point:: - pop eax - lea ebp,DWORD PTR _OPENSSL_ia32cap_P - test DWORD PTR [ebp],16777216 - jz $L001x86 - test DWORD PTR 4[ebp],512 - jz $L001x86 - jmp $Lssse3_shortcut -$L001x86: - mov esi,DWORD PTR 32[esp] - mov edi,DWORD PTR 36[esp] - sub esp,132 - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edx,DWORD PTR 12[esi] - mov DWORD PTR 80[esp],eax - mov DWORD PTR 84[esp],ebx - mov DWORD PTR 88[esp],ecx - mov DWORD PTR 92[esp],edx - mov eax,DWORD PTR 16[esi] - mov ebx,DWORD PTR 20[esi] - mov ecx,DWORD PTR 24[esi] - mov edx,DWORD PTR 28[esi] - mov DWORD PTR 96[esp],eax - mov DWORD PTR 100[esp],ebx - mov DWORD PTR 104[esp],ecx - mov DWORD PTR 108[esp],edx - mov eax,DWORD PTR [edi] - mov ebx,DWORD PTR 4[edi] - mov ecx,DWORD PTR 8[edi] - mov edx,DWORD PTR 12[edi] - sub eax,1 - mov DWORD PTR 112[esp],eax - mov DWORD PTR 116[esp],ebx - mov DWORD PTR 120[esp],ecx - mov DWORD PTR 124[esp],edx - jmp $L002entry -ALIGN 16 -$L003outer_loop: - mov DWORD PTR 156[esp],ebx - mov DWORD PTR 152[esp],eax - mov DWORD PTR 160[esp],ecx -$L002entry: - mov eax,1634760805 - mov DWORD PTR 4[esp],857760878 - mov DWORD PTR 8[esp],2036477234 - mov DWORD PTR 12[esp],1797285236 - mov ebx,DWORD PTR 84[esp] - mov ebp,DWORD PTR 88[esp] - mov ecx,DWORD PTR 104[esp] - mov esi,DWORD PTR 108[esp] - mov edx,DWORD PTR 116[esp] - mov edi,DWORD PTR 120[esp] - mov DWORD PTR 20[esp],ebx - mov DWORD PTR 24[esp],ebp - mov DWORD PTR 40[esp],ecx - mov DWORD PTR 44[esp],esi - mov DWORD PTR 52[esp],edx - mov DWORD PTR 56[esp],edi - mov ebx,DWORD PTR 92[esp] - mov edi,DWORD PTR 124[esp] - mov edx,DWORD PTR 112[esp] - mov ebp,DWORD PTR 80[esp] - mov ecx,DWORD PTR 96[esp] - mov esi,DWORD PTR 100[esp] - add edx,1 - mov DWORD PTR 28[esp],ebx - mov DWORD PTR 60[esp],edi - mov DWORD PTR 112[esp],edx - mov ebx,10 - jmp $L004loop -ALIGN 16 -$L004loop: - add eax,ebp - mov DWORD PTR 128[esp],ebx - mov ebx,ebp - xor edx,eax - rol edx,16 - add ecx,edx - xor ebx,ecx - mov edi,DWORD PTR 52[esp] - rol ebx,12 - mov ebp,DWORD PTR 20[esp] - add eax,ebx - xor edx,eax - mov DWORD PTR [esp],eax - rol edx,8 - mov eax,DWORD PTR 4[esp] - add ecx,edx - mov DWORD PTR 48[esp],edx - xor ebx,ecx - add eax,ebp - rol ebx,7 - xor edi,eax - mov DWORD PTR 32[esp],ecx - rol edi,16 - mov DWORD PTR 16[esp],ebx - add esi,edi - mov ecx,DWORD PTR 40[esp] - xor ebp,esi - mov edx,DWORD PTR 56[esp] - rol ebp,12 - mov ebx,DWORD PTR 24[esp] - add eax,ebp - xor edi,eax - mov DWORD PTR 4[esp],eax - rol edi,8 - mov eax,DWORD PTR 8[esp] - add esi,edi - mov DWORD PTR 52[esp],edi - xor ebp,esi - add eax,ebx - rol ebp,7 - xor edx,eax - mov DWORD PTR 36[esp],esi - rol edx,16 - mov DWORD PTR 20[esp],ebp - add ecx,edx - mov esi,DWORD PTR 44[esp] - xor ebx,ecx - mov edi,DWORD PTR 60[esp] - rol ebx,12 - mov ebp,DWORD PTR 28[esp] - add eax,ebx - xor edx,eax - mov DWORD PTR 8[esp],eax - rol edx,8 - mov eax,DWORD PTR 12[esp] - add ecx,edx - mov DWORD PTR 56[esp],edx - xor ebx,ecx - add eax,ebp - rol ebx,7 - xor edi,eax - rol edi,16 - mov DWORD PTR 24[esp],ebx - add esi,edi - xor ebp,esi - rol ebp,12 - mov ebx,DWORD PTR 20[esp] - add eax,ebp - xor edi,eax - mov DWORD PTR 12[esp],eax - rol edi,8 - mov eax,DWORD PTR [esp] - add esi,edi - mov edx,edi - xor ebp,esi - add eax,ebx - rol ebp,7 - xor edx,eax - rol edx,16 - mov DWORD PTR 28[esp],ebp - add ecx,edx - xor ebx,ecx - mov edi,DWORD PTR 48[esp] - rol ebx,12 - mov ebp,DWORD PTR 24[esp] - add eax,ebx - xor edx,eax - mov DWORD PTR [esp],eax - rol edx,8 - mov eax,DWORD PTR 4[esp] - add ecx,edx - mov DWORD PTR 60[esp],edx - xor ebx,ecx - add eax,ebp - rol ebx,7 - xor edi,eax - mov DWORD PTR 40[esp],ecx - rol edi,16 - mov DWORD PTR 20[esp],ebx - add esi,edi - mov ecx,DWORD PTR 32[esp] - xor ebp,esi - mov edx,DWORD PTR 52[esp] - rol ebp,12 - mov ebx,DWORD PTR 28[esp] - add eax,ebp - xor edi,eax - mov DWORD PTR 4[esp],eax - rol edi,8 - mov eax,DWORD PTR 8[esp] - add esi,edi - mov DWORD PTR 48[esp],edi - xor ebp,esi - add eax,ebx - rol ebp,7 - xor edx,eax - mov DWORD PTR 44[esp],esi - rol edx,16 - mov DWORD PTR 24[esp],ebp - add ecx,edx - mov esi,DWORD PTR 36[esp] - xor ebx,ecx - mov edi,DWORD PTR 56[esp] - rol ebx,12 - mov ebp,DWORD PTR 16[esp] - add eax,ebx - xor edx,eax - mov DWORD PTR 8[esp],eax - rol edx,8 - mov eax,DWORD PTR 12[esp] - add ecx,edx - mov DWORD PTR 52[esp],edx - xor ebx,ecx - add eax,ebp - rol ebx,7 - xor edi,eax - rol edi,16 - mov DWORD PTR 28[esp],ebx - add esi,edi - xor ebp,esi - mov edx,DWORD PTR 48[esp] - rol ebp,12 - mov ebx,DWORD PTR 128[esp] - add eax,ebp - xor edi,eax - mov DWORD PTR 12[esp],eax - rol edi,8 - mov eax,DWORD PTR [esp] - add esi,edi - mov DWORD PTR 56[esp],edi - xor ebp,esi - rol ebp,7 - dec ebx - jnz $L004loop - mov ebx,DWORD PTR 160[esp] - add eax,1634760805 - add ebp,DWORD PTR 80[esp] - add ecx,DWORD PTR 96[esp] - add esi,DWORD PTR 100[esp] - cmp ebx,64 - jb $L005tail - mov ebx,DWORD PTR 156[esp] - add edx,DWORD PTR 112[esp] - add edi,DWORD PTR 120[esp] - xor eax,DWORD PTR [ebx] - xor ebp,DWORD PTR 16[ebx] - mov DWORD PTR [esp],eax - mov eax,DWORD PTR 152[esp] - xor ecx,DWORD PTR 32[ebx] - xor esi,DWORD PTR 36[ebx] - xor edx,DWORD PTR 48[ebx] - xor edi,DWORD PTR 56[ebx] - mov DWORD PTR 16[eax],ebp - mov DWORD PTR 32[eax],ecx - mov DWORD PTR 36[eax],esi - mov DWORD PTR 48[eax],edx - mov DWORD PTR 56[eax],edi - mov ebp,DWORD PTR 4[esp] - mov ecx,DWORD PTR 8[esp] - mov esi,DWORD PTR 12[esp] - mov edx,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - add ebp,857760878 - add ecx,2036477234 - add esi,1797285236 - add edx,DWORD PTR 84[esp] - add edi,DWORD PTR 88[esp] - xor ebp,DWORD PTR 4[ebx] - xor ecx,DWORD PTR 8[ebx] - xor esi,DWORD PTR 12[ebx] - xor edx,DWORD PTR 20[ebx] - xor edi,DWORD PTR 24[ebx] - mov DWORD PTR 4[eax],ebp - mov DWORD PTR 8[eax],ecx - mov DWORD PTR 12[eax],esi - mov DWORD PTR 20[eax],edx - mov DWORD PTR 24[eax],edi - mov ebp,DWORD PTR 28[esp] - mov ecx,DWORD PTR 40[esp] - mov esi,DWORD PTR 44[esp] - mov edx,DWORD PTR 52[esp] - mov edi,DWORD PTR 60[esp] - add ebp,DWORD PTR 92[esp] - add ecx,DWORD PTR 104[esp] - add esi,DWORD PTR 108[esp] - add edx,DWORD PTR 116[esp] - add edi,DWORD PTR 124[esp] - xor ebp,DWORD PTR 28[ebx] - xor ecx,DWORD PTR 40[ebx] - xor esi,DWORD PTR 44[ebx] - xor edx,DWORD PTR 52[ebx] - xor edi,DWORD PTR 60[ebx] - lea ebx,DWORD PTR 64[ebx] - mov DWORD PTR 28[eax],ebp - mov ebp,DWORD PTR [esp] - mov DWORD PTR 40[eax],ecx - mov ecx,DWORD PTR 160[esp] - mov DWORD PTR 44[eax],esi - mov DWORD PTR 52[eax],edx - mov DWORD PTR 60[eax],edi - mov DWORD PTR [eax],ebp - lea eax,DWORD PTR 64[eax] - sub ecx,64 - jnz $L003outer_loop - jmp $L006done -$L005tail: - add edx,DWORD PTR 112[esp] - add edi,DWORD PTR 120[esp] - mov DWORD PTR [esp],eax - mov DWORD PTR 16[esp],ebp - mov DWORD PTR 32[esp],ecx - mov DWORD PTR 36[esp],esi - mov DWORD PTR 48[esp],edx - mov DWORD PTR 56[esp],edi - mov ebp,DWORD PTR 4[esp] - mov ecx,DWORD PTR 8[esp] - mov esi,DWORD PTR 12[esp] - mov edx,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - add ebp,857760878 - add ecx,2036477234 - add esi,1797285236 - add edx,DWORD PTR 84[esp] - add edi,DWORD PTR 88[esp] - mov DWORD PTR 4[esp],ebp - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],esi - mov DWORD PTR 20[esp],edx - mov DWORD PTR 24[esp],edi - mov ebp,DWORD PTR 28[esp] - mov ecx,DWORD PTR 40[esp] - mov esi,DWORD PTR 44[esp] - mov edx,DWORD PTR 52[esp] - mov edi,DWORD PTR 60[esp] - add ebp,DWORD PTR 92[esp] - add ecx,DWORD PTR 104[esp] - add esi,DWORD PTR 108[esp] - add edx,DWORD PTR 116[esp] - add edi,DWORD PTR 124[esp] - mov DWORD PTR 28[esp],ebp - mov ebp,DWORD PTR 156[esp] - mov DWORD PTR 40[esp],ecx - mov ecx,DWORD PTR 152[esp] - mov DWORD PTR 44[esp],esi - xor esi,esi - mov DWORD PTR 52[esp],edx - mov DWORD PTR 60[esp],edi - xor eax,eax - xor edx,edx -$L007tail_loop: - mov al,BYTE PTR [ebp*1+esi] - mov dl,BYTE PTR [esi*1+esp] - lea esi,DWORD PTR 1[esi] - xor al,dl - mov BYTE PTR [esi*1+ecx-1],al - dec ebx - jnz $L007tail_loop -$L006done: - add esp,132 -$L000no_data: - pop edi - pop esi - pop ebx - pop ebp - ret -_ChaCha20_ctr32 ENDP -ALIGN 16 -_ChaCha20_ssse3 PROC PUBLIC -$L_ChaCha20_ssse3_begin:: - push ebp - push ebx - push esi - push edi -$Lssse3_shortcut:: - test DWORD PTR 4[ebp],2048 - jnz $Lxop_shortcut - mov edi,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov ecx,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - mov ebx,DWORD PTR 36[esp] - mov ebp,esp - sub esp,524 - and esp,-64 - mov DWORD PTR 512[esp],ebp - lea eax,DWORD PTR ($Lssse3_data-$Lpic_point)[eax] - movdqu xmm3,XMMWORD PTR [ebx] -$L0081x: - movdqa xmm0,XMMWORD PTR 32[eax] - movdqu xmm1,XMMWORD PTR [edx] - movdqu xmm2,XMMWORD PTR 16[edx] - movdqa xmm6,XMMWORD PTR [eax] - movdqa xmm7,XMMWORD PTR 16[eax] - mov DWORD PTR 48[esp],ebp - movdqa XMMWORD PTR [esp],xmm0 - movdqa XMMWORD PTR 16[esp],xmm1 - movdqa XMMWORD PTR 32[esp],xmm2 - movdqa XMMWORD PTR 48[esp],xmm3 - mov edx,10 - jmp $L009loop1x -ALIGN 16 -$L010outer1x: - movdqa xmm3,XMMWORD PTR 80[eax] - movdqa xmm0,XMMWORD PTR [esp] - movdqa xmm1,XMMWORD PTR 16[esp] - movdqa xmm2,XMMWORD PTR 32[esp] - paddd xmm3,XMMWORD PTR 48[esp] - mov edx,10 - movdqa XMMWORD PTR 48[esp],xmm3 - jmp $L009loop1x -ALIGN 16 -$L009loop1x: - paddd xmm0,xmm1 - pxor xmm3,xmm0 -DB 102,15,56,0,222 - paddd xmm2,xmm3 - pxor xmm1,xmm2 - movdqa xmm4,xmm1 - psrld xmm1,20 - pslld xmm4,12 - por xmm1,xmm4 - paddd xmm0,xmm1 - pxor xmm3,xmm0 -DB 102,15,56,0,223 - paddd xmm2,xmm3 - pxor xmm1,xmm2 - movdqa xmm4,xmm1 - psrld xmm1,25 - pslld xmm4,7 - por xmm1,xmm4 - pshufd xmm2,xmm2,78 - pshufd xmm1,xmm1,57 - pshufd xmm3,xmm3,147 - nop - paddd xmm0,xmm1 - pxor xmm3,xmm0 -DB 102,15,56,0,222 - paddd xmm2,xmm3 - pxor xmm1,xmm2 - movdqa xmm4,xmm1 - psrld xmm1,20 - pslld xmm4,12 - por xmm1,xmm4 - paddd xmm0,xmm1 - pxor xmm3,xmm0 -DB 102,15,56,0,223 - paddd xmm2,xmm3 - pxor xmm1,xmm2 - movdqa xmm4,xmm1 - psrld xmm1,25 - pslld xmm4,7 - por xmm1,xmm4 - pshufd xmm2,xmm2,78 - pshufd xmm1,xmm1,147 - pshufd xmm3,xmm3,57 - dec edx - jnz $L009loop1x - paddd xmm0,XMMWORD PTR [esp] - paddd xmm1,XMMWORD PTR 16[esp] - paddd xmm2,XMMWORD PTR 32[esp] - paddd xmm3,XMMWORD PTR 48[esp] - cmp ecx,64 - jb $L011tail - movdqu xmm4,XMMWORD PTR [esi] - movdqu xmm5,XMMWORD PTR 16[esi] - pxor xmm0,xmm4 - movdqu xmm4,XMMWORD PTR 32[esi] - pxor xmm1,xmm5 - movdqu xmm5,XMMWORD PTR 48[esi] - pxor xmm2,xmm4 - pxor xmm3,xmm5 - lea esi,DWORD PTR 64[esi] - movdqu XMMWORD PTR [edi],xmm0 - movdqu XMMWORD PTR 16[edi],xmm1 - movdqu XMMWORD PTR 32[edi],xmm2 - movdqu XMMWORD PTR 48[edi],xmm3 - lea edi,DWORD PTR 64[edi] - sub ecx,64 - jnz $L010outer1x - jmp $L012done -$L011tail: - movdqa XMMWORD PTR [esp],xmm0 - movdqa XMMWORD PTR 16[esp],xmm1 - movdqa XMMWORD PTR 32[esp],xmm2 - movdqa XMMWORD PTR 48[esp],xmm3 - xor eax,eax - xor edx,edx - xor ebp,ebp -$L013tail_loop: - mov al,BYTE PTR [ebp*1+esp] - mov dl,BYTE PTR [ebp*1+esi] - lea ebp,DWORD PTR 1[ebp] - xor al,dl - mov BYTE PTR [ebp*1+edi-1],al - dec ecx - jnz $L013tail_loop -$L012done: - mov esp,DWORD PTR 512[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -_ChaCha20_ssse3 ENDP -ALIGN 64 -$Lssse3_data:: -DB 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13 -DB 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14 -DD 1634760805,857760878,2036477234,1797285236 -DD 0,1,2,3 -DD 4,4,4,4 -DD 1,0,0,0 -DD 4,0,0,0 -DD 0,-1,-1,-1 -ALIGN 64 -DB 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 -DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 -DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 -DB 114,103,62,0 -ALIGN 16 -_ChaCha20_xop PROC PUBLIC -$L_ChaCha20_xop_begin:: - push ebp - push ebx - push esi - push edi -$Lxop_shortcut:: - mov edi,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov ecx,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - mov ebx,DWORD PTR 36[esp] - vzeroupper - mov ebp,esp - sub esp,524 - and esp,-64 - mov DWORD PTR 512[esp],ebp - lea eax,DWORD PTR ($Lssse3_data-$Lpic_point)[eax] - vmovdqu xmm3,XMMWORD PTR [ebx] - cmp ecx,256 - jb $L0141x - mov DWORD PTR 516[esp],edx - mov DWORD PTR 520[esp],ebx - sub ecx,256 - lea ebp,DWORD PTR 384[esp] - vmovdqu xmm7,XMMWORD PTR [edx] - vpshufd xmm0,xmm3,0 - vpshufd xmm1,xmm3,85 - vpshufd xmm2,xmm3,170 - vpshufd xmm3,xmm3,255 - vpaddd xmm0,xmm0,XMMWORD PTR 48[eax] - vpshufd xmm4,xmm7,0 - vpshufd xmm5,xmm7,85 - vpsubd xmm0,xmm0,XMMWORD PTR 64[eax] - vpshufd xmm6,xmm7,170 - vpshufd xmm7,xmm7,255 - vmovdqa XMMWORD PTR 64[ebp],xmm0 - vmovdqa XMMWORD PTR 80[ebp],xmm1 - vmovdqa XMMWORD PTR 96[ebp],xmm2 - vmovdqa XMMWORD PTR 112[ebp],xmm3 - vmovdqu xmm3,XMMWORD PTR 16[edx] - vmovdqa XMMWORD PTR [ebp-64],xmm4 - vmovdqa XMMWORD PTR [ebp-48],xmm5 - vmovdqa XMMWORD PTR [ebp-32],xmm6 - vmovdqa XMMWORD PTR [ebp-16],xmm7 - vmovdqa xmm7,XMMWORD PTR 32[eax] - lea ebx,DWORD PTR 128[esp] - vpshufd xmm0,xmm3,0 - vpshufd xmm1,xmm3,85 - vpshufd xmm2,xmm3,170 - vpshufd xmm3,xmm3,255 - vpshufd xmm4,xmm7,0 - vpshufd xmm5,xmm7,85 - vpshufd xmm6,xmm7,170 - vpshufd xmm7,xmm7,255 - vmovdqa XMMWORD PTR [ebp],xmm0 - vmovdqa XMMWORD PTR 16[ebp],xmm1 - vmovdqa XMMWORD PTR 32[ebp],xmm2 - vmovdqa XMMWORD PTR 48[ebp],xmm3 - vmovdqa XMMWORD PTR [ebp-128],xmm4 - vmovdqa XMMWORD PTR [ebp-112],xmm5 - vmovdqa XMMWORD PTR [ebp-96],xmm6 - vmovdqa XMMWORD PTR [ebp-80],xmm7 - lea esi,DWORD PTR 128[esi] - lea edi,DWORD PTR 128[edi] - jmp $L015outer_loop -ALIGN 32 -$L015outer_loop: - vmovdqa xmm1,XMMWORD PTR [ebp-112] - vmovdqa xmm2,XMMWORD PTR [ebp-96] - vmovdqa xmm3,XMMWORD PTR [ebp-80] - vmovdqa xmm5,XMMWORD PTR [ebp-48] - vmovdqa xmm6,XMMWORD PTR [ebp-32] - vmovdqa xmm7,XMMWORD PTR [ebp-16] - vmovdqa XMMWORD PTR [ebx-112],xmm1 - vmovdqa XMMWORD PTR [ebx-96],xmm2 - vmovdqa XMMWORD PTR [ebx-80],xmm3 - vmovdqa XMMWORD PTR [ebx-48],xmm5 - vmovdqa XMMWORD PTR [ebx-32],xmm6 - vmovdqa XMMWORD PTR [ebx-16],xmm7 - vmovdqa xmm2,XMMWORD PTR 32[ebp] - vmovdqa xmm3,XMMWORD PTR 48[ebp] - vmovdqa xmm4,XMMWORD PTR 64[ebp] - vmovdqa xmm5,XMMWORD PTR 80[ebp] - vmovdqa xmm6,XMMWORD PTR 96[ebp] - vmovdqa xmm7,XMMWORD PTR 112[ebp] - vpaddd xmm4,xmm4,XMMWORD PTR 64[eax] - vmovdqa XMMWORD PTR 32[ebx],xmm2 - vmovdqa XMMWORD PTR 48[ebx],xmm3 - vmovdqa XMMWORD PTR 64[ebx],xmm4 - vmovdqa XMMWORD PTR 80[ebx],xmm5 - vmovdqa XMMWORD PTR 96[ebx],xmm6 - vmovdqa XMMWORD PTR 112[ebx],xmm7 - vmovdqa XMMWORD PTR 64[ebp],xmm4 - vmovdqa xmm0,XMMWORD PTR [ebp-128] - vmovdqa xmm6,xmm4 - vmovdqa xmm3,XMMWORD PTR [ebp-64] - vmovdqa xmm4,XMMWORD PTR [ebp] - vmovdqa xmm5,XMMWORD PTR 16[ebp] - mov edx,10 - nop -ALIGN 32 -$L016loop: - vpaddd xmm0,xmm0,xmm3 - vpxor xmm6,xmm6,xmm0 -DB 143,232,120,194,246,16 - vpaddd xmm4,xmm4,xmm6 - vpxor xmm2,xmm3,xmm4 - vmovdqa xmm1,XMMWORD PTR [ebx-112] -DB 143,232,120,194,210,12 - vmovdqa xmm3,XMMWORD PTR [ebx-48] - vpaddd xmm0,xmm0,xmm2 - vmovdqa xmm7,XMMWORD PTR 80[ebx] - vpxor xmm6,xmm6,xmm0 - vpaddd xmm1,xmm1,xmm3 -DB 143,232,120,194,246,8 - vmovdqa XMMWORD PTR [ebx-128],xmm0 - vpaddd xmm4,xmm4,xmm6 - vmovdqa XMMWORD PTR 64[ebx],xmm6 - vpxor xmm2,xmm2,xmm4 - vpxor xmm7,xmm7,xmm1 -DB 143,232,120,194,210,7 - vmovdqa XMMWORD PTR [ebx],xmm4 -DB 143,232,120,194,255,16 - vmovdqa XMMWORD PTR [ebx-64],xmm2 - vpaddd xmm5,xmm5,xmm7 - vmovdqa xmm4,XMMWORD PTR 32[ebx] - vpxor xmm3,xmm3,xmm5 - vmovdqa xmm0,XMMWORD PTR [ebx-96] -DB 143,232,120,194,219,12 - vmovdqa xmm2,XMMWORD PTR [ebx-32] - vpaddd xmm1,xmm1,xmm3 - vmovdqa xmm6,XMMWORD PTR 96[ebx] - vpxor xmm7,xmm7,xmm1 - vpaddd xmm0,xmm0,xmm2 -DB 143,232,120,194,255,8 - vmovdqa XMMWORD PTR [ebx-112],xmm1 - vpaddd xmm5,xmm5,xmm7 - vmovdqa XMMWORD PTR 80[ebx],xmm7 - vpxor xmm3,xmm3,xmm5 - vpxor xmm6,xmm6,xmm0 -DB 143,232,120,194,219,7 - vmovdqa XMMWORD PTR 16[ebx],xmm5 -DB 143,232,120,194,246,16 - vmovdqa XMMWORD PTR [ebx-48],xmm3 - vpaddd xmm4,xmm4,xmm6 - vmovdqa xmm5,XMMWORD PTR 48[ebx] - vpxor xmm2,xmm2,xmm4 - vmovdqa xmm1,XMMWORD PTR [ebx-80] -DB 143,232,120,194,210,12 - vmovdqa xmm3,XMMWORD PTR [ebx-16] - vpaddd xmm0,xmm0,xmm2 - vmovdqa xmm7,XMMWORD PTR 112[ebx] - vpxor xmm6,xmm6,xmm0 - vpaddd xmm1,xmm1,xmm3 -DB 143,232,120,194,246,8 - vmovdqa XMMWORD PTR [ebx-96],xmm0 - vpaddd xmm4,xmm4,xmm6 - vmovdqa XMMWORD PTR 96[ebx],xmm6 - vpxor xmm2,xmm2,xmm4 - vpxor xmm7,xmm7,xmm1 -DB 143,232,120,194,210,7 -DB 143,232,120,194,255,16 - vmovdqa XMMWORD PTR [ebx-32],xmm2 - vpaddd xmm5,xmm5,xmm7 - vpxor xmm3,xmm3,xmm5 - vmovdqa xmm0,XMMWORD PTR [ebx-128] -DB 143,232,120,194,219,12 - vmovdqa xmm2,XMMWORD PTR [ebx-48] - vpaddd xmm1,xmm1,xmm3 - vpxor xmm7,xmm7,xmm1 - vpaddd xmm0,xmm0,xmm2 -DB 143,232,120,194,255,8 - vmovdqa XMMWORD PTR [ebx-80],xmm1 - vpaddd xmm5,xmm5,xmm7 - vpxor xmm3,xmm3,xmm5 - vpxor xmm6,xmm7,xmm0 -DB 143,232,120,194,219,7 -DB 143,232,120,194,246,16 - vmovdqa XMMWORD PTR [ebx-16],xmm3 - vpaddd xmm4,xmm4,xmm6 - vpxor xmm2,xmm2,xmm4 - vmovdqa xmm1,XMMWORD PTR [ebx-112] -DB 143,232,120,194,210,12 - vmovdqa xmm3,XMMWORD PTR [ebx-32] - vpaddd xmm0,xmm0,xmm2 - vmovdqa xmm7,XMMWORD PTR 64[ebx] - vpxor xmm6,xmm6,xmm0 - vpaddd xmm1,xmm1,xmm3 -DB 143,232,120,194,246,8 - vmovdqa XMMWORD PTR [ebx-128],xmm0 - vpaddd xmm4,xmm4,xmm6 - vmovdqa XMMWORD PTR 112[ebx],xmm6 - vpxor xmm2,xmm2,xmm4 - vpxor xmm7,xmm7,xmm1 -DB 143,232,120,194,210,7 - vmovdqa XMMWORD PTR 32[ebx],xmm4 -DB 143,232,120,194,255,16 - vmovdqa XMMWORD PTR [ebx-48],xmm2 - vpaddd xmm5,xmm5,xmm7 - vmovdqa xmm4,XMMWORD PTR [ebx] - vpxor xmm3,xmm3,xmm5 - vmovdqa xmm0,XMMWORD PTR [ebx-96] -DB 143,232,120,194,219,12 - vmovdqa xmm2,XMMWORD PTR [ebx-16] - vpaddd xmm1,xmm1,xmm3 - vmovdqa xmm6,XMMWORD PTR 80[ebx] - vpxor xmm7,xmm7,xmm1 - vpaddd xmm0,xmm0,xmm2 -DB 143,232,120,194,255,8 - vmovdqa XMMWORD PTR [ebx-112],xmm1 - vpaddd xmm5,xmm5,xmm7 - vmovdqa XMMWORD PTR 64[ebx],xmm7 - vpxor xmm3,xmm3,xmm5 - vpxor xmm6,xmm6,xmm0 -DB 143,232,120,194,219,7 - vmovdqa XMMWORD PTR 48[ebx],xmm5 -DB 143,232,120,194,246,16 - vmovdqa XMMWORD PTR [ebx-32],xmm3 - vpaddd xmm4,xmm4,xmm6 - vmovdqa xmm5,XMMWORD PTR 16[ebx] - vpxor xmm2,xmm2,xmm4 - vmovdqa xmm1,XMMWORD PTR [ebx-80] -DB 143,232,120,194,210,12 - vmovdqa xmm3,XMMWORD PTR [ebx-64] - vpaddd xmm0,xmm0,xmm2 - vmovdqa xmm7,XMMWORD PTR 96[ebx] - vpxor xmm6,xmm6,xmm0 - vpaddd xmm1,xmm1,xmm3 -DB 143,232,120,194,246,8 - vmovdqa XMMWORD PTR [ebx-96],xmm0 - vpaddd xmm4,xmm4,xmm6 - vmovdqa XMMWORD PTR 80[ebx],xmm6 - vpxor xmm2,xmm2,xmm4 - vpxor xmm7,xmm7,xmm1 -DB 143,232,120,194,210,7 -DB 143,232,120,194,255,16 - vmovdqa XMMWORD PTR [ebx-16],xmm2 - vpaddd xmm5,xmm5,xmm7 - vpxor xmm3,xmm3,xmm5 - vmovdqa xmm0,XMMWORD PTR [ebx-128] -DB 143,232,120,194,219,12 - vpaddd xmm1,xmm1,xmm3 - vmovdqa xmm6,XMMWORD PTR 64[ebx] - vpxor xmm7,xmm7,xmm1 -DB 143,232,120,194,255,8 - vmovdqa XMMWORD PTR [ebx-80],xmm1 - vpaddd xmm5,xmm5,xmm7 - vmovdqa XMMWORD PTR 96[ebx],xmm7 - vpxor xmm3,xmm3,xmm5 -DB 143,232,120,194,219,7 - dec edx - jnz $L016loop - vmovdqa XMMWORD PTR [ebx-64],xmm3 - vmovdqa XMMWORD PTR [ebx],xmm4 - vmovdqa XMMWORD PTR 16[ebx],xmm5 - vmovdqa XMMWORD PTR 64[ebx],xmm6 - vmovdqa XMMWORD PTR 96[ebx],xmm7 - vmovdqa xmm1,XMMWORD PTR [ebx-112] - vmovdqa xmm2,XMMWORD PTR [ebx-96] - vmovdqa xmm3,XMMWORD PTR [ebx-80] - vpaddd xmm0,xmm0,XMMWORD PTR [ebp-128] - vpaddd xmm1,xmm1,XMMWORD PTR [ebp-112] - vpaddd xmm2,xmm2,XMMWORD PTR [ebp-96] - vpaddd xmm3,xmm3,XMMWORD PTR [ebp-80] - vpunpckldq xmm6,xmm0,xmm1 - vpunpckldq xmm7,xmm2,xmm3 - vpunpckhdq xmm0,xmm0,xmm1 - vpunpckhdq xmm2,xmm2,xmm3 - vpunpcklqdq xmm1,xmm6,xmm7 - vpunpckhqdq xmm6,xmm6,xmm7 - vpunpcklqdq xmm7,xmm0,xmm2 - vpunpckhqdq xmm3,xmm0,xmm2 - vpxor xmm4,xmm1,XMMWORD PTR [esi-128] - vpxor xmm5,xmm6,XMMWORD PTR [esi-64] - vpxor xmm6,xmm7,XMMWORD PTR [esi] - vpxor xmm7,xmm3,XMMWORD PTR 64[esi] - lea esi,QWORD PTR 16[esi] - vmovdqa xmm0,XMMWORD PTR [ebx-64] - vmovdqa xmm1,XMMWORD PTR [ebx-48] - vmovdqa xmm2,XMMWORD PTR [ebx-32] - vmovdqa xmm3,XMMWORD PTR [ebx-16] - vmovdqu XMMWORD PTR [edi-128],xmm4 - vmovdqu XMMWORD PTR [edi-64],xmm5 - vmovdqu XMMWORD PTR [edi],xmm6 - vmovdqu XMMWORD PTR 64[edi],xmm7 - lea edi,QWORD PTR 16[edi] - vpaddd xmm0,xmm0,XMMWORD PTR [ebp-64] - vpaddd xmm1,xmm1,XMMWORD PTR [ebp-48] - vpaddd xmm2,xmm2,XMMWORD PTR [ebp-32] - vpaddd xmm3,xmm3,XMMWORD PTR [ebp-16] - vpunpckldq xmm6,xmm0,xmm1 - vpunpckldq xmm7,xmm2,xmm3 - vpunpckhdq xmm0,xmm0,xmm1 - vpunpckhdq xmm2,xmm2,xmm3 - vpunpcklqdq xmm1,xmm6,xmm7 - vpunpckhqdq xmm6,xmm6,xmm7 - vpunpcklqdq xmm7,xmm0,xmm2 - vpunpckhqdq xmm3,xmm0,xmm2 - vpxor xmm4,xmm1,XMMWORD PTR [esi-128] - vpxor xmm5,xmm6,XMMWORD PTR [esi-64] - vpxor xmm6,xmm7,XMMWORD PTR [esi] - vpxor xmm7,xmm3,XMMWORD PTR 64[esi] - lea esi,QWORD PTR 16[esi] - vmovdqa xmm0,XMMWORD PTR [ebx] - vmovdqa xmm1,XMMWORD PTR 16[ebx] - vmovdqa xmm2,XMMWORD PTR 32[ebx] - vmovdqa xmm3,XMMWORD PTR 48[ebx] - vmovdqu XMMWORD PTR [edi-128],xmm4 - vmovdqu XMMWORD PTR [edi-64],xmm5 - vmovdqu XMMWORD PTR [edi],xmm6 - vmovdqu XMMWORD PTR 64[edi],xmm7 - lea edi,QWORD PTR 16[edi] - vpaddd xmm0,xmm0,XMMWORD PTR [ebp] - vpaddd xmm1,xmm1,XMMWORD PTR 16[ebp] - vpaddd xmm2,xmm2,XMMWORD PTR 32[ebp] - vpaddd xmm3,xmm3,XMMWORD PTR 48[ebp] - vpunpckldq xmm6,xmm0,xmm1 - vpunpckldq xmm7,xmm2,xmm3 - vpunpckhdq xmm0,xmm0,xmm1 - vpunpckhdq xmm2,xmm2,xmm3 - vpunpcklqdq xmm1,xmm6,xmm7 - vpunpckhqdq xmm6,xmm6,xmm7 - vpunpcklqdq xmm7,xmm0,xmm2 - vpunpckhqdq xmm3,xmm0,xmm2 - vpxor xmm4,xmm1,XMMWORD PTR [esi-128] - vpxor xmm5,xmm6,XMMWORD PTR [esi-64] - vpxor xmm6,xmm7,XMMWORD PTR [esi] - vpxor xmm7,xmm3,XMMWORD PTR 64[esi] - lea esi,QWORD PTR 16[esi] - vmovdqa xmm0,XMMWORD PTR 64[ebx] - vmovdqa xmm1,XMMWORD PTR 80[ebx] - vmovdqa xmm2,XMMWORD PTR 96[ebx] - vmovdqa xmm3,XMMWORD PTR 112[ebx] - vmovdqu XMMWORD PTR [edi-128],xmm4 - vmovdqu XMMWORD PTR [edi-64],xmm5 - vmovdqu XMMWORD PTR [edi],xmm6 - vmovdqu XMMWORD PTR 64[edi],xmm7 - lea edi,QWORD PTR 16[edi] - vpaddd xmm0,xmm0,XMMWORD PTR 64[ebp] - vpaddd xmm1,xmm1,XMMWORD PTR 80[ebp] - vpaddd xmm2,xmm2,XMMWORD PTR 96[ebp] - vpaddd xmm3,xmm3,XMMWORD PTR 112[ebp] - vpunpckldq xmm6,xmm0,xmm1 - vpunpckldq xmm7,xmm2,xmm3 - vpunpckhdq xmm0,xmm0,xmm1 - vpunpckhdq xmm2,xmm2,xmm3 - vpunpcklqdq xmm1,xmm6,xmm7 - vpunpckhqdq xmm6,xmm6,xmm7 - vpunpcklqdq xmm7,xmm0,xmm2 - vpunpckhqdq xmm3,xmm0,xmm2 - vpxor xmm4,xmm1,XMMWORD PTR [esi-128] - vpxor xmm5,xmm6,XMMWORD PTR [esi-64] - vpxor xmm6,xmm7,XMMWORD PTR [esi] - vpxor xmm7,xmm3,XMMWORD PTR 64[esi] - lea esi,QWORD PTR 208[esi] - vmovdqu XMMWORD PTR [edi-128],xmm4 - vmovdqu XMMWORD PTR [edi-64],xmm5 - vmovdqu XMMWORD PTR [edi],xmm6 - vmovdqu XMMWORD PTR 64[edi],xmm7 - lea edi,QWORD PTR 208[edi] - sub ecx,256 - jnc $L015outer_loop - add ecx,256 - jz $L017done - mov ebx,DWORD PTR 520[esp] - lea esi,DWORD PTR [esi-128] - mov edx,DWORD PTR 516[esp] - lea edi,DWORD PTR [edi-128] - vmovd xmm2,DWORD PTR 64[ebp] - vmovdqu xmm3,XMMWORD PTR [ebx] - vpaddd xmm2,xmm2,XMMWORD PTR 96[eax] - vpand xmm3,xmm3,XMMWORD PTR 112[eax] - vpor xmm3,xmm3,xmm2 -$L0141x: - vmovdqa xmm0,XMMWORD PTR 32[eax] - vmovdqu xmm1,XMMWORD PTR [edx] - vmovdqu xmm2,XMMWORD PTR 16[edx] - vmovdqa xmm6,XMMWORD PTR [eax] - vmovdqa xmm7,XMMWORD PTR 16[eax] - mov DWORD PTR 48[esp],ebp - vmovdqa XMMWORD PTR [esp],xmm0 - vmovdqa XMMWORD PTR 16[esp],xmm1 - vmovdqa XMMWORD PTR 32[esp],xmm2 - vmovdqa XMMWORD PTR 48[esp],xmm3 - mov edx,10 - jmp $L018loop1x -ALIGN 16 -$L019outer1x: - vmovdqa xmm3,XMMWORD PTR 80[eax] - vmovdqa xmm0,XMMWORD PTR [esp] - vmovdqa xmm1,XMMWORD PTR 16[esp] - vmovdqa xmm2,XMMWORD PTR 32[esp] - vpaddd xmm3,xmm3,XMMWORD PTR 48[esp] - mov edx,10 - vmovdqa XMMWORD PTR 48[esp],xmm3 - jmp $L018loop1x -ALIGN 16 -$L018loop1x: - vpaddd xmm0,xmm0,xmm1 - vpxor xmm3,xmm3,xmm0 -DB 143,232,120,194,219,16 - vpaddd xmm2,xmm2,xmm3 - vpxor xmm1,xmm1,xmm2 -DB 143,232,120,194,201,12 - vpaddd xmm0,xmm0,xmm1 - vpxor xmm3,xmm3,xmm0 -DB 143,232,120,194,219,8 - vpaddd xmm2,xmm2,xmm3 - vpxor xmm1,xmm1,xmm2 -DB 143,232,120,194,201,7 - vpshufd xmm2,xmm2,78 - vpshufd xmm1,xmm1,57 - vpshufd xmm3,xmm3,147 - vpaddd xmm0,xmm0,xmm1 - vpxor xmm3,xmm3,xmm0 -DB 143,232,120,194,219,16 - vpaddd xmm2,xmm2,xmm3 - vpxor xmm1,xmm1,xmm2 -DB 143,232,120,194,201,12 - vpaddd xmm0,xmm0,xmm1 - vpxor xmm3,xmm3,xmm0 -DB 143,232,120,194,219,8 - vpaddd xmm2,xmm2,xmm3 - vpxor xmm1,xmm1,xmm2 -DB 143,232,120,194,201,7 - vpshufd xmm2,xmm2,78 - vpshufd xmm1,xmm1,147 - vpshufd xmm3,xmm3,57 - dec edx - jnz $L018loop1x - vpaddd xmm0,xmm0,XMMWORD PTR [esp] - vpaddd xmm1,xmm1,XMMWORD PTR 16[esp] - vpaddd xmm2,xmm2,XMMWORD PTR 32[esp] - vpaddd xmm3,xmm3,XMMWORD PTR 48[esp] - cmp ecx,64 - jb $L020tail - vpxor xmm0,xmm0,XMMWORD PTR [esi] - vpxor xmm1,xmm1,XMMWORD PTR 16[esi] - vpxor xmm2,xmm2,XMMWORD PTR 32[esi] - vpxor xmm3,xmm3,XMMWORD PTR 48[esi] - lea esi,DWORD PTR 64[esi] - vmovdqu XMMWORD PTR [edi],xmm0 - vmovdqu XMMWORD PTR 16[edi],xmm1 - vmovdqu XMMWORD PTR 32[edi],xmm2 - vmovdqu XMMWORD PTR 48[edi],xmm3 - lea edi,DWORD PTR 64[edi] - sub ecx,64 - jnz $L019outer1x - jmp $L017done -$L020tail: - vmovdqa XMMWORD PTR [esp],xmm0 - vmovdqa XMMWORD PTR 16[esp],xmm1 - vmovdqa XMMWORD PTR 32[esp],xmm2 - vmovdqa XMMWORD PTR 48[esp],xmm3 - xor eax,eax - xor edx,edx - xor ebp,ebp -$L021tail_loop: - mov al,BYTE PTR [ebp*1+esp] - mov dl,BYTE PTR [ebp*1+esi] - lea ebp,DWORD PTR 1[ebp] - xor al,dl - mov BYTE PTR [ebp*1+edi-1],al - dec ecx - jnz $L021tail_loop -$L017done: - vzeroupper - mov esp,DWORD PTR 512[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -_ChaCha20_xop ENDP -.text$ ENDS -.bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:DWORD:4 -.bss ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +ALIGN 16 +_ChaCha20_ctr32 PROC PUBLIC +$L_ChaCha20_ctr32_begin:: + push ebp + push ebx + push esi + push edi + xor eax,eax + cmp eax,DWORD PTR 28[esp] + je $L000no_data + call $Lpic_point +$Lpic_point:: + pop eax + lea ebp,DWORD PTR _OPENSSL_ia32cap_P + test DWORD PTR [ebp],16777216 + jz $L001x86 + test DWORD PTR 4[ebp],512 + jz $L001x86 + jmp $Lssse3_shortcut +$L001x86: + mov esi,DWORD PTR 32[esp] + mov edi,DWORD PTR 36[esp] + sub esp,132 + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edx,DWORD PTR 12[esi] + mov DWORD PTR 80[esp],eax + mov DWORD PTR 84[esp],ebx + mov DWORD PTR 88[esp],ecx + mov DWORD PTR 92[esp],edx + mov eax,DWORD PTR 16[esi] + mov ebx,DWORD PTR 20[esi] + mov ecx,DWORD PTR 24[esi] + mov edx,DWORD PTR 28[esi] + mov DWORD PTR 96[esp],eax + mov DWORD PTR 100[esp],ebx + mov DWORD PTR 104[esp],ecx + mov DWORD PTR 108[esp],edx + mov eax,DWORD PTR [edi] + mov ebx,DWORD PTR 4[edi] + mov ecx,DWORD PTR 8[edi] + mov edx,DWORD PTR 12[edi] + sub eax,1 + mov DWORD PTR 112[esp],eax + mov DWORD PTR 116[esp],ebx + mov DWORD PTR 120[esp],ecx + mov DWORD PTR 124[esp],edx + jmp $L002entry +ALIGN 16 +$L003outer_loop: + mov DWORD PTR 156[esp],ebx + mov DWORD PTR 152[esp],eax + mov DWORD PTR 160[esp],ecx +$L002entry: + mov eax,1634760805 + mov DWORD PTR 4[esp],857760878 + mov DWORD PTR 8[esp],2036477234 + mov DWORD PTR 12[esp],1797285236 + mov ebx,DWORD PTR 84[esp] + mov ebp,DWORD PTR 88[esp] + mov ecx,DWORD PTR 104[esp] + mov esi,DWORD PTR 108[esp] + mov edx,DWORD PTR 116[esp] + mov edi,DWORD PTR 120[esp] + mov DWORD PTR 20[esp],ebx + mov DWORD PTR 24[esp],ebp + mov DWORD PTR 40[esp],ecx + mov DWORD PTR 44[esp],esi + mov DWORD PTR 52[esp],edx + mov DWORD PTR 56[esp],edi + mov ebx,DWORD PTR 92[esp] + mov edi,DWORD PTR 124[esp] + mov edx,DWORD PTR 112[esp] + mov ebp,DWORD PTR 80[esp] + mov ecx,DWORD PTR 96[esp] + mov esi,DWORD PTR 100[esp] + add edx,1 + mov DWORD PTR 28[esp],ebx + mov DWORD PTR 60[esp],edi + mov DWORD PTR 112[esp],edx + mov ebx,10 + jmp $L004loop +ALIGN 16 +$L004loop: + add eax,ebp + mov DWORD PTR 128[esp],ebx + mov ebx,ebp + xor edx,eax + rol edx,16 + add ecx,edx + xor ebx,ecx + mov edi,DWORD PTR 52[esp] + rol ebx,12 + mov ebp,DWORD PTR 20[esp] + add eax,ebx + xor edx,eax + mov DWORD PTR [esp],eax + rol edx,8 + mov eax,DWORD PTR 4[esp] + add ecx,edx + mov DWORD PTR 48[esp],edx + xor ebx,ecx + add eax,ebp + rol ebx,7 + xor edi,eax + mov DWORD PTR 32[esp],ecx + rol edi,16 + mov DWORD PTR 16[esp],ebx + add esi,edi + mov ecx,DWORD PTR 40[esp] + xor ebp,esi + mov edx,DWORD PTR 56[esp] + rol ebp,12 + mov ebx,DWORD PTR 24[esp] + add eax,ebp + xor edi,eax + mov DWORD PTR 4[esp],eax + rol edi,8 + mov eax,DWORD PTR 8[esp] + add esi,edi + mov DWORD PTR 52[esp],edi + xor ebp,esi + add eax,ebx + rol ebp,7 + xor edx,eax + mov DWORD PTR 36[esp],esi + rol edx,16 + mov DWORD PTR 20[esp],ebp + add ecx,edx + mov esi,DWORD PTR 44[esp] + xor ebx,ecx + mov edi,DWORD PTR 60[esp] + rol ebx,12 + mov ebp,DWORD PTR 28[esp] + add eax,ebx + xor edx,eax + mov DWORD PTR 8[esp],eax + rol edx,8 + mov eax,DWORD PTR 12[esp] + add ecx,edx + mov DWORD PTR 56[esp],edx + xor ebx,ecx + add eax,ebp + rol ebx,7 + xor edi,eax + rol edi,16 + mov DWORD PTR 24[esp],ebx + add esi,edi + xor ebp,esi + rol ebp,12 + mov ebx,DWORD PTR 20[esp] + add eax,ebp + xor edi,eax + mov DWORD PTR 12[esp],eax + rol edi,8 + mov eax,DWORD PTR [esp] + add esi,edi + mov edx,edi + xor ebp,esi + add eax,ebx + rol ebp,7 + xor edx,eax + rol edx,16 + mov DWORD PTR 28[esp],ebp + add ecx,edx + xor ebx,ecx + mov edi,DWORD PTR 48[esp] + rol ebx,12 + mov ebp,DWORD PTR 24[esp] + add eax,ebx + xor edx,eax + mov DWORD PTR [esp],eax + rol edx,8 + mov eax,DWORD PTR 4[esp] + add ecx,edx + mov DWORD PTR 60[esp],edx + xor ebx,ecx + add eax,ebp + rol ebx,7 + xor edi,eax + mov DWORD PTR 40[esp],ecx + rol edi,16 + mov DWORD PTR 20[esp],ebx + add esi,edi + mov ecx,DWORD PTR 32[esp] + xor ebp,esi + mov edx,DWORD PTR 52[esp] + rol ebp,12 + mov ebx,DWORD PTR 28[esp] + add eax,ebp + xor edi,eax + mov DWORD PTR 4[esp],eax + rol edi,8 + mov eax,DWORD PTR 8[esp] + add esi,edi + mov DWORD PTR 48[esp],edi + xor ebp,esi + add eax,ebx + rol ebp,7 + xor edx,eax + mov DWORD PTR 44[esp],esi + rol edx,16 + mov DWORD PTR 24[esp],ebp + add ecx,edx + mov esi,DWORD PTR 36[esp] + xor ebx,ecx + mov edi,DWORD PTR 56[esp] + rol ebx,12 + mov ebp,DWORD PTR 16[esp] + add eax,ebx + xor edx,eax + mov DWORD PTR 8[esp],eax + rol edx,8 + mov eax,DWORD PTR 12[esp] + add ecx,edx + mov DWORD PTR 52[esp],edx + xor ebx,ecx + add eax,ebp + rol ebx,7 + xor edi,eax + rol edi,16 + mov DWORD PTR 28[esp],ebx + add esi,edi + xor ebp,esi + mov edx,DWORD PTR 48[esp] + rol ebp,12 + mov ebx,DWORD PTR 128[esp] + add eax,ebp + xor edi,eax + mov DWORD PTR 12[esp],eax + rol edi,8 + mov eax,DWORD PTR [esp] + add esi,edi + mov DWORD PTR 56[esp],edi + xor ebp,esi + rol ebp,7 + dec ebx + jnz $L004loop + mov ebx,DWORD PTR 160[esp] + add eax,1634760805 + add ebp,DWORD PTR 80[esp] + add ecx,DWORD PTR 96[esp] + add esi,DWORD PTR 100[esp] + cmp ebx,64 + jb $L005tail + mov ebx,DWORD PTR 156[esp] + add edx,DWORD PTR 112[esp] + add edi,DWORD PTR 120[esp] + xor eax,DWORD PTR [ebx] + xor ebp,DWORD PTR 16[ebx] + mov DWORD PTR [esp],eax + mov eax,DWORD PTR 152[esp] + xor ecx,DWORD PTR 32[ebx] + xor esi,DWORD PTR 36[ebx] + xor edx,DWORD PTR 48[ebx] + xor edi,DWORD PTR 56[ebx] + mov DWORD PTR 16[eax],ebp + mov DWORD PTR 32[eax],ecx + mov DWORD PTR 36[eax],esi + mov DWORD PTR 48[eax],edx + mov DWORD PTR 56[eax],edi + mov ebp,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] + mov esi,DWORD PTR 12[esp] + mov edx,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + add ebp,857760878 + add ecx,2036477234 + add esi,1797285236 + add edx,DWORD PTR 84[esp] + add edi,DWORD PTR 88[esp] + xor ebp,DWORD PTR 4[ebx] + xor ecx,DWORD PTR 8[ebx] + xor esi,DWORD PTR 12[ebx] + xor edx,DWORD PTR 20[ebx] + xor edi,DWORD PTR 24[ebx] + mov DWORD PTR 4[eax],ebp + mov DWORD PTR 8[eax],ecx + mov DWORD PTR 12[eax],esi + mov DWORD PTR 20[eax],edx + mov DWORD PTR 24[eax],edi + mov ebp,DWORD PTR 28[esp] + mov ecx,DWORD PTR 40[esp] + mov esi,DWORD PTR 44[esp] + mov edx,DWORD PTR 52[esp] + mov edi,DWORD PTR 60[esp] + add ebp,DWORD PTR 92[esp] + add ecx,DWORD PTR 104[esp] + add esi,DWORD PTR 108[esp] + add edx,DWORD PTR 116[esp] + add edi,DWORD PTR 124[esp] + xor ebp,DWORD PTR 28[ebx] + xor ecx,DWORD PTR 40[ebx] + xor esi,DWORD PTR 44[ebx] + xor edx,DWORD PTR 52[ebx] + xor edi,DWORD PTR 60[ebx] + lea ebx,DWORD PTR 64[ebx] + mov DWORD PTR 28[eax],ebp + mov ebp,DWORD PTR [esp] + mov DWORD PTR 40[eax],ecx + mov ecx,DWORD PTR 160[esp] + mov DWORD PTR 44[eax],esi + mov DWORD PTR 52[eax],edx + mov DWORD PTR 60[eax],edi + mov DWORD PTR [eax],ebp + lea eax,DWORD PTR 64[eax] + sub ecx,64 + jnz $L003outer_loop + jmp $L006done +$L005tail: + add edx,DWORD PTR 112[esp] + add edi,DWORD PTR 120[esp] + mov DWORD PTR [esp],eax + mov DWORD PTR 16[esp],ebp + mov DWORD PTR 32[esp],ecx + mov DWORD PTR 36[esp],esi + mov DWORD PTR 48[esp],edx + mov DWORD PTR 56[esp],edi + mov ebp,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] + mov esi,DWORD PTR 12[esp] + mov edx,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + add ebp,857760878 + add ecx,2036477234 + add esi,1797285236 + add edx,DWORD PTR 84[esp] + add edi,DWORD PTR 88[esp] + mov DWORD PTR 4[esp],ebp + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],esi + mov DWORD PTR 20[esp],edx + mov DWORD PTR 24[esp],edi + mov ebp,DWORD PTR 28[esp] + mov ecx,DWORD PTR 40[esp] + mov esi,DWORD PTR 44[esp] + mov edx,DWORD PTR 52[esp] + mov edi,DWORD PTR 60[esp] + add ebp,DWORD PTR 92[esp] + add ecx,DWORD PTR 104[esp] + add esi,DWORD PTR 108[esp] + add edx,DWORD PTR 116[esp] + add edi,DWORD PTR 124[esp] + mov DWORD PTR 28[esp],ebp + mov ebp,DWORD PTR 156[esp] + mov DWORD PTR 40[esp],ecx + mov ecx,DWORD PTR 152[esp] + mov DWORD PTR 44[esp],esi + xor esi,esi + mov DWORD PTR 52[esp],edx + mov DWORD PTR 60[esp],edi + xor eax,eax + xor edx,edx +$L007tail_loop: + mov al,BYTE PTR [ebp*1+esi] + mov dl,BYTE PTR [esi*1+esp] + lea esi,DWORD PTR 1[esi] + xor al,dl + mov BYTE PTR [esi*1+ecx-1],al + dec ebx + jnz $L007tail_loop +$L006done: + add esp,132 +$L000no_data: + pop edi + pop esi + pop ebx + pop ebp + ret +_ChaCha20_ctr32 ENDP +ALIGN 16 +_ChaCha20_ssse3 PROC PUBLIC +$L_ChaCha20_ssse3_begin:: + push ebp + push ebx + push esi + push edi +$Lssse3_shortcut:: + test DWORD PTR 4[ebp],2048 + jnz $Lxop_shortcut + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov ecx,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + mov ebx,DWORD PTR 36[esp] + mov ebp,esp + sub esp,524 + and esp,-64 + mov DWORD PTR 512[esp],ebp + lea eax,DWORD PTR ($Lssse3_data-$Lpic_point)[eax] + movdqu xmm3,XMMWORD PTR [ebx] +$L0081x: + movdqa xmm0,XMMWORD PTR 32[eax] + movdqu xmm1,XMMWORD PTR [edx] + movdqu xmm2,XMMWORD PTR 16[edx] + movdqa xmm6,XMMWORD PTR [eax] + movdqa xmm7,XMMWORD PTR 16[eax] + mov DWORD PTR 48[esp],ebp + movdqa XMMWORD PTR [esp],xmm0 + movdqa XMMWORD PTR 16[esp],xmm1 + movdqa XMMWORD PTR 32[esp],xmm2 + movdqa XMMWORD PTR 48[esp],xmm3 + mov edx,10 + jmp $L009loop1x +ALIGN 16 +$L010outer1x: + movdqa xmm3,XMMWORD PTR 80[eax] + movdqa xmm0,XMMWORD PTR [esp] + movdqa xmm1,XMMWORD PTR 16[esp] + movdqa xmm2,XMMWORD PTR 32[esp] + paddd xmm3,XMMWORD PTR 48[esp] + mov edx,10 + movdqa XMMWORD PTR 48[esp],xmm3 + jmp $L009loop1x +ALIGN 16 +$L009loop1x: + paddd xmm0,xmm1 + pxor xmm3,xmm0 +DB 102,15,56,0,222 + paddd xmm2,xmm3 + pxor xmm1,xmm2 + movdqa xmm4,xmm1 + psrld xmm1,20 + pslld xmm4,12 + por xmm1,xmm4 + paddd xmm0,xmm1 + pxor xmm3,xmm0 +DB 102,15,56,0,223 + paddd xmm2,xmm3 + pxor xmm1,xmm2 + movdqa xmm4,xmm1 + psrld xmm1,25 + pslld xmm4,7 + por xmm1,xmm4 + pshufd xmm2,xmm2,78 + pshufd xmm1,xmm1,57 + pshufd xmm3,xmm3,147 + nop + paddd xmm0,xmm1 + pxor xmm3,xmm0 +DB 102,15,56,0,222 + paddd xmm2,xmm3 + pxor xmm1,xmm2 + movdqa xmm4,xmm1 + psrld xmm1,20 + pslld xmm4,12 + por xmm1,xmm4 + paddd xmm0,xmm1 + pxor xmm3,xmm0 +DB 102,15,56,0,223 + paddd xmm2,xmm3 + pxor xmm1,xmm2 + movdqa xmm4,xmm1 + psrld xmm1,25 + pslld xmm4,7 + por xmm1,xmm4 + pshufd xmm2,xmm2,78 + pshufd xmm1,xmm1,147 + pshufd xmm3,xmm3,57 + dec edx + jnz $L009loop1x + paddd xmm0,XMMWORD PTR [esp] + paddd xmm1,XMMWORD PTR 16[esp] + paddd xmm2,XMMWORD PTR 32[esp] + paddd xmm3,XMMWORD PTR 48[esp] + cmp ecx,64 + jb $L011tail + movdqu xmm4,XMMWORD PTR [esi] + movdqu xmm5,XMMWORD PTR 16[esi] + pxor xmm0,xmm4 + movdqu xmm4,XMMWORD PTR 32[esi] + pxor xmm1,xmm5 + movdqu xmm5,XMMWORD PTR 48[esi] + pxor xmm2,xmm4 + pxor xmm3,xmm5 + lea esi,DWORD PTR 64[esi] + movdqu XMMWORD PTR [edi],xmm0 + movdqu XMMWORD PTR 16[edi],xmm1 + movdqu XMMWORD PTR 32[edi],xmm2 + movdqu XMMWORD PTR 48[edi],xmm3 + lea edi,DWORD PTR 64[edi] + sub ecx,64 + jnz $L010outer1x + jmp $L012done +$L011tail: + movdqa XMMWORD PTR [esp],xmm0 + movdqa XMMWORD PTR 16[esp],xmm1 + movdqa XMMWORD PTR 32[esp],xmm2 + movdqa XMMWORD PTR 48[esp],xmm3 + xor eax,eax + xor edx,edx + xor ebp,ebp +$L013tail_loop: + mov al,BYTE PTR [ebp*1+esp] + mov dl,BYTE PTR [ebp*1+esi] + lea ebp,DWORD PTR 1[ebp] + xor al,dl + mov BYTE PTR [ebp*1+edi-1],al + dec ecx + jnz $L013tail_loop +$L012done: + mov esp,DWORD PTR 512[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +_ChaCha20_ssse3 ENDP +ALIGN 64 +$Lssse3_data:: +DB 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13 +DB 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14 +DD 1634760805,857760878,2036477234,1797285236 +DD 0,1,2,3 +DD 4,4,4,4 +DD 1,0,0,0 +DD 4,0,0,0 +DD 0,-1,-1,-1 +ALIGN 64 +DB 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 +DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 +DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 +DB 114,103,62,0 +ALIGN 16 +_ChaCha20_xop PROC PUBLIC +$L_ChaCha20_xop_begin:: + push ebp + push ebx + push esi + push edi +$Lxop_shortcut:: + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov ecx,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + mov ebx,DWORD PTR 36[esp] + vzeroupper + mov ebp,esp + sub esp,524 + and esp,-64 + mov DWORD PTR 512[esp],ebp + lea eax,DWORD PTR ($Lssse3_data-$Lpic_point)[eax] + vmovdqu xmm3,XMMWORD PTR [ebx] + cmp ecx,256 + jb $L0141x + mov DWORD PTR 516[esp],edx + mov DWORD PTR 520[esp],ebx + sub ecx,256 + lea ebp,DWORD PTR 384[esp] + vmovdqu xmm7,XMMWORD PTR [edx] + vpshufd xmm0,xmm3,0 + vpshufd xmm1,xmm3,85 + vpshufd xmm2,xmm3,170 + vpshufd xmm3,xmm3,255 + vpaddd xmm0,xmm0,XMMWORD PTR 48[eax] + vpshufd xmm4,xmm7,0 + vpshufd xmm5,xmm7,85 + vpsubd xmm0,xmm0,XMMWORD PTR 64[eax] + vpshufd xmm6,xmm7,170 + vpshufd xmm7,xmm7,255 + vmovdqa XMMWORD PTR 64[ebp],xmm0 + vmovdqa XMMWORD PTR 80[ebp],xmm1 + vmovdqa XMMWORD PTR 96[ebp],xmm2 + vmovdqa XMMWORD PTR 112[ebp],xmm3 + vmovdqu xmm3,XMMWORD PTR 16[edx] + vmovdqa XMMWORD PTR [ebp-64],xmm4 + vmovdqa XMMWORD PTR [ebp-48],xmm5 + vmovdqa XMMWORD PTR [ebp-32],xmm6 + vmovdqa XMMWORD PTR [ebp-16],xmm7 + vmovdqa xmm7,XMMWORD PTR 32[eax] + lea ebx,DWORD PTR 128[esp] + vpshufd xmm0,xmm3,0 + vpshufd xmm1,xmm3,85 + vpshufd xmm2,xmm3,170 + vpshufd xmm3,xmm3,255 + vpshufd xmm4,xmm7,0 + vpshufd xmm5,xmm7,85 + vpshufd xmm6,xmm7,170 + vpshufd xmm7,xmm7,255 + vmovdqa XMMWORD PTR [ebp],xmm0 + vmovdqa XMMWORD PTR 16[ebp],xmm1 + vmovdqa XMMWORD PTR 32[ebp],xmm2 + vmovdqa XMMWORD PTR 48[ebp],xmm3 + vmovdqa XMMWORD PTR [ebp-128],xmm4 + vmovdqa XMMWORD PTR [ebp-112],xmm5 + vmovdqa XMMWORD PTR [ebp-96],xmm6 + vmovdqa XMMWORD PTR [ebp-80],xmm7 + lea esi,DWORD PTR 128[esi] + lea edi,DWORD PTR 128[edi] + jmp $L015outer_loop +ALIGN 32 +$L015outer_loop: + vmovdqa xmm1,XMMWORD PTR [ebp-112] + vmovdqa xmm2,XMMWORD PTR [ebp-96] + vmovdqa xmm3,XMMWORD PTR [ebp-80] + vmovdqa xmm5,XMMWORD PTR [ebp-48] + vmovdqa xmm6,XMMWORD PTR [ebp-32] + vmovdqa xmm7,XMMWORD PTR [ebp-16] + vmovdqa XMMWORD PTR [ebx-112],xmm1 + vmovdqa XMMWORD PTR [ebx-96],xmm2 + vmovdqa XMMWORD PTR [ebx-80],xmm3 + vmovdqa XMMWORD PTR [ebx-48],xmm5 + vmovdqa XMMWORD PTR [ebx-32],xmm6 + vmovdqa XMMWORD PTR [ebx-16],xmm7 + vmovdqa xmm2,XMMWORD PTR 32[ebp] + vmovdqa xmm3,XMMWORD PTR 48[ebp] + vmovdqa xmm4,XMMWORD PTR 64[ebp] + vmovdqa xmm5,XMMWORD PTR 80[ebp] + vmovdqa xmm6,XMMWORD PTR 96[ebp] + vmovdqa xmm7,XMMWORD PTR 112[ebp] + vpaddd xmm4,xmm4,XMMWORD PTR 64[eax] + vmovdqa XMMWORD PTR 32[ebx],xmm2 + vmovdqa XMMWORD PTR 48[ebx],xmm3 + vmovdqa XMMWORD PTR 64[ebx],xmm4 + vmovdqa XMMWORD PTR 80[ebx],xmm5 + vmovdqa XMMWORD PTR 96[ebx],xmm6 + vmovdqa XMMWORD PTR 112[ebx],xmm7 + vmovdqa XMMWORD PTR 64[ebp],xmm4 + vmovdqa xmm0,XMMWORD PTR [ebp-128] + vmovdqa xmm6,xmm4 + vmovdqa xmm3,XMMWORD PTR [ebp-64] + vmovdqa xmm4,XMMWORD PTR [ebp] + vmovdqa xmm5,XMMWORD PTR 16[ebp] + mov edx,10 + nop +ALIGN 32 +$L016loop: + vpaddd xmm0,xmm0,xmm3 + vpxor xmm6,xmm6,xmm0 +DB 143,232,120,194,246,16 + vpaddd xmm4,xmm4,xmm6 + vpxor xmm2,xmm3,xmm4 + vmovdqa xmm1,XMMWORD PTR [ebx-112] +DB 143,232,120,194,210,12 + vmovdqa xmm3,XMMWORD PTR [ebx-48] + vpaddd xmm0,xmm0,xmm2 + vmovdqa xmm7,XMMWORD PTR 80[ebx] + vpxor xmm6,xmm6,xmm0 + vpaddd xmm1,xmm1,xmm3 +DB 143,232,120,194,246,8 + vmovdqa XMMWORD PTR [ebx-128],xmm0 + vpaddd xmm4,xmm4,xmm6 + vmovdqa XMMWORD PTR 64[ebx],xmm6 + vpxor xmm2,xmm2,xmm4 + vpxor xmm7,xmm7,xmm1 +DB 143,232,120,194,210,7 + vmovdqa XMMWORD PTR [ebx],xmm4 +DB 143,232,120,194,255,16 + vmovdqa XMMWORD PTR [ebx-64],xmm2 + vpaddd xmm5,xmm5,xmm7 + vmovdqa xmm4,XMMWORD PTR 32[ebx] + vpxor xmm3,xmm3,xmm5 + vmovdqa xmm0,XMMWORD PTR [ebx-96] +DB 143,232,120,194,219,12 + vmovdqa xmm2,XMMWORD PTR [ebx-32] + vpaddd xmm1,xmm1,xmm3 + vmovdqa xmm6,XMMWORD PTR 96[ebx] + vpxor xmm7,xmm7,xmm1 + vpaddd xmm0,xmm0,xmm2 +DB 143,232,120,194,255,8 + vmovdqa XMMWORD PTR [ebx-112],xmm1 + vpaddd xmm5,xmm5,xmm7 + vmovdqa XMMWORD PTR 80[ebx],xmm7 + vpxor xmm3,xmm3,xmm5 + vpxor xmm6,xmm6,xmm0 +DB 143,232,120,194,219,7 + vmovdqa XMMWORD PTR 16[ebx],xmm5 +DB 143,232,120,194,246,16 + vmovdqa XMMWORD PTR [ebx-48],xmm3 + vpaddd xmm4,xmm4,xmm6 + vmovdqa xmm5,XMMWORD PTR 48[ebx] + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm1,XMMWORD PTR [ebx-80] +DB 143,232,120,194,210,12 + vmovdqa xmm3,XMMWORD PTR [ebx-16] + vpaddd xmm0,xmm0,xmm2 + vmovdqa xmm7,XMMWORD PTR 112[ebx] + vpxor xmm6,xmm6,xmm0 + vpaddd xmm1,xmm1,xmm3 +DB 143,232,120,194,246,8 + vmovdqa XMMWORD PTR [ebx-96],xmm0 + vpaddd xmm4,xmm4,xmm6 + vmovdqa XMMWORD PTR 96[ebx],xmm6 + vpxor xmm2,xmm2,xmm4 + vpxor xmm7,xmm7,xmm1 +DB 143,232,120,194,210,7 +DB 143,232,120,194,255,16 + vmovdqa XMMWORD PTR [ebx-32],xmm2 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm3,xmm3,xmm5 + vmovdqa xmm0,XMMWORD PTR [ebx-128] +DB 143,232,120,194,219,12 + vmovdqa xmm2,XMMWORD PTR [ebx-48] + vpaddd xmm1,xmm1,xmm3 + vpxor xmm7,xmm7,xmm1 + vpaddd xmm0,xmm0,xmm2 +DB 143,232,120,194,255,8 + vmovdqa XMMWORD PTR [ebx-80],xmm1 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm3,xmm3,xmm5 + vpxor xmm6,xmm7,xmm0 +DB 143,232,120,194,219,7 +DB 143,232,120,194,246,16 + vmovdqa XMMWORD PTR [ebx-16],xmm3 + vpaddd xmm4,xmm4,xmm6 + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm1,XMMWORD PTR [ebx-112] +DB 143,232,120,194,210,12 + vmovdqa xmm3,XMMWORD PTR [ebx-32] + vpaddd xmm0,xmm0,xmm2 + vmovdqa xmm7,XMMWORD PTR 64[ebx] + vpxor xmm6,xmm6,xmm0 + vpaddd xmm1,xmm1,xmm3 +DB 143,232,120,194,246,8 + vmovdqa XMMWORD PTR [ebx-128],xmm0 + vpaddd xmm4,xmm4,xmm6 + vmovdqa XMMWORD PTR 112[ebx],xmm6 + vpxor xmm2,xmm2,xmm4 + vpxor xmm7,xmm7,xmm1 +DB 143,232,120,194,210,7 + vmovdqa XMMWORD PTR 32[ebx],xmm4 +DB 143,232,120,194,255,16 + vmovdqa XMMWORD PTR [ebx-48],xmm2 + vpaddd xmm5,xmm5,xmm7 + vmovdqa xmm4,XMMWORD PTR [ebx] + vpxor xmm3,xmm3,xmm5 + vmovdqa xmm0,XMMWORD PTR [ebx-96] +DB 143,232,120,194,219,12 + vmovdqa xmm2,XMMWORD PTR [ebx-16] + vpaddd xmm1,xmm1,xmm3 + vmovdqa xmm6,XMMWORD PTR 80[ebx] + vpxor xmm7,xmm7,xmm1 + vpaddd xmm0,xmm0,xmm2 +DB 143,232,120,194,255,8 + vmovdqa XMMWORD PTR [ebx-112],xmm1 + vpaddd xmm5,xmm5,xmm7 + vmovdqa XMMWORD PTR 64[ebx],xmm7 + vpxor xmm3,xmm3,xmm5 + vpxor xmm6,xmm6,xmm0 +DB 143,232,120,194,219,7 + vmovdqa XMMWORD PTR 48[ebx],xmm5 +DB 143,232,120,194,246,16 + vmovdqa XMMWORD PTR [ebx-32],xmm3 + vpaddd xmm4,xmm4,xmm6 + vmovdqa xmm5,XMMWORD PTR 16[ebx] + vpxor xmm2,xmm2,xmm4 + vmovdqa xmm1,XMMWORD PTR [ebx-80] +DB 143,232,120,194,210,12 + vmovdqa xmm3,XMMWORD PTR [ebx-64] + vpaddd xmm0,xmm0,xmm2 + vmovdqa xmm7,XMMWORD PTR 96[ebx] + vpxor xmm6,xmm6,xmm0 + vpaddd xmm1,xmm1,xmm3 +DB 143,232,120,194,246,8 + vmovdqa XMMWORD PTR [ebx-96],xmm0 + vpaddd xmm4,xmm4,xmm6 + vmovdqa XMMWORD PTR 80[ebx],xmm6 + vpxor xmm2,xmm2,xmm4 + vpxor xmm7,xmm7,xmm1 +DB 143,232,120,194,210,7 +DB 143,232,120,194,255,16 + vmovdqa XMMWORD PTR [ebx-16],xmm2 + vpaddd xmm5,xmm5,xmm7 + vpxor xmm3,xmm3,xmm5 + vmovdqa xmm0,XMMWORD PTR [ebx-128] +DB 143,232,120,194,219,12 + vpaddd xmm1,xmm1,xmm3 + vmovdqa xmm6,XMMWORD PTR 64[ebx] + vpxor xmm7,xmm7,xmm1 +DB 143,232,120,194,255,8 + vmovdqa XMMWORD PTR [ebx-80],xmm1 + vpaddd xmm5,xmm5,xmm7 + vmovdqa XMMWORD PTR 96[ebx],xmm7 + vpxor xmm3,xmm3,xmm5 +DB 143,232,120,194,219,7 + dec edx + jnz $L016loop + vmovdqa XMMWORD PTR [ebx-64],xmm3 + vmovdqa XMMWORD PTR [ebx],xmm4 + vmovdqa XMMWORD PTR 16[ebx],xmm5 + vmovdqa XMMWORD PTR 64[ebx],xmm6 + vmovdqa XMMWORD PTR 96[ebx],xmm7 + vmovdqa xmm1,XMMWORD PTR [ebx-112] + vmovdqa xmm2,XMMWORD PTR [ebx-96] + vmovdqa xmm3,XMMWORD PTR [ebx-80] + vpaddd xmm0,xmm0,XMMWORD PTR [ebp-128] + vpaddd xmm1,xmm1,XMMWORD PTR [ebp-112] + vpaddd xmm2,xmm2,XMMWORD PTR [ebp-96] + vpaddd xmm3,xmm3,XMMWORD PTR [ebp-80] + vpunpckldq xmm6,xmm0,xmm1 + vpunpckldq xmm7,xmm2,xmm3 + vpunpckhdq xmm0,xmm0,xmm1 + vpunpckhdq xmm2,xmm2,xmm3 + vpunpcklqdq xmm1,xmm6,xmm7 + vpunpckhqdq xmm6,xmm6,xmm7 + vpunpcklqdq xmm7,xmm0,xmm2 + vpunpckhqdq xmm3,xmm0,xmm2 + vpxor xmm4,xmm1,XMMWORD PTR [esi-128] + vpxor xmm5,xmm6,XMMWORD PTR [esi-64] + vpxor xmm6,xmm7,XMMWORD PTR [esi] + vpxor xmm7,xmm3,XMMWORD PTR 64[esi] + lea esi,QWORD PTR 16[esi] + vmovdqa xmm0,XMMWORD PTR [ebx-64] + vmovdqa xmm1,XMMWORD PTR [ebx-48] + vmovdqa xmm2,XMMWORD PTR [ebx-32] + vmovdqa xmm3,XMMWORD PTR [ebx-16] + vmovdqu XMMWORD PTR [edi-128],xmm4 + vmovdqu XMMWORD PTR [edi-64],xmm5 + vmovdqu XMMWORD PTR [edi],xmm6 + vmovdqu XMMWORD PTR 64[edi],xmm7 + lea edi,QWORD PTR 16[edi] + vpaddd xmm0,xmm0,XMMWORD PTR [ebp-64] + vpaddd xmm1,xmm1,XMMWORD PTR [ebp-48] + vpaddd xmm2,xmm2,XMMWORD PTR [ebp-32] + vpaddd xmm3,xmm3,XMMWORD PTR [ebp-16] + vpunpckldq xmm6,xmm0,xmm1 + vpunpckldq xmm7,xmm2,xmm3 + vpunpckhdq xmm0,xmm0,xmm1 + vpunpckhdq xmm2,xmm2,xmm3 + vpunpcklqdq xmm1,xmm6,xmm7 + vpunpckhqdq xmm6,xmm6,xmm7 + vpunpcklqdq xmm7,xmm0,xmm2 + vpunpckhqdq xmm3,xmm0,xmm2 + vpxor xmm4,xmm1,XMMWORD PTR [esi-128] + vpxor xmm5,xmm6,XMMWORD PTR [esi-64] + vpxor xmm6,xmm7,XMMWORD PTR [esi] + vpxor xmm7,xmm3,XMMWORD PTR 64[esi] + lea esi,QWORD PTR 16[esi] + vmovdqa xmm0,XMMWORD PTR [ebx] + vmovdqa xmm1,XMMWORD PTR 16[ebx] + vmovdqa xmm2,XMMWORD PTR 32[ebx] + vmovdqa xmm3,XMMWORD PTR 48[ebx] + vmovdqu XMMWORD PTR [edi-128],xmm4 + vmovdqu XMMWORD PTR [edi-64],xmm5 + vmovdqu XMMWORD PTR [edi],xmm6 + vmovdqu XMMWORD PTR 64[edi],xmm7 + lea edi,QWORD PTR 16[edi] + vpaddd xmm0,xmm0,XMMWORD PTR [ebp] + vpaddd xmm1,xmm1,XMMWORD PTR 16[ebp] + vpaddd xmm2,xmm2,XMMWORD PTR 32[ebp] + vpaddd xmm3,xmm3,XMMWORD PTR 48[ebp] + vpunpckldq xmm6,xmm0,xmm1 + vpunpckldq xmm7,xmm2,xmm3 + vpunpckhdq xmm0,xmm0,xmm1 + vpunpckhdq xmm2,xmm2,xmm3 + vpunpcklqdq xmm1,xmm6,xmm7 + vpunpckhqdq xmm6,xmm6,xmm7 + vpunpcklqdq xmm7,xmm0,xmm2 + vpunpckhqdq xmm3,xmm0,xmm2 + vpxor xmm4,xmm1,XMMWORD PTR [esi-128] + vpxor xmm5,xmm6,XMMWORD PTR [esi-64] + vpxor xmm6,xmm7,XMMWORD PTR [esi] + vpxor xmm7,xmm3,XMMWORD PTR 64[esi] + lea esi,QWORD PTR 16[esi] + vmovdqa xmm0,XMMWORD PTR 64[ebx] + vmovdqa xmm1,XMMWORD PTR 80[ebx] + vmovdqa xmm2,XMMWORD PTR 96[ebx] + vmovdqa xmm3,XMMWORD PTR 112[ebx] + vmovdqu XMMWORD PTR [edi-128],xmm4 + vmovdqu XMMWORD PTR [edi-64],xmm5 + vmovdqu XMMWORD PTR [edi],xmm6 + vmovdqu XMMWORD PTR 64[edi],xmm7 + lea edi,QWORD PTR 16[edi] + vpaddd xmm0,xmm0,XMMWORD PTR 64[ebp] + vpaddd xmm1,xmm1,XMMWORD PTR 80[ebp] + vpaddd xmm2,xmm2,XMMWORD PTR 96[ebp] + vpaddd xmm3,xmm3,XMMWORD PTR 112[ebp] + vpunpckldq xmm6,xmm0,xmm1 + vpunpckldq xmm7,xmm2,xmm3 + vpunpckhdq xmm0,xmm0,xmm1 + vpunpckhdq xmm2,xmm2,xmm3 + vpunpcklqdq xmm1,xmm6,xmm7 + vpunpckhqdq xmm6,xmm6,xmm7 + vpunpcklqdq xmm7,xmm0,xmm2 + vpunpckhqdq xmm3,xmm0,xmm2 + vpxor xmm4,xmm1,XMMWORD PTR [esi-128] + vpxor xmm5,xmm6,XMMWORD PTR [esi-64] + vpxor xmm6,xmm7,XMMWORD PTR [esi] + vpxor xmm7,xmm3,XMMWORD PTR 64[esi] + lea esi,QWORD PTR 208[esi] + vmovdqu XMMWORD PTR [edi-128],xmm4 + vmovdqu XMMWORD PTR [edi-64],xmm5 + vmovdqu XMMWORD PTR [edi],xmm6 + vmovdqu XMMWORD PTR 64[edi],xmm7 + lea edi,QWORD PTR 208[edi] + sub ecx,256 + jnc $L015outer_loop + add ecx,256 + jz $L017done + mov ebx,DWORD PTR 520[esp] + lea esi,DWORD PTR [esi-128] + mov edx,DWORD PTR 516[esp] + lea edi,DWORD PTR [edi-128] + vmovd xmm2,DWORD PTR 64[ebp] + vmovdqu xmm3,XMMWORD PTR [ebx] + vpaddd xmm2,xmm2,XMMWORD PTR 96[eax] + vpand xmm3,xmm3,XMMWORD PTR 112[eax] + vpor xmm3,xmm3,xmm2 +$L0141x: + vmovdqa xmm0,XMMWORD PTR 32[eax] + vmovdqu xmm1,XMMWORD PTR [edx] + vmovdqu xmm2,XMMWORD PTR 16[edx] + vmovdqa xmm6,XMMWORD PTR [eax] + vmovdqa xmm7,XMMWORD PTR 16[eax] + mov DWORD PTR 48[esp],ebp + vmovdqa XMMWORD PTR [esp],xmm0 + vmovdqa XMMWORD PTR 16[esp],xmm1 + vmovdqa XMMWORD PTR 32[esp],xmm2 + vmovdqa XMMWORD PTR 48[esp],xmm3 + mov edx,10 + jmp $L018loop1x +ALIGN 16 +$L019outer1x: + vmovdqa xmm3,XMMWORD PTR 80[eax] + vmovdqa xmm0,XMMWORD PTR [esp] + vmovdqa xmm1,XMMWORD PTR 16[esp] + vmovdqa xmm2,XMMWORD PTR 32[esp] + vpaddd xmm3,xmm3,XMMWORD PTR 48[esp] + mov edx,10 + vmovdqa XMMWORD PTR 48[esp],xmm3 + jmp $L018loop1x +ALIGN 16 +$L018loop1x: + vpaddd xmm0,xmm0,xmm1 + vpxor xmm3,xmm3,xmm0 +DB 143,232,120,194,219,16 + vpaddd xmm2,xmm2,xmm3 + vpxor xmm1,xmm1,xmm2 +DB 143,232,120,194,201,12 + vpaddd xmm0,xmm0,xmm1 + vpxor xmm3,xmm3,xmm0 +DB 143,232,120,194,219,8 + vpaddd xmm2,xmm2,xmm3 + vpxor xmm1,xmm1,xmm2 +DB 143,232,120,194,201,7 + vpshufd xmm2,xmm2,78 + vpshufd xmm1,xmm1,57 + vpshufd xmm3,xmm3,147 + vpaddd xmm0,xmm0,xmm1 + vpxor xmm3,xmm3,xmm0 +DB 143,232,120,194,219,16 + vpaddd xmm2,xmm2,xmm3 + vpxor xmm1,xmm1,xmm2 +DB 143,232,120,194,201,12 + vpaddd xmm0,xmm0,xmm1 + vpxor xmm3,xmm3,xmm0 +DB 143,232,120,194,219,8 + vpaddd xmm2,xmm2,xmm3 + vpxor xmm1,xmm1,xmm2 +DB 143,232,120,194,201,7 + vpshufd xmm2,xmm2,78 + vpshufd xmm1,xmm1,147 + vpshufd xmm3,xmm3,57 + dec edx + jnz $L018loop1x + vpaddd xmm0,xmm0,XMMWORD PTR [esp] + vpaddd xmm1,xmm1,XMMWORD PTR 16[esp] + vpaddd xmm2,xmm2,XMMWORD PTR 32[esp] + vpaddd xmm3,xmm3,XMMWORD PTR 48[esp] + cmp ecx,64 + jb $L020tail + vpxor xmm0,xmm0,XMMWORD PTR [esi] + vpxor xmm1,xmm1,XMMWORD PTR 16[esi] + vpxor xmm2,xmm2,XMMWORD PTR 32[esi] + vpxor xmm3,xmm3,XMMWORD PTR 48[esi] + lea esi,DWORD PTR 64[esi] + vmovdqu XMMWORD PTR [edi],xmm0 + vmovdqu XMMWORD PTR 16[edi],xmm1 + vmovdqu XMMWORD PTR 32[edi],xmm2 + vmovdqu XMMWORD PTR 48[edi],xmm3 + lea edi,DWORD PTR 64[edi] + sub ecx,64 + jnz $L019outer1x + jmp $L017done +$L020tail: + vmovdqa XMMWORD PTR [esp],xmm0 + vmovdqa XMMWORD PTR 16[esp],xmm1 + vmovdqa XMMWORD PTR 32[esp],xmm2 + vmovdqa XMMWORD PTR 48[esp],xmm3 + xor eax,eax + xor edx,edx + xor ebp,ebp +$L021tail_loop: + mov al,BYTE PTR [ebp*1+esp] + mov dl,BYTE PTR [ebp*1+esi] + lea ebp,DWORD PTR 1[ebp] + xor al,dl + mov BYTE PTR [ebp*1+edi-1],al + dec ecx + jnz $L021tail_loop +$L017done: + vzeroupper + mov esp,DWORD PTR 512[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +_ChaCha20_xop ENDP +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/md5/md5-586.masm b/contrib/libs/openssl/asm/windows/crypto/md5/md5-586.masm index f04a1f5a75..f6257caf4f 100644 --- a/contrib/libs/openssl/asm/windows/crypto/md5/md5-586.masm +++ b/contrib/libs/openssl/asm/windows/crypto/md5/md5-586.masm @@ -1,688 +1,688 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -ALIGN 16 -_md5_block_asm_data_order PROC PUBLIC -$L_md5_block_asm_data_order_begin:: - push esi - push edi - mov edi,DWORD PTR 12[esp] - mov esi,DWORD PTR 16[esp] - mov ecx,DWORD PTR 20[esp] - push ebp - shl ecx,6 - push ebx - add ecx,esi - sub ecx,64 - mov eax,DWORD PTR [edi] - push ecx - mov ebx,DWORD PTR 4[edi] - mov ecx,DWORD PTR 8[edi] - mov edx,DWORD PTR 12[edi] -$L000start: - ; - ; R0 section - mov edi,ecx - mov ebp,DWORD PTR [esi] - ; R0 0 - xor edi,edx - and edi,ebx - lea eax,DWORD PTR 3614090360[ebp*1+eax] - xor edi,edx - mov ebp,DWORD PTR 4[esi] - add eax,edi - rol eax,7 - mov edi,ebx - add eax,ebx - ; R0 1 - xor edi,ecx - and edi,eax - lea edx,DWORD PTR 3905402710[ebp*1+edx] - xor edi,ecx - mov ebp,DWORD PTR 8[esi] - add edx,edi - rol edx,12 - mov edi,eax - add edx,eax - ; R0 2 - xor edi,ebx - and edi,edx - lea ecx,DWORD PTR 606105819[ebp*1+ecx] - xor edi,ebx - mov ebp,DWORD PTR 12[esi] - add ecx,edi - rol ecx,17 - mov edi,edx - add ecx,edx - ; R0 3 - xor edi,eax - and edi,ecx - lea ebx,DWORD PTR 3250441966[ebp*1+ebx] - xor edi,eax - mov ebp,DWORD PTR 16[esi] - add ebx,edi - rol ebx,22 - mov edi,ecx - add ebx,ecx - ; R0 4 - xor edi,edx - and edi,ebx - lea eax,DWORD PTR 4118548399[ebp*1+eax] - xor edi,edx - mov ebp,DWORD PTR 20[esi] - add eax,edi - rol eax,7 - mov edi,ebx - add eax,ebx - ; R0 5 - xor edi,ecx - and edi,eax - lea edx,DWORD PTR 1200080426[ebp*1+edx] - xor edi,ecx - mov ebp,DWORD PTR 24[esi] - add edx,edi - rol edx,12 - mov edi,eax - add edx,eax - ; R0 6 - xor edi,ebx - and edi,edx - lea ecx,DWORD PTR 2821735955[ebp*1+ecx] - xor edi,ebx - mov ebp,DWORD PTR 28[esi] - add ecx,edi - rol ecx,17 - mov edi,edx - add ecx,edx - ; R0 7 - xor edi,eax - and edi,ecx - lea ebx,DWORD PTR 4249261313[ebp*1+ebx] - xor edi,eax - mov ebp,DWORD PTR 32[esi] - add ebx,edi - rol ebx,22 - mov edi,ecx - add ebx,ecx - ; R0 8 - xor edi,edx - and edi,ebx - lea eax,DWORD PTR 1770035416[ebp*1+eax] - xor edi,edx - mov ebp,DWORD PTR 36[esi] - add eax,edi - rol eax,7 - mov edi,ebx - add eax,ebx - ; R0 9 - xor edi,ecx - and edi,eax - lea edx,DWORD PTR 2336552879[ebp*1+edx] - xor edi,ecx - mov ebp,DWORD PTR 40[esi] - add edx,edi - rol edx,12 - mov edi,eax - add edx,eax - ; R0 10 - xor edi,ebx - and edi,edx - lea ecx,DWORD PTR 4294925233[ebp*1+ecx] - xor edi,ebx - mov ebp,DWORD PTR 44[esi] - add ecx,edi - rol ecx,17 - mov edi,edx - add ecx,edx - ; R0 11 - xor edi,eax - and edi,ecx - lea ebx,DWORD PTR 2304563134[ebp*1+ebx] - xor edi,eax - mov ebp,DWORD PTR 48[esi] - add ebx,edi - rol ebx,22 - mov edi,ecx - add ebx,ecx - ; R0 12 - xor edi,edx - and edi,ebx - lea eax,DWORD PTR 1804603682[ebp*1+eax] - xor edi,edx - mov ebp,DWORD PTR 52[esi] - add eax,edi - rol eax,7 - mov edi,ebx - add eax,ebx - ; R0 13 - xor edi,ecx - and edi,eax - lea edx,DWORD PTR 4254626195[ebp*1+edx] - xor edi,ecx - mov ebp,DWORD PTR 56[esi] - add edx,edi - rol edx,12 - mov edi,eax - add edx,eax - ; R0 14 - xor edi,ebx - and edi,edx - lea ecx,DWORD PTR 2792965006[ebp*1+ecx] - xor edi,ebx - mov ebp,DWORD PTR 60[esi] - add ecx,edi - rol ecx,17 - mov edi,edx - add ecx,edx - ; R0 15 - xor edi,eax - and edi,ecx - lea ebx,DWORD PTR 1236535329[ebp*1+ebx] - xor edi,eax - mov ebp,DWORD PTR 4[esi] - add ebx,edi - rol ebx,22 - mov edi,ecx - add ebx,ecx - ; - ; R1 section - ; R1 16 - xor edi,ebx - and edi,edx - lea eax,DWORD PTR 4129170786[ebp*1+eax] - xor edi,ecx - mov ebp,DWORD PTR 24[esi] - add eax,edi - mov edi,ebx - rol eax,5 - add eax,ebx - ; R1 17 - xor edi,eax - and edi,ecx - lea edx,DWORD PTR 3225465664[ebp*1+edx] - xor edi,ebx - mov ebp,DWORD PTR 44[esi] - add edx,edi - mov edi,eax - rol edx,9 - add edx,eax - ; R1 18 - xor edi,edx - and edi,ebx - lea ecx,DWORD PTR 643717713[ebp*1+ecx] - xor edi,eax - mov ebp,DWORD PTR [esi] - add ecx,edi - mov edi,edx - rol ecx,14 - add ecx,edx - ; R1 19 - xor edi,ecx - and edi,eax - lea ebx,DWORD PTR 3921069994[ebp*1+ebx] - xor edi,edx - mov ebp,DWORD PTR 20[esi] - add ebx,edi - mov edi,ecx - rol ebx,20 - add ebx,ecx - ; R1 20 - xor edi,ebx - and edi,edx - lea eax,DWORD PTR 3593408605[ebp*1+eax] - xor edi,ecx - mov ebp,DWORD PTR 40[esi] - add eax,edi - mov edi,ebx - rol eax,5 - add eax,ebx - ; R1 21 - xor edi,eax - and edi,ecx - lea edx,DWORD PTR 38016083[ebp*1+edx] - xor edi,ebx - mov ebp,DWORD PTR 60[esi] - add edx,edi - mov edi,eax - rol edx,9 - add edx,eax - ; R1 22 - xor edi,edx - and edi,ebx - lea ecx,DWORD PTR 3634488961[ebp*1+ecx] - xor edi,eax - mov ebp,DWORD PTR 16[esi] - add ecx,edi - mov edi,edx - rol ecx,14 - add ecx,edx - ; R1 23 - xor edi,ecx - and edi,eax - lea ebx,DWORD PTR 3889429448[ebp*1+ebx] - xor edi,edx - mov ebp,DWORD PTR 36[esi] - add ebx,edi - mov edi,ecx - rol ebx,20 - add ebx,ecx - ; R1 24 - xor edi,ebx - and edi,edx - lea eax,DWORD PTR 568446438[ebp*1+eax] - xor edi,ecx - mov ebp,DWORD PTR 56[esi] - add eax,edi - mov edi,ebx - rol eax,5 - add eax,ebx - ; R1 25 - xor edi,eax - and edi,ecx - lea edx,DWORD PTR 3275163606[ebp*1+edx] - xor edi,ebx - mov ebp,DWORD PTR 12[esi] - add edx,edi - mov edi,eax - rol edx,9 - add edx,eax - ; R1 26 - xor edi,edx - and edi,ebx - lea ecx,DWORD PTR 4107603335[ebp*1+ecx] - xor edi,eax - mov ebp,DWORD PTR 32[esi] - add ecx,edi - mov edi,edx - rol ecx,14 - add ecx,edx - ; R1 27 - xor edi,ecx - and edi,eax - lea ebx,DWORD PTR 1163531501[ebp*1+ebx] - xor edi,edx - mov ebp,DWORD PTR 52[esi] - add ebx,edi - mov edi,ecx - rol ebx,20 - add ebx,ecx - ; R1 28 - xor edi,ebx - and edi,edx - lea eax,DWORD PTR 2850285829[ebp*1+eax] - xor edi,ecx - mov ebp,DWORD PTR 8[esi] - add eax,edi - mov edi,ebx - rol eax,5 - add eax,ebx - ; R1 29 - xor edi,eax - and edi,ecx - lea edx,DWORD PTR 4243563512[ebp*1+edx] - xor edi,ebx - mov ebp,DWORD PTR 28[esi] - add edx,edi - mov edi,eax - rol edx,9 - add edx,eax - ; R1 30 - xor edi,edx - and edi,ebx - lea ecx,DWORD PTR 1735328473[ebp*1+ecx] - xor edi,eax - mov ebp,DWORD PTR 48[esi] - add ecx,edi - mov edi,edx - rol ecx,14 - add ecx,edx - ; R1 31 - xor edi,ecx - and edi,eax - lea ebx,DWORD PTR 2368359562[ebp*1+ebx] - xor edi,edx - mov ebp,DWORD PTR 20[esi] - add ebx,edi - mov edi,ecx - rol ebx,20 - add ebx,ecx - ; - ; R2 section - ; R2 32 - xor edi,edx - xor edi,ebx - lea eax,DWORD PTR 4294588738[ebp*1+eax] - add eax,edi - mov ebp,DWORD PTR 32[esi] - rol eax,4 - mov edi,ebx - ; R2 33 - add eax,ebx - xor edi,ecx - lea edx,DWORD PTR 2272392833[ebp*1+edx] - xor edi,eax - mov ebp,DWORD PTR 44[esi] - add edx,edi - mov edi,eax - rol edx,11 - add edx,eax - ; R2 34 - xor edi,ebx - xor edi,edx - lea ecx,DWORD PTR 1839030562[ebp*1+ecx] - add ecx,edi - mov ebp,DWORD PTR 56[esi] - rol ecx,16 - mov edi,edx - ; R2 35 - add ecx,edx - xor edi,eax - lea ebx,DWORD PTR 4259657740[ebp*1+ebx] - xor edi,ecx - mov ebp,DWORD PTR 4[esi] - add ebx,edi - mov edi,ecx - rol ebx,23 - add ebx,ecx - ; R2 36 - xor edi,edx - xor edi,ebx - lea eax,DWORD PTR 2763975236[ebp*1+eax] - add eax,edi - mov ebp,DWORD PTR 16[esi] - rol eax,4 - mov edi,ebx - ; R2 37 - add eax,ebx - xor edi,ecx - lea edx,DWORD PTR 1272893353[ebp*1+edx] - xor edi,eax - mov ebp,DWORD PTR 28[esi] - add edx,edi - mov edi,eax - rol edx,11 - add edx,eax - ; R2 38 - xor edi,ebx - xor edi,edx - lea ecx,DWORD PTR 4139469664[ebp*1+ecx] - add ecx,edi - mov ebp,DWORD PTR 40[esi] - rol ecx,16 - mov edi,edx - ; R2 39 - add ecx,edx - xor edi,eax - lea ebx,DWORD PTR 3200236656[ebp*1+ebx] - xor edi,ecx - mov ebp,DWORD PTR 52[esi] - add ebx,edi - mov edi,ecx - rol ebx,23 - add ebx,ecx - ; R2 40 - xor edi,edx - xor edi,ebx - lea eax,DWORD PTR 681279174[ebp*1+eax] - add eax,edi - mov ebp,DWORD PTR [esi] - rol eax,4 - mov edi,ebx - ; R2 41 - add eax,ebx - xor edi,ecx - lea edx,DWORD PTR 3936430074[ebp*1+edx] - xor edi,eax - mov ebp,DWORD PTR 12[esi] - add edx,edi - mov edi,eax - rol edx,11 - add edx,eax - ; R2 42 - xor edi,ebx - xor edi,edx - lea ecx,DWORD PTR 3572445317[ebp*1+ecx] - add ecx,edi - mov ebp,DWORD PTR 24[esi] - rol ecx,16 - mov edi,edx - ; R2 43 - add ecx,edx - xor edi,eax - lea ebx,DWORD PTR 76029189[ebp*1+ebx] - xor edi,ecx - mov ebp,DWORD PTR 36[esi] - add ebx,edi - mov edi,ecx - rol ebx,23 - add ebx,ecx - ; R2 44 - xor edi,edx - xor edi,ebx - lea eax,DWORD PTR 3654602809[ebp*1+eax] - add eax,edi - mov ebp,DWORD PTR 48[esi] - rol eax,4 - mov edi,ebx - ; R2 45 - add eax,ebx - xor edi,ecx - lea edx,DWORD PTR 3873151461[ebp*1+edx] - xor edi,eax - mov ebp,DWORD PTR 60[esi] - add edx,edi - mov edi,eax - rol edx,11 - add edx,eax - ; R2 46 - xor edi,ebx - xor edi,edx - lea ecx,DWORD PTR 530742520[ebp*1+ecx] - add ecx,edi - mov ebp,DWORD PTR 8[esi] - rol ecx,16 - mov edi,edx - ; R2 47 - add ecx,edx - xor edi,eax - lea ebx,DWORD PTR 3299628645[ebp*1+ebx] - xor edi,ecx - mov ebp,DWORD PTR [esi] - add ebx,edi - mov edi,-1 - rol ebx,23 - add ebx,ecx - ; - ; R3 section - ; R3 48 - xor edi,edx - or edi,ebx - lea eax,DWORD PTR 4096336452[ebp*1+eax] - xor edi,ecx - mov ebp,DWORD PTR 28[esi] - add eax,edi - mov edi,-1 - rol eax,6 - xor edi,ecx - add eax,ebx - ; R3 49 - or edi,eax - lea edx,DWORD PTR 1126891415[ebp*1+edx] - xor edi,ebx - mov ebp,DWORD PTR 56[esi] - add edx,edi - mov edi,-1 - rol edx,10 - xor edi,ebx - add edx,eax - ; R3 50 - or edi,edx - lea ecx,DWORD PTR 2878612391[ebp*1+ecx] - xor edi,eax - mov ebp,DWORD PTR 20[esi] - add ecx,edi - mov edi,-1 - rol ecx,15 - xor edi,eax - add ecx,edx - ; R3 51 - or edi,ecx - lea ebx,DWORD PTR 4237533241[ebp*1+ebx] - xor edi,edx - mov ebp,DWORD PTR 48[esi] - add ebx,edi - mov edi,-1 - rol ebx,21 - xor edi,edx - add ebx,ecx - ; R3 52 - or edi,ebx - lea eax,DWORD PTR 1700485571[ebp*1+eax] - xor edi,ecx - mov ebp,DWORD PTR 12[esi] - add eax,edi - mov edi,-1 - rol eax,6 - xor edi,ecx - add eax,ebx - ; R3 53 - or edi,eax - lea edx,DWORD PTR 2399980690[ebp*1+edx] - xor edi,ebx - mov ebp,DWORD PTR 40[esi] - add edx,edi - mov edi,-1 - rol edx,10 - xor edi,ebx - add edx,eax - ; R3 54 - or edi,edx - lea ecx,DWORD PTR 4293915773[ebp*1+ecx] - xor edi,eax - mov ebp,DWORD PTR 4[esi] - add ecx,edi - mov edi,-1 - rol ecx,15 - xor edi,eax - add ecx,edx - ; R3 55 - or edi,ecx - lea ebx,DWORD PTR 2240044497[ebp*1+ebx] - xor edi,edx - mov ebp,DWORD PTR 32[esi] - add ebx,edi - mov edi,-1 - rol ebx,21 - xor edi,edx - add ebx,ecx - ; R3 56 - or edi,ebx - lea eax,DWORD PTR 1873313359[ebp*1+eax] - xor edi,ecx - mov ebp,DWORD PTR 60[esi] - add eax,edi - mov edi,-1 - rol eax,6 - xor edi,ecx - add eax,ebx - ; R3 57 - or edi,eax - lea edx,DWORD PTR 4264355552[ebp*1+edx] - xor edi,ebx - mov ebp,DWORD PTR 24[esi] - add edx,edi - mov edi,-1 - rol edx,10 - xor edi,ebx - add edx,eax - ; R3 58 - or edi,edx - lea ecx,DWORD PTR 2734768916[ebp*1+ecx] - xor edi,eax - mov ebp,DWORD PTR 52[esi] - add ecx,edi - mov edi,-1 - rol ecx,15 - xor edi,eax - add ecx,edx - ; R3 59 - or edi,ecx - lea ebx,DWORD PTR 1309151649[ebp*1+ebx] - xor edi,edx - mov ebp,DWORD PTR 16[esi] - add ebx,edi - mov edi,-1 - rol ebx,21 - xor edi,edx - add ebx,ecx - ; R3 60 - or edi,ebx - lea eax,DWORD PTR 4149444226[ebp*1+eax] - xor edi,ecx - mov ebp,DWORD PTR 44[esi] - add eax,edi - mov edi,-1 - rol eax,6 - xor edi,ecx - add eax,ebx - ; R3 61 - or edi,eax - lea edx,DWORD PTR 3174756917[ebp*1+edx] - xor edi,ebx - mov ebp,DWORD PTR 8[esi] - add edx,edi - mov edi,-1 - rol edx,10 - xor edi,ebx - add edx,eax - ; R3 62 - or edi,edx - lea ecx,DWORD PTR 718787259[ebp*1+ecx] - xor edi,eax - mov ebp,DWORD PTR 36[esi] - add ecx,edi - mov edi,-1 - rol ecx,15 - xor edi,eax - add ecx,edx - ; R3 63 - or edi,ecx - lea ebx,DWORD PTR 3951481745[ebp*1+ebx] - xor edi,edx - mov ebp,DWORD PTR 24[esp] - add ebx,edi - add esi,64 - rol ebx,21 - mov edi,DWORD PTR [ebp] - add ebx,ecx - add eax,edi - mov edi,DWORD PTR 4[ebp] - add ebx,edi - mov edi,DWORD PTR 8[ebp] - add ecx,edi - mov edi,DWORD PTR 12[ebp] - add edx,edi - mov DWORD PTR [ebp],eax - mov DWORD PTR 4[ebp],ebx - mov edi,DWORD PTR [esp] - mov DWORD PTR 8[ebp],ecx - mov DWORD PTR 12[ebp],edx - cmp edi,esi - jae $L000start - pop eax - pop ebx - pop ebp - pop edi - pop esi - ret -_md5_block_asm_data_order ENDP -.text$ ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +ALIGN 16 +_md5_block_asm_data_order PROC PUBLIC +$L_md5_block_asm_data_order_begin:: + push esi + push edi + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + push ebp + shl ecx,6 + push ebx + add ecx,esi + sub ecx,64 + mov eax,DWORD PTR [edi] + push ecx + mov ebx,DWORD PTR 4[edi] + mov ecx,DWORD PTR 8[edi] + mov edx,DWORD PTR 12[edi] +$L000start: + ; + ; R0 section + mov edi,ecx + mov ebp,DWORD PTR [esi] + ; R0 0 + xor edi,edx + and edi,ebx + lea eax,DWORD PTR 3614090360[ebp*1+eax] + xor edi,edx + mov ebp,DWORD PTR 4[esi] + add eax,edi + rol eax,7 + mov edi,ebx + add eax,ebx + ; R0 1 + xor edi,ecx + and edi,eax + lea edx,DWORD PTR 3905402710[ebp*1+edx] + xor edi,ecx + mov ebp,DWORD PTR 8[esi] + add edx,edi + rol edx,12 + mov edi,eax + add edx,eax + ; R0 2 + xor edi,ebx + and edi,edx + lea ecx,DWORD PTR 606105819[ebp*1+ecx] + xor edi,ebx + mov ebp,DWORD PTR 12[esi] + add ecx,edi + rol ecx,17 + mov edi,edx + add ecx,edx + ; R0 3 + xor edi,eax + and edi,ecx + lea ebx,DWORD PTR 3250441966[ebp*1+ebx] + xor edi,eax + mov ebp,DWORD PTR 16[esi] + add ebx,edi + rol ebx,22 + mov edi,ecx + add ebx,ecx + ; R0 4 + xor edi,edx + and edi,ebx + lea eax,DWORD PTR 4118548399[ebp*1+eax] + xor edi,edx + mov ebp,DWORD PTR 20[esi] + add eax,edi + rol eax,7 + mov edi,ebx + add eax,ebx + ; R0 5 + xor edi,ecx + and edi,eax + lea edx,DWORD PTR 1200080426[ebp*1+edx] + xor edi,ecx + mov ebp,DWORD PTR 24[esi] + add edx,edi + rol edx,12 + mov edi,eax + add edx,eax + ; R0 6 + xor edi,ebx + and edi,edx + lea ecx,DWORD PTR 2821735955[ebp*1+ecx] + xor edi,ebx + mov ebp,DWORD PTR 28[esi] + add ecx,edi + rol ecx,17 + mov edi,edx + add ecx,edx + ; R0 7 + xor edi,eax + and edi,ecx + lea ebx,DWORD PTR 4249261313[ebp*1+ebx] + xor edi,eax + mov ebp,DWORD PTR 32[esi] + add ebx,edi + rol ebx,22 + mov edi,ecx + add ebx,ecx + ; R0 8 + xor edi,edx + and edi,ebx + lea eax,DWORD PTR 1770035416[ebp*1+eax] + xor edi,edx + mov ebp,DWORD PTR 36[esi] + add eax,edi + rol eax,7 + mov edi,ebx + add eax,ebx + ; R0 9 + xor edi,ecx + and edi,eax + lea edx,DWORD PTR 2336552879[ebp*1+edx] + xor edi,ecx + mov ebp,DWORD PTR 40[esi] + add edx,edi + rol edx,12 + mov edi,eax + add edx,eax + ; R0 10 + xor edi,ebx + and edi,edx + lea ecx,DWORD PTR 4294925233[ebp*1+ecx] + xor edi,ebx + mov ebp,DWORD PTR 44[esi] + add ecx,edi + rol ecx,17 + mov edi,edx + add ecx,edx + ; R0 11 + xor edi,eax + and edi,ecx + lea ebx,DWORD PTR 2304563134[ebp*1+ebx] + xor edi,eax + mov ebp,DWORD PTR 48[esi] + add ebx,edi + rol ebx,22 + mov edi,ecx + add ebx,ecx + ; R0 12 + xor edi,edx + and edi,ebx + lea eax,DWORD PTR 1804603682[ebp*1+eax] + xor edi,edx + mov ebp,DWORD PTR 52[esi] + add eax,edi + rol eax,7 + mov edi,ebx + add eax,ebx + ; R0 13 + xor edi,ecx + and edi,eax + lea edx,DWORD PTR 4254626195[ebp*1+edx] + xor edi,ecx + mov ebp,DWORD PTR 56[esi] + add edx,edi + rol edx,12 + mov edi,eax + add edx,eax + ; R0 14 + xor edi,ebx + and edi,edx + lea ecx,DWORD PTR 2792965006[ebp*1+ecx] + xor edi,ebx + mov ebp,DWORD PTR 60[esi] + add ecx,edi + rol ecx,17 + mov edi,edx + add ecx,edx + ; R0 15 + xor edi,eax + and edi,ecx + lea ebx,DWORD PTR 1236535329[ebp*1+ebx] + xor edi,eax + mov ebp,DWORD PTR 4[esi] + add ebx,edi + rol ebx,22 + mov edi,ecx + add ebx,ecx + ; + ; R1 section + ; R1 16 + xor edi,ebx + and edi,edx + lea eax,DWORD PTR 4129170786[ebp*1+eax] + xor edi,ecx + mov ebp,DWORD PTR 24[esi] + add eax,edi + mov edi,ebx + rol eax,5 + add eax,ebx + ; R1 17 + xor edi,eax + and edi,ecx + lea edx,DWORD PTR 3225465664[ebp*1+edx] + xor edi,ebx + mov ebp,DWORD PTR 44[esi] + add edx,edi + mov edi,eax + rol edx,9 + add edx,eax + ; R1 18 + xor edi,edx + and edi,ebx + lea ecx,DWORD PTR 643717713[ebp*1+ecx] + xor edi,eax + mov ebp,DWORD PTR [esi] + add ecx,edi + mov edi,edx + rol ecx,14 + add ecx,edx + ; R1 19 + xor edi,ecx + and edi,eax + lea ebx,DWORD PTR 3921069994[ebp*1+ebx] + xor edi,edx + mov ebp,DWORD PTR 20[esi] + add ebx,edi + mov edi,ecx + rol ebx,20 + add ebx,ecx + ; R1 20 + xor edi,ebx + and edi,edx + lea eax,DWORD PTR 3593408605[ebp*1+eax] + xor edi,ecx + mov ebp,DWORD PTR 40[esi] + add eax,edi + mov edi,ebx + rol eax,5 + add eax,ebx + ; R1 21 + xor edi,eax + and edi,ecx + lea edx,DWORD PTR 38016083[ebp*1+edx] + xor edi,ebx + mov ebp,DWORD PTR 60[esi] + add edx,edi + mov edi,eax + rol edx,9 + add edx,eax + ; R1 22 + xor edi,edx + and edi,ebx + lea ecx,DWORD PTR 3634488961[ebp*1+ecx] + xor edi,eax + mov ebp,DWORD PTR 16[esi] + add ecx,edi + mov edi,edx + rol ecx,14 + add ecx,edx + ; R1 23 + xor edi,ecx + and edi,eax + lea ebx,DWORD PTR 3889429448[ebp*1+ebx] + xor edi,edx + mov ebp,DWORD PTR 36[esi] + add ebx,edi + mov edi,ecx + rol ebx,20 + add ebx,ecx + ; R1 24 + xor edi,ebx + and edi,edx + lea eax,DWORD PTR 568446438[ebp*1+eax] + xor edi,ecx + mov ebp,DWORD PTR 56[esi] + add eax,edi + mov edi,ebx + rol eax,5 + add eax,ebx + ; R1 25 + xor edi,eax + and edi,ecx + lea edx,DWORD PTR 3275163606[ebp*1+edx] + xor edi,ebx + mov ebp,DWORD PTR 12[esi] + add edx,edi + mov edi,eax + rol edx,9 + add edx,eax + ; R1 26 + xor edi,edx + and edi,ebx + lea ecx,DWORD PTR 4107603335[ebp*1+ecx] + xor edi,eax + mov ebp,DWORD PTR 32[esi] + add ecx,edi + mov edi,edx + rol ecx,14 + add ecx,edx + ; R1 27 + xor edi,ecx + and edi,eax + lea ebx,DWORD PTR 1163531501[ebp*1+ebx] + xor edi,edx + mov ebp,DWORD PTR 52[esi] + add ebx,edi + mov edi,ecx + rol ebx,20 + add ebx,ecx + ; R1 28 + xor edi,ebx + and edi,edx + lea eax,DWORD PTR 2850285829[ebp*1+eax] + xor edi,ecx + mov ebp,DWORD PTR 8[esi] + add eax,edi + mov edi,ebx + rol eax,5 + add eax,ebx + ; R1 29 + xor edi,eax + and edi,ecx + lea edx,DWORD PTR 4243563512[ebp*1+edx] + xor edi,ebx + mov ebp,DWORD PTR 28[esi] + add edx,edi + mov edi,eax + rol edx,9 + add edx,eax + ; R1 30 + xor edi,edx + and edi,ebx + lea ecx,DWORD PTR 1735328473[ebp*1+ecx] + xor edi,eax + mov ebp,DWORD PTR 48[esi] + add ecx,edi + mov edi,edx + rol ecx,14 + add ecx,edx + ; R1 31 + xor edi,ecx + and edi,eax + lea ebx,DWORD PTR 2368359562[ebp*1+ebx] + xor edi,edx + mov ebp,DWORD PTR 20[esi] + add ebx,edi + mov edi,ecx + rol ebx,20 + add ebx,ecx + ; + ; R2 section + ; R2 32 + xor edi,edx + xor edi,ebx + lea eax,DWORD PTR 4294588738[ebp*1+eax] + add eax,edi + mov ebp,DWORD PTR 32[esi] + rol eax,4 + mov edi,ebx + ; R2 33 + add eax,ebx + xor edi,ecx + lea edx,DWORD PTR 2272392833[ebp*1+edx] + xor edi,eax + mov ebp,DWORD PTR 44[esi] + add edx,edi + mov edi,eax + rol edx,11 + add edx,eax + ; R2 34 + xor edi,ebx + xor edi,edx + lea ecx,DWORD PTR 1839030562[ebp*1+ecx] + add ecx,edi + mov ebp,DWORD PTR 56[esi] + rol ecx,16 + mov edi,edx + ; R2 35 + add ecx,edx + xor edi,eax + lea ebx,DWORD PTR 4259657740[ebp*1+ebx] + xor edi,ecx + mov ebp,DWORD PTR 4[esi] + add ebx,edi + mov edi,ecx + rol ebx,23 + add ebx,ecx + ; R2 36 + xor edi,edx + xor edi,ebx + lea eax,DWORD PTR 2763975236[ebp*1+eax] + add eax,edi + mov ebp,DWORD PTR 16[esi] + rol eax,4 + mov edi,ebx + ; R2 37 + add eax,ebx + xor edi,ecx + lea edx,DWORD PTR 1272893353[ebp*1+edx] + xor edi,eax + mov ebp,DWORD PTR 28[esi] + add edx,edi + mov edi,eax + rol edx,11 + add edx,eax + ; R2 38 + xor edi,ebx + xor edi,edx + lea ecx,DWORD PTR 4139469664[ebp*1+ecx] + add ecx,edi + mov ebp,DWORD PTR 40[esi] + rol ecx,16 + mov edi,edx + ; R2 39 + add ecx,edx + xor edi,eax + lea ebx,DWORD PTR 3200236656[ebp*1+ebx] + xor edi,ecx + mov ebp,DWORD PTR 52[esi] + add ebx,edi + mov edi,ecx + rol ebx,23 + add ebx,ecx + ; R2 40 + xor edi,edx + xor edi,ebx + lea eax,DWORD PTR 681279174[ebp*1+eax] + add eax,edi + mov ebp,DWORD PTR [esi] + rol eax,4 + mov edi,ebx + ; R2 41 + add eax,ebx + xor edi,ecx + lea edx,DWORD PTR 3936430074[ebp*1+edx] + xor edi,eax + mov ebp,DWORD PTR 12[esi] + add edx,edi + mov edi,eax + rol edx,11 + add edx,eax + ; R2 42 + xor edi,ebx + xor edi,edx + lea ecx,DWORD PTR 3572445317[ebp*1+ecx] + add ecx,edi + mov ebp,DWORD PTR 24[esi] + rol ecx,16 + mov edi,edx + ; R2 43 + add ecx,edx + xor edi,eax + lea ebx,DWORD PTR 76029189[ebp*1+ebx] + xor edi,ecx + mov ebp,DWORD PTR 36[esi] + add ebx,edi + mov edi,ecx + rol ebx,23 + add ebx,ecx + ; R2 44 + xor edi,edx + xor edi,ebx + lea eax,DWORD PTR 3654602809[ebp*1+eax] + add eax,edi + mov ebp,DWORD PTR 48[esi] + rol eax,4 + mov edi,ebx + ; R2 45 + add eax,ebx + xor edi,ecx + lea edx,DWORD PTR 3873151461[ebp*1+edx] + xor edi,eax + mov ebp,DWORD PTR 60[esi] + add edx,edi + mov edi,eax + rol edx,11 + add edx,eax + ; R2 46 + xor edi,ebx + xor edi,edx + lea ecx,DWORD PTR 530742520[ebp*1+ecx] + add ecx,edi + mov ebp,DWORD PTR 8[esi] + rol ecx,16 + mov edi,edx + ; R2 47 + add ecx,edx + xor edi,eax + lea ebx,DWORD PTR 3299628645[ebp*1+ebx] + xor edi,ecx + mov ebp,DWORD PTR [esi] + add ebx,edi + mov edi,-1 + rol ebx,23 + add ebx,ecx + ; + ; R3 section + ; R3 48 + xor edi,edx + or edi,ebx + lea eax,DWORD PTR 4096336452[ebp*1+eax] + xor edi,ecx + mov ebp,DWORD PTR 28[esi] + add eax,edi + mov edi,-1 + rol eax,6 + xor edi,ecx + add eax,ebx + ; R3 49 + or edi,eax + lea edx,DWORD PTR 1126891415[ebp*1+edx] + xor edi,ebx + mov ebp,DWORD PTR 56[esi] + add edx,edi + mov edi,-1 + rol edx,10 + xor edi,ebx + add edx,eax + ; R3 50 + or edi,edx + lea ecx,DWORD PTR 2878612391[ebp*1+ecx] + xor edi,eax + mov ebp,DWORD PTR 20[esi] + add ecx,edi + mov edi,-1 + rol ecx,15 + xor edi,eax + add ecx,edx + ; R3 51 + or edi,ecx + lea ebx,DWORD PTR 4237533241[ebp*1+ebx] + xor edi,edx + mov ebp,DWORD PTR 48[esi] + add ebx,edi + mov edi,-1 + rol ebx,21 + xor edi,edx + add ebx,ecx + ; R3 52 + or edi,ebx + lea eax,DWORD PTR 1700485571[ebp*1+eax] + xor edi,ecx + mov ebp,DWORD PTR 12[esi] + add eax,edi + mov edi,-1 + rol eax,6 + xor edi,ecx + add eax,ebx + ; R3 53 + or edi,eax + lea edx,DWORD PTR 2399980690[ebp*1+edx] + xor edi,ebx + mov ebp,DWORD PTR 40[esi] + add edx,edi + mov edi,-1 + rol edx,10 + xor edi,ebx + add edx,eax + ; R3 54 + or edi,edx + lea ecx,DWORD PTR 4293915773[ebp*1+ecx] + xor edi,eax + mov ebp,DWORD PTR 4[esi] + add ecx,edi + mov edi,-1 + rol ecx,15 + xor edi,eax + add ecx,edx + ; R3 55 + or edi,ecx + lea ebx,DWORD PTR 2240044497[ebp*1+ebx] + xor edi,edx + mov ebp,DWORD PTR 32[esi] + add ebx,edi + mov edi,-1 + rol ebx,21 + xor edi,edx + add ebx,ecx + ; R3 56 + or edi,ebx + lea eax,DWORD PTR 1873313359[ebp*1+eax] + xor edi,ecx + mov ebp,DWORD PTR 60[esi] + add eax,edi + mov edi,-1 + rol eax,6 + xor edi,ecx + add eax,ebx + ; R3 57 + or edi,eax + lea edx,DWORD PTR 4264355552[ebp*1+edx] + xor edi,ebx + mov ebp,DWORD PTR 24[esi] + add edx,edi + mov edi,-1 + rol edx,10 + xor edi,ebx + add edx,eax + ; R3 58 + or edi,edx + lea ecx,DWORD PTR 2734768916[ebp*1+ecx] + xor edi,eax + mov ebp,DWORD PTR 52[esi] + add ecx,edi + mov edi,-1 + rol ecx,15 + xor edi,eax + add ecx,edx + ; R3 59 + or edi,ecx + lea ebx,DWORD PTR 1309151649[ebp*1+ebx] + xor edi,edx + mov ebp,DWORD PTR 16[esi] + add ebx,edi + mov edi,-1 + rol ebx,21 + xor edi,edx + add ebx,ecx + ; R3 60 + or edi,ebx + lea eax,DWORD PTR 4149444226[ebp*1+eax] + xor edi,ecx + mov ebp,DWORD PTR 44[esi] + add eax,edi + mov edi,-1 + rol eax,6 + xor edi,ecx + add eax,ebx + ; R3 61 + or edi,eax + lea edx,DWORD PTR 3174756917[ebp*1+edx] + xor edi,ebx + mov ebp,DWORD PTR 8[esi] + add edx,edi + mov edi,-1 + rol edx,10 + xor edi,ebx + add edx,eax + ; R3 62 + or edi,edx + lea ecx,DWORD PTR 718787259[ebp*1+ecx] + xor edi,eax + mov ebp,DWORD PTR 36[esi] + add ecx,edi + mov edi,-1 + rol ecx,15 + xor edi,eax + add ecx,edx + ; R3 63 + or edi,ecx + lea ebx,DWORD PTR 3951481745[ebp*1+ebx] + xor edi,edx + mov ebp,DWORD PTR 24[esp] + add ebx,edi + add esi,64 + rol ebx,21 + mov edi,DWORD PTR [ebp] + add ebx,ecx + add eax,edi + mov edi,DWORD PTR 4[ebp] + add ebx,edi + mov edi,DWORD PTR 8[ebp] + add ecx,edi + mov edi,DWORD PTR 12[ebp] + add edx,edi + mov DWORD PTR [ebp],eax + mov DWORD PTR 4[ebp],ebx + mov edi,DWORD PTR [esp] + mov DWORD PTR 8[ebp],ecx + mov DWORD PTR 12[ebp],edx + cmp edi,esi + jae $L000start + pop eax + pop ebx + pop ebp + pop edi + pop esi + ret +_md5_block_asm_data_order ENDP +.text$ ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/modes/ghash-x86.masm b/contrib/libs/openssl/asm/windows/crypto/modes/ghash-x86.masm index a92ca04f61..df1cc8f148 100644 --- a/contrib/libs/openssl/asm/windows/crypto/modes/ghash-x86.masm +++ b/contrib/libs/openssl/asm/windows/crypto/modes/ghash-x86.masm @@ -1,1273 +1,1273 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -ALIGN 16 -_gcm_gmult_4bit_x86 PROC PUBLIC -$L_gcm_gmult_4bit_x86_begin:: - push ebp - push ebx - push esi - push edi - sub esp,84 - mov edi,DWORD PTR 104[esp] - mov esi,DWORD PTR 108[esp] - mov ebp,DWORD PTR [edi] - mov edx,DWORD PTR 4[edi] - mov ecx,DWORD PTR 8[edi] - mov ebx,DWORD PTR 12[edi] - mov DWORD PTR 16[esp],0 - mov DWORD PTR 20[esp],471859200 - mov DWORD PTR 24[esp],943718400 - mov DWORD PTR 28[esp],610271232 - mov DWORD PTR 32[esp],1887436800 - mov DWORD PTR 36[esp],1822425088 - mov DWORD PTR 40[esp],1220542464 - mov DWORD PTR 44[esp],1423966208 - mov DWORD PTR 48[esp],3774873600 - mov DWORD PTR 52[esp],4246732800 - mov DWORD PTR 56[esp],3644850176 - mov DWORD PTR 60[esp],3311403008 - mov DWORD PTR 64[esp],2441084928 - mov DWORD PTR 68[esp],2376073216 - mov DWORD PTR 72[esp],2847932416 - mov DWORD PTR 76[esp],3051356160 - mov DWORD PTR [esp],ebp - mov DWORD PTR 4[esp],edx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],ebx - shr ebx,20 - and ebx,240 - mov ebp,DWORD PTR 4[ebx*1+esi] - mov edx,DWORD PTR [ebx*1+esi] - mov ecx,DWORD PTR 12[ebx*1+esi] - mov ebx,DWORD PTR 8[ebx*1+esi] - xor eax,eax - mov edi,15 - jmp $L000x86_loop -ALIGN 16 -$L000x86_loop: - mov al,bl - shrd ebx,ecx,4 - and al,15 - shrd ecx,edx,4 - shrd edx,ebp,4 - shr ebp,4 - xor ebp,DWORD PTR 16[eax*4+esp] - mov al,BYTE PTR [edi*1+esp] - and al,240 - xor ebx,DWORD PTR 8[eax*1+esi] - xor ecx,DWORD PTR 12[eax*1+esi] - xor edx,DWORD PTR [eax*1+esi] - xor ebp,DWORD PTR 4[eax*1+esi] - dec edi - js $L001x86_break - mov al,bl - shrd ebx,ecx,4 - and al,15 - shrd ecx,edx,4 - shrd edx,ebp,4 - shr ebp,4 - xor ebp,DWORD PTR 16[eax*4+esp] - mov al,BYTE PTR [edi*1+esp] - shl al,4 - xor ebx,DWORD PTR 8[eax*1+esi] - xor ecx,DWORD PTR 12[eax*1+esi] - xor edx,DWORD PTR [eax*1+esi] - xor ebp,DWORD PTR 4[eax*1+esi] - jmp $L000x86_loop -ALIGN 16 -$L001x86_break: - bswap ebx - bswap ecx - bswap edx - bswap ebp - mov edi,DWORD PTR 104[esp] - mov DWORD PTR 12[edi],ebx - mov DWORD PTR 8[edi],ecx - mov DWORD PTR 4[edi],edx - mov DWORD PTR [edi],ebp - add esp,84 - pop edi - pop esi - pop ebx - pop ebp - ret -_gcm_gmult_4bit_x86 ENDP -ALIGN 16 -_gcm_ghash_4bit_x86 PROC PUBLIC -$L_gcm_ghash_4bit_x86_begin:: - push ebp - push ebx - push esi - push edi - sub esp,84 - mov ebx,DWORD PTR 104[esp] - mov esi,DWORD PTR 108[esp] - mov edi,DWORD PTR 112[esp] - mov ecx,DWORD PTR 116[esp] - add ecx,edi - mov DWORD PTR 116[esp],ecx - mov ebp,DWORD PTR [ebx] - mov edx,DWORD PTR 4[ebx] - mov ecx,DWORD PTR 8[ebx] - mov ebx,DWORD PTR 12[ebx] - mov DWORD PTR 16[esp],0 - mov DWORD PTR 20[esp],471859200 - mov DWORD PTR 24[esp],943718400 - mov DWORD PTR 28[esp],610271232 - mov DWORD PTR 32[esp],1887436800 - mov DWORD PTR 36[esp],1822425088 - mov DWORD PTR 40[esp],1220542464 - mov DWORD PTR 44[esp],1423966208 - mov DWORD PTR 48[esp],3774873600 - mov DWORD PTR 52[esp],4246732800 - mov DWORD PTR 56[esp],3644850176 - mov DWORD PTR 60[esp],3311403008 - mov DWORD PTR 64[esp],2441084928 - mov DWORD PTR 68[esp],2376073216 - mov DWORD PTR 72[esp],2847932416 - mov DWORD PTR 76[esp],3051356160 -ALIGN 16 -$L002x86_outer_loop: - xor ebx,DWORD PTR 12[edi] - xor ecx,DWORD PTR 8[edi] - xor edx,DWORD PTR 4[edi] - xor ebp,DWORD PTR [edi] - mov DWORD PTR 12[esp],ebx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 4[esp],edx - mov DWORD PTR [esp],ebp - shr ebx,20 - and ebx,240 - mov ebp,DWORD PTR 4[ebx*1+esi] - mov edx,DWORD PTR [ebx*1+esi] - mov ecx,DWORD PTR 12[ebx*1+esi] - mov ebx,DWORD PTR 8[ebx*1+esi] - xor eax,eax - mov edi,15 - jmp $L003x86_loop -ALIGN 16 -$L003x86_loop: - mov al,bl - shrd ebx,ecx,4 - and al,15 - shrd ecx,edx,4 - shrd edx,ebp,4 - shr ebp,4 - xor ebp,DWORD PTR 16[eax*4+esp] - mov al,BYTE PTR [edi*1+esp] - and al,240 - xor ebx,DWORD PTR 8[eax*1+esi] - xor ecx,DWORD PTR 12[eax*1+esi] - xor edx,DWORD PTR [eax*1+esi] - xor ebp,DWORD PTR 4[eax*1+esi] - dec edi - js $L004x86_break - mov al,bl - shrd ebx,ecx,4 - and al,15 - shrd ecx,edx,4 - shrd edx,ebp,4 - shr ebp,4 - xor ebp,DWORD PTR 16[eax*4+esp] - mov al,BYTE PTR [edi*1+esp] - shl al,4 - xor ebx,DWORD PTR 8[eax*1+esi] - xor ecx,DWORD PTR 12[eax*1+esi] - xor edx,DWORD PTR [eax*1+esi] - xor ebp,DWORD PTR 4[eax*1+esi] - jmp $L003x86_loop -ALIGN 16 -$L004x86_break: - bswap ebx - bswap ecx - bswap edx - bswap ebp - mov edi,DWORD PTR 112[esp] - lea edi,DWORD PTR 16[edi] - cmp edi,DWORD PTR 116[esp] - mov DWORD PTR 112[esp],edi - jb $L002x86_outer_loop - mov edi,DWORD PTR 104[esp] - mov DWORD PTR 12[edi],ebx - mov DWORD PTR 8[edi],ecx - mov DWORD PTR 4[edi],edx - mov DWORD PTR [edi],ebp - add esp,84 - pop edi - pop esi - pop ebx - pop ebp - ret -_gcm_ghash_4bit_x86 ENDP -ALIGN 16 -_gcm_gmult_4bit_mmx PROC PUBLIC -$L_gcm_gmult_4bit_mmx_begin:: - push ebp - push ebx - push esi - push edi - mov edi,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - call $L005pic_point -$L005pic_point: - pop eax - lea eax,DWORD PTR ($Lrem_4bit-$L005pic_point)[eax] - movzx ebx,BYTE PTR 15[edi] - xor ecx,ecx - mov edx,ebx - mov cl,dl - mov ebp,14 - shl cl,4 - and edx,240 - movq mm0,QWORD PTR 8[ecx*1+esi] - movq mm1,QWORD PTR [ecx*1+esi] - movd ebx,mm0 - jmp $L006mmx_loop -ALIGN 16 -$L006mmx_loop: - psrlq mm0,4 - and ebx,15 - movq mm2,mm1 - psrlq mm1,4 - pxor mm0,QWORD PTR 8[edx*1+esi] - mov cl,BYTE PTR [ebp*1+edi] - psllq mm2,60 - pxor mm1,QWORD PTR [ebx*8+eax] - dec ebp - movd ebx,mm0 - pxor mm1,QWORD PTR [edx*1+esi] - mov edx,ecx - pxor mm0,mm2 - js $L007mmx_break - shl cl,4 - and ebx,15 - psrlq mm0,4 - and edx,240 - movq mm2,mm1 - psrlq mm1,4 - pxor mm0,QWORD PTR 8[ecx*1+esi] - psllq mm2,60 - pxor mm1,QWORD PTR [ebx*8+eax] - movd ebx,mm0 - pxor mm1,QWORD PTR [ecx*1+esi] - pxor mm0,mm2 - jmp $L006mmx_loop -ALIGN 16 -$L007mmx_break: - shl cl,4 - and ebx,15 - psrlq mm0,4 - and edx,240 - movq mm2,mm1 - psrlq mm1,4 - pxor mm0,QWORD PTR 8[ecx*1+esi] - psllq mm2,60 - pxor mm1,QWORD PTR [ebx*8+eax] - movd ebx,mm0 - pxor mm1,QWORD PTR [ecx*1+esi] - pxor mm0,mm2 - psrlq mm0,4 - and ebx,15 - movq mm2,mm1 - psrlq mm1,4 - pxor mm0,QWORD PTR 8[edx*1+esi] - psllq mm2,60 - pxor mm1,QWORD PTR [ebx*8+eax] - movd ebx,mm0 - pxor mm1,QWORD PTR [edx*1+esi] - pxor mm0,mm2 - psrlq mm0,32 - movd edx,mm1 - psrlq mm1,32 - movd ecx,mm0 - movd ebp,mm1 - bswap ebx - bswap edx - bswap ecx - bswap ebp - emms - mov DWORD PTR 12[edi],ebx - mov DWORD PTR 4[edi],edx - mov DWORD PTR 8[edi],ecx - mov DWORD PTR [edi],ebp - pop edi - pop esi - pop ebx - pop ebp - ret -_gcm_gmult_4bit_mmx ENDP -ALIGN 16 -_gcm_ghash_4bit_mmx PROC PUBLIC -$L_gcm_ghash_4bit_mmx_begin:: - push ebp - push ebx - push esi - push edi - mov eax,DWORD PTR 20[esp] - mov ebx,DWORD PTR 24[esp] - mov ecx,DWORD PTR 28[esp] - mov edx,DWORD PTR 32[esp] - mov ebp,esp - call $L008pic_point -$L008pic_point: - pop esi - lea esi,DWORD PTR ($Lrem_8bit-$L008pic_point)[esi] - sub esp,544 - and esp,-64 - sub esp,16 - add edx,ecx - mov DWORD PTR 544[esp],eax - mov DWORD PTR 552[esp],edx - mov DWORD PTR 556[esp],ebp - add ebx,128 - lea edi,DWORD PTR 144[esp] - lea ebp,DWORD PTR 400[esp] - mov edx,DWORD PTR [ebx-120] - movq mm0,QWORD PTR [ebx-120] - movq mm3,QWORD PTR [ebx-128] - shl edx,4 - mov BYTE PTR [esp],dl - mov edx,DWORD PTR [ebx-104] - movq mm2,QWORD PTR [ebx-104] - movq mm5,QWORD PTR [ebx-112] - movq QWORD PTR [edi-128],mm0 - psrlq mm0,4 - movq QWORD PTR [edi],mm3 - movq mm7,mm3 - psrlq mm3,4 - shl edx,4 - mov BYTE PTR 1[esp],dl - mov edx,DWORD PTR [ebx-88] - movq mm1,QWORD PTR [ebx-88] - psllq mm7,60 - movq mm4,QWORD PTR [ebx-96] - por mm0,mm7 - movq QWORD PTR [edi-120],mm2 - psrlq mm2,4 - movq QWORD PTR 8[edi],mm5 - movq mm6,mm5 - movq QWORD PTR [ebp-128],mm0 - psrlq mm5,4 - movq QWORD PTR [ebp],mm3 - shl edx,4 - mov BYTE PTR 2[esp],dl - mov edx,DWORD PTR [ebx-72] - movq mm0,QWORD PTR [ebx-72] - psllq mm6,60 - movq mm3,QWORD PTR [ebx-80] - por mm2,mm6 - movq QWORD PTR [edi-112],mm1 - psrlq mm1,4 - movq QWORD PTR 16[edi],mm4 - movq mm7,mm4 - movq QWORD PTR [ebp-120],mm2 - psrlq mm4,4 - movq QWORD PTR 8[ebp],mm5 - shl edx,4 - mov BYTE PTR 3[esp],dl - mov edx,DWORD PTR [ebx-56] - movq mm2,QWORD PTR [ebx-56] - psllq mm7,60 - movq mm5,QWORD PTR [ebx-64] - por mm1,mm7 - movq QWORD PTR [edi-104],mm0 - psrlq mm0,4 - movq QWORD PTR 24[edi],mm3 - movq mm6,mm3 - movq QWORD PTR [ebp-112],mm1 - psrlq mm3,4 - movq QWORD PTR 16[ebp],mm4 - shl edx,4 - mov BYTE PTR 4[esp],dl - mov edx,DWORD PTR [ebx-40] - movq mm1,QWORD PTR [ebx-40] - psllq mm6,60 - movq mm4,QWORD PTR [ebx-48] - por mm0,mm6 - movq QWORD PTR [edi-96],mm2 - psrlq mm2,4 - movq QWORD PTR 32[edi],mm5 - movq mm7,mm5 - movq QWORD PTR [ebp-104],mm0 - psrlq mm5,4 - movq QWORD PTR 24[ebp],mm3 - shl edx,4 - mov BYTE PTR 5[esp],dl - mov edx,DWORD PTR [ebx-24] - movq mm0,QWORD PTR [ebx-24] - psllq mm7,60 - movq mm3,QWORD PTR [ebx-32] - por mm2,mm7 - movq QWORD PTR [edi-88],mm1 - psrlq mm1,4 - movq QWORD PTR 40[edi],mm4 - movq mm6,mm4 - movq QWORD PTR [ebp-96],mm2 - psrlq mm4,4 - movq QWORD PTR 32[ebp],mm5 - shl edx,4 - mov BYTE PTR 6[esp],dl - mov edx,DWORD PTR [ebx-8] - movq mm2,QWORD PTR [ebx-8] - psllq mm6,60 - movq mm5,QWORD PTR [ebx-16] - por mm1,mm6 - movq QWORD PTR [edi-80],mm0 - psrlq mm0,4 - movq QWORD PTR 48[edi],mm3 - movq mm7,mm3 - movq QWORD PTR [ebp-88],mm1 - psrlq mm3,4 - movq QWORD PTR 40[ebp],mm4 - shl edx,4 - mov BYTE PTR 7[esp],dl - mov edx,DWORD PTR 8[ebx] - movq mm1,QWORD PTR 8[ebx] - psllq mm7,60 - movq mm4,QWORD PTR [ebx] - por mm0,mm7 - movq QWORD PTR [edi-72],mm2 - psrlq mm2,4 - movq QWORD PTR 56[edi],mm5 - movq mm6,mm5 - movq QWORD PTR [ebp-80],mm0 - psrlq mm5,4 - movq QWORD PTR 48[ebp],mm3 - shl edx,4 - mov BYTE PTR 8[esp],dl - mov edx,DWORD PTR 24[ebx] - movq mm0,QWORD PTR 24[ebx] - psllq mm6,60 - movq mm3,QWORD PTR 16[ebx] - por mm2,mm6 - movq QWORD PTR [edi-64],mm1 - psrlq mm1,4 - movq QWORD PTR 64[edi],mm4 - movq mm7,mm4 - movq QWORD PTR [ebp-72],mm2 - psrlq mm4,4 - movq QWORD PTR 56[ebp],mm5 - shl edx,4 - mov BYTE PTR 9[esp],dl - mov edx,DWORD PTR 40[ebx] - movq mm2,QWORD PTR 40[ebx] - psllq mm7,60 - movq mm5,QWORD PTR 32[ebx] - por mm1,mm7 - movq QWORD PTR [edi-56],mm0 - psrlq mm0,4 - movq QWORD PTR 72[edi],mm3 - movq mm6,mm3 - movq QWORD PTR [ebp-64],mm1 - psrlq mm3,4 - movq QWORD PTR 64[ebp],mm4 - shl edx,4 - mov BYTE PTR 10[esp],dl - mov edx,DWORD PTR 56[ebx] - movq mm1,QWORD PTR 56[ebx] - psllq mm6,60 - movq mm4,QWORD PTR 48[ebx] - por mm0,mm6 - movq QWORD PTR [edi-48],mm2 - psrlq mm2,4 - movq QWORD PTR 80[edi],mm5 - movq mm7,mm5 - movq QWORD PTR [ebp-56],mm0 - psrlq mm5,4 - movq QWORD PTR 72[ebp],mm3 - shl edx,4 - mov BYTE PTR 11[esp],dl - mov edx,DWORD PTR 72[ebx] - movq mm0,QWORD PTR 72[ebx] - psllq mm7,60 - movq mm3,QWORD PTR 64[ebx] - por mm2,mm7 - movq QWORD PTR [edi-40],mm1 - psrlq mm1,4 - movq QWORD PTR 88[edi],mm4 - movq mm6,mm4 - movq QWORD PTR [ebp-48],mm2 - psrlq mm4,4 - movq QWORD PTR 80[ebp],mm5 - shl edx,4 - mov BYTE PTR 12[esp],dl - mov edx,DWORD PTR 88[ebx] - movq mm2,QWORD PTR 88[ebx] - psllq mm6,60 - movq mm5,QWORD PTR 80[ebx] - por mm1,mm6 - movq QWORD PTR [edi-32],mm0 - psrlq mm0,4 - movq QWORD PTR 96[edi],mm3 - movq mm7,mm3 - movq QWORD PTR [ebp-40],mm1 - psrlq mm3,4 - movq QWORD PTR 88[ebp],mm4 - shl edx,4 - mov BYTE PTR 13[esp],dl - mov edx,DWORD PTR 104[ebx] - movq mm1,QWORD PTR 104[ebx] - psllq mm7,60 - movq mm4,QWORD PTR 96[ebx] - por mm0,mm7 - movq QWORD PTR [edi-24],mm2 - psrlq mm2,4 - movq QWORD PTR 104[edi],mm5 - movq mm6,mm5 - movq QWORD PTR [ebp-32],mm0 - psrlq mm5,4 - movq QWORD PTR 96[ebp],mm3 - shl edx,4 - mov BYTE PTR 14[esp],dl - mov edx,DWORD PTR 120[ebx] - movq mm0,QWORD PTR 120[ebx] - psllq mm6,60 - movq mm3,QWORD PTR 112[ebx] - por mm2,mm6 - movq QWORD PTR [edi-16],mm1 - psrlq mm1,4 - movq QWORD PTR 112[edi],mm4 - movq mm7,mm4 - movq QWORD PTR [ebp-24],mm2 - psrlq mm4,4 - movq QWORD PTR 104[ebp],mm5 - shl edx,4 - mov BYTE PTR 15[esp],dl - psllq mm7,60 - por mm1,mm7 - movq QWORD PTR [edi-8],mm0 - psrlq mm0,4 - movq QWORD PTR 120[edi],mm3 - movq mm6,mm3 - movq QWORD PTR [ebp-16],mm1 - psrlq mm3,4 - movq QWORD PTR 112[ebp],mm4 - psllq mm6,60 - por mm0,mm6 - movq QWORD PTR [ebp-8],mm0 - movq QWORD PTR 120[ebp],mm3 - movq mm6,QWORD PTR [eax] - mov ebx,DWORD PTR 8[eax] - mov edx,DWORD PTR 12[eax] -ALIGN 16 -$L009outer: - xor edx,DWORD PTR 12[ecx] - xor ebx,DWORD PTR 8[ecx] - pxor mm6,QWORD PTR [ecx] - lea ecx,DWORD PTR 16[ecx] - mov DWORD PTR 536[esp],ebx - movq QWORD PTR 528[esp],mm6 - mov DWORD PTR 548[esp],ecx - xor eax,eax - rol edx,8 - mov al,dl - mov ebp,eax - and al,15 - shr ebp,4 - pxor mm0,mm0 - rol edx,8 - pxor mm1,mm1 - pxor mm2,mm2 - movq mm7,QWORD PTR 16[eax*8+esp] - movq mm6,QWORD PTR 144[eax*8+esp] - mov al,dl - movd ebx,mm7 - psrlq mm7,8 - movq mm3,mm6 - mov edi,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[ebp*8+esp] - and al,15 - psllq mm3,56 - shr edi,4 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[ebp*8+esp] - xor bl,BYTE PTR [ebp*1+esp] - mov al,dl - movd ecx,mm7 - movzx ebx,bl - psrlq mm7,8 - movq mm3,mm6 - mov ebp,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[edi*8+esp] - and al,15 - psllq mm3,56 - shr ebp,4 - pinsrw mm2,WORD PTR [ebx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[edi*8+esp] - xor cl,BYTE PTR [edi*1+esp] - mov al,dl - mov edx,DWORD PTR 536[esp] - movd ebx,mm7 - movzx ecx,cl - psrlq mm7,8 - movq mm3,mm6 - mov edi,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[ebp*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm2 - shr edi,4 - pinsrw mm1,WORD PTR [ecx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[ebp*8+esp] - xor bl,BYTE PTR [ebp*1+esp] - mov al,dl - movd ecx,mm7 - movzx ebx,bl - psrlq mm7,8 - movq mm3,mm6 - mov ebp,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[edi*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm1 - shr ebp,4 - pinsrw mm0,WORD PTR [ebx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[edi*8+esp] - xor cl,BYTE PTR [edi*1+esp] - mov al,dl - movd ebx,mm7 - movzx ecx,cl - psrlq mm7,8 - movq mm3,mm6 - mov edi,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[ebp*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm0 - shr edi,4 - pinsrw mm2,WORD PTR [ecx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[ebp*8+esp] - xor bl,BYTE PTR [ebp*1+esp] - mov al,dl - movd ecx,mm7 - movzx ebx,bl - psrlq mm7,8 - movq mm3,mm6 - mov ebp,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[edi*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm2 - shr ebp,4 - pinsrw mm1,WORD PTR [ebx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[edi*8+esp] - xor cl,BYTE PTR [edi*1+esp] - mov al,dl - mov edx,DWORD PTR 532[esp] - movd ebx,mm7 - movzx ecx,cl - psrlq mm7,8 - movq mm3,mm6 - mov edi,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[ebp*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm1 - shr edi,4 - pinsrw mm0,WORD PTR [ecx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[ebp*8+esp] - xor bl,BYTE PTR [ebp*1+esp] - mov al,dl - movd ecx,mm7 - movzx ebx,bl - psrlq mm7,8 - movq mm3,mm6 - mov ebp,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[edi*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm0 - shr ebp,4 - pinsrw mm2,WORD PTR [ebx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[edi*8+esp] - xor cl,BYTE PTR [edi*1+esp] - mov al,dl - movd ebx,mm7 - movzx ecx,cl - psrlq mm7,8 - movq mm3,mm6 - mov edi,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[ebp*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm2 - shr edi,4 - pinsrw mm1,WORD PTR [ecx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[ebp*8+esp] - xor bl,BYTE PTR [ebp*1+esp] - mov al,dl - movd ecx,mm7 - movzx ebx,bl - psrlq mm7,8 - movq mm3,mm6 - mov ebp,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[edi*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm1 - shr ebp,4 - pinsrw mm0,WORD PTR [ebx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[edi*8+esp] - xor cl,BYTE PTR [edi*1+esp] - mov al,dl - mov edx,DWORD PTR 528[esp] - movd ebx,mm7 - movzx ecx,cl - psrlq mm7,8 - movq mm3,mm6 - mov edi,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[ebp*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm0 - shr edi,4 - pinsrw mm2,WORD PTR [ecx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[ebp*8+esp] - xor bl,BYTE PTR [ebp*1+esp] - mov al,dl - movd ecx,mm7 - movzx ebx,bl - psrlq mm7,8 - movq mm3,mm6 - mov ebp,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[edi*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm2 - shr ebp,4 - pinsrw mm1,WORD PTR [ebx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[edi*8+esp] - xor cl,BYTE PTR [edi*1+esp] - mov al,dl - movd ebx,mm7 - movzx ecx,cl - psrlq mm7,8 - movq mm3,mm6 - mov edi,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[ebp*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm1 - shr edi,4 - pinsrw mm0,WORD PTR [ecx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[ebp*8+esp] - xor bl,BYTE PTR [ebp*1+esp] - mov al,dl - movd ecx,mm7 - movzx ebx,bl - psrlq mm7,8 - movq mm3,mm6 - mov ebp,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[edi*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm0 - shr ebp,4 - pinsrw mm2,WORD PTR [ebx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - rol edx,8 - pxor mm6,QWORD PTR 144[eax*8+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[edi*8+esp] - xor cl,BYTE PTR [edi*1+esp] - mov al,dl - mov edx,DWORD PTR 524[esp] - movd ebx,mm7 - movzx ecx,cl - psrlq mm7,8 - movq mm3,mm6 - mov edi,eax - psrlq mm6,8 - pxor mm7,QWORD PTR 272[ebp*8+esp] - and al,15 - psllq mm3,56 - pxor mm6,mm2 - shr edi,4 - pinsrw mm1,WORD PTR [ecx*2+esi],2 - pxor mm7,QWORD PTR 16[eax*8+esp] - pxor mm6,QWORD PTR 144[eax*8+esp] - xor bl,BYTE PTR [ebp*1+esp] - pxor mm7,mm3 - pxor mm6,QWORD PTR 400[ebp*8+esp] - movzx ebx,bl - pxor mm2,mm2 - psllq mm1,4 - movd ecx,mm7 - psrlq mm7,4 - movq mm3,mm6 - psrlq mm6,4 - shl ecx,4 - pxor mm7,QWORD PTR 16[edi*8+esp] - psllq mm3,60 - movzx ecx,cl - pxor mm7,mm3 - pxor mm6,QWORD PTR 144[edi*8+esp] - pinsrw mm0,WORD PTR [ebx*2+esi],2 - pxor mm6,mm1 - movd edx,mm7 - pinsrw mm2,WORD PTR [ecx*2+esi],3 - psllq mm0,12 - pxor mm6,mm0 - psrlq mm7,32 - pxor mm6,mm2 - mov ecx,DWORD PTR 548[esp] - movd ebx,mm7 - movq mm3,mm6 - psllw mm6,8 - psrlw mm3,8 - por mm6,mm3 - bswap edx - pshufw mm6,mm6,27 - bswap ebx - cmp ecx,DWORD PTR 552[esp] - jne $L009outer - mov eax,DWORD PTR 544[esp] - mov DWORD PTR 12[eax],edx - mov DWORD PTR 8[eax],ebx - movq QWORD PTR [eax],mm6 - mov esp,DWORD PTR 556[esp] - emms - pop edi - pop esi - pop ebx - pop ebp - ret -_gcm_ghash_4bit_mmx ENDP -ALIGN 16 -_gcm_init_clmul PROC PUBLIC -$L_gcm_init_clmul_begin:: - mov edx,DWORD PTR 4[esp] - mov eax,DWORD PTR 8[esp] - call $L010pic -$L010pic: - pop ecx - lea ecx,DWORD PTR ($Lbswap-$L010pic)[ecx] - movdqu xmm2,XMMWORD PTR [eax] - pshufd xmm2,xmm2,78 - pshufd xmm4,xmm2,255 - movdqa xmm3,xmm2 - psllq xmm2,1 - pxor xmm5,xmm5 - psrlq xmm3,63 - pcmpgtd xmm5,xmm4 - pslldq xmm3,8 - por xmm2,xmm3 - pand xmm5,XMMWORD PTR 16[ecx] - pxor xmm2,xmm5 - movdqa xmm0,xmm2 - movdqa xmm1,xmm0 - pshufd xmm3,xmm0,78 - pshufd xmm4,xmm2,78 - pxor xmm3,xmm0 - pxor xmm4,xmm2 -DB 102,15,58,68,194,0 -DB 102,15,58,68,202,17 -DB 102,15,58,68,220,0 - xorps xmm3,xmm0 - xorps xmm3,xmm1 - movdqa xmm4,xmm3 - psrldq xmm3,8 - pslldq xmm4,8 - pxor xmm1,xmm3 - pxor xmm0,xmm4 - movdqa xmm4,xmm0 - movdqa xmm3,xmm0 - psllq xmm0,5 - pxor xmm3,xmm0 - psllq xmm0,1 - pxor xmm0,xmm3 - psllq xmm0,57 - movdqa xmm3,xmm0 - pslldq xmm0,8 - psrldq xmm3,8 - pxor xmm0,xmm4 - pxor xmm1,xmm3 - movdqa xmm4,xmm0 - psrlq xmm0,1 - pxor xmm1,xmm4 - pxor xmm4,xmm0 - psrlq xmm0,5 - pxor xmm0,xmm4 - psrlq xmm0,1 - pxor xmm0,xmm1 - pshufd xmm3,xmm2,78 - pshufd xmm4,xmm0,78 - pxor xmm3,xmm2 - movdqu XMMWORD PTR [edx],xmm2 - pxor xmm4,xmm0 - movdqu XMMWORD PTR 16[edx],xmm0 -DB 102,15,58,15,227,8 - movdqu XMMWORD PTR 32[edx],xmm4 - ret -_gcm_init_clmul ENDP -ALIGN 16 -_gcm_gmult_clmul PROC PUBLIC -$L_gcm_gmult_clmul_begin:: - mov eax,DWORD PTR 4[esp] - mov edx,DWORD PTR 8[esp] - call $L011pic -$L011pic: - pop ecx - lea ecx,DWORD PTR ($Lbswap-$L011pic)[ecx] - movdqu xmm0,XMMWORD PTR [eax] - movdqa xmm5,XMMWORD PTR [ecx] - movups xmm2,XMMWORD PTR [edx] -DB 102,15,56,0,197 - movups xmm4,XMMWORD PTR 32[edx] - movdqa xmm1,xmm0 - pshufd xmm3,xmm0,78 - pxor xmm3,xmm0 -DB 102,15,58,68,194,0 -DB 102,15,58,68,202,17 -DB 102,15,58,68,220,0 - xorps xmm3,xmm0 - xorps xmm3,xmm1 - movdqa xmm4,xmm3 - psrldq xmm3,8 - pslldq xmm4,8 - pxor xmm1,xmm3 - pxor xmm0,xmm4 - movdqa xmm4,xmm0 - movdqa xmm3,xmm0 - psllq xmm0,5 - pxor xmm3,xmm0 - psllq xmm0,1 - pxor xmm0,xmm3 - psllq xmm0,57 - movdqa xmm3,xmm0 - pslldq xmm0,8 - psrldq xmm3,8 - pxor xmm0,xmm4 - pxor xmm1,xmm3 - movdqa xmm4,xmm0 - psrlq xmm0,1 - pxor xmm1,xmm4 - pxor xmm4,xmm0 - psrlq xmm0,5 - pxor xmm0,xmm4 - psrlq xmm0,1 - pxor xmm0,xmm1 -DB 102,15,56,0,197 - movdqu XMMWORD PTR [eax],xmm0 - ret -_gcm_gmult_clmul ENDP -ALIGN 16 -_gcm_ghash_clmul PROC PUBLIC -$L_gcm_ghash_clmul_begin:: - push ebp - push ebx - push esi - push edi - mov eax,DWORD PTR 20[esp] - mov edx,DWORD PTR 24[esp] - mov esi,DWORD PTR 28[esp] - mov ebx,DWORD PTR 32[esp] - call $L012pic -$L012pic: - pop ecx - lea ecx,DWORD PTR ($Lbswap-$L012pic)[ecx] - movdqu xmm0,XMMWORD PTR [eax] - movdqa xmm5,XMMWORD PTR [ecx] - movdqu xmm2,XMMWORD PTR [edx] -DB 102,15,56,0,197 - sub ebx,16 - jz $L013odd_tail - movdqu xmm3,XMMWORD PTR [esi] - movdqu xmm6,XMMWORD PTR 16[esi] -DB 102,15,56,0,221 -DB 102,15,56,0,245 - movdqu xmm5,XMMWORD PTR 32[edx] - pxor xmm0,xmm3 - pshufd xmm3,xmm6,78 - movdqa xmm7,xmm6 - pxor xmm3,xmm6 - lea esi,DWORD PTR 32[esi] -DB 102,15,58,68,242,0 -DB 102,15,58,68,250,17 -DB 102,15,58,68,221,0 - movups xmm2,XMMWORD PTR 16[edx] - nop - sub ebx,32 - jbe $L014even_tail - jmp $L015mod_loop -ALIGN 32 -$L015mod_loop: - pshufd xmm4,xmm0,78 - movdqa xmm1,xmm0 - pxor xmm4,xmm0 - nop -DB 102,15,58,68,194,0 -DB 102,15,58,68,202,17 -DB 102,15,58,68,229,16 - movups xmm2,XMMWORD PTR [edx] - xorps xmm0,xmm6 - movdqa xmm5,XMMWORD PTR [ecx] - xorps xmm1,xmm7 - movdqu xmm7,XMMWORD PTR [esi] - pxor xmm3,xmm0 - movdqu xmm6,XMMWORD PTR 16[esi] - pxor xmm3,xmm1 -DB 102,15,56,0,253 - pxor xmm4,xmm3 - movdqa xmm3,xmm4 - psrldq xmm4,8 - pslldq xmm3,8 - pxor xmm1,xmm4 - pxor xmm0,xmm3 -DB 102,15,56,0,245 - pxor xmm1,xmm7 - movdqa xmm7,xmm6 - movdqa xmm4,xmm0 - movdqa xmm3,xmm0 - psllq xmm0,5 - pxor xmm3,xmm0 - psllq xmm0,1 - pxor xmm0,xmm3 -DB 102,15,58,68,242,0 - movups xmm5,XMMWORD PTR 32[edx] - psllq xmm0,57 - movdqa xmm3,xmm0 - pslldq xmm0,8 - psrldq xmm3,8 - pxor xmm0,xmm4 - pxor xmm1,xmm3 - pshufd xmm3,xmm7,78 - movdqa xmm4,xmm0 - psrlq xmm0,1 - pxor xmm3,xmm7 - pxor xmm1,xmm4 -DB 102,15,58,68,250,17 - movups xmm2,XMMWORD PTR 16[edx] - pxor xmm4,xmm0 - psrlq xmm0,5 - pxor xmm0,xmm4 - psrlq xmm0,1 - pxor xmm0,xmm1 -DB 102,15,58,68,221,0 - lea esi,DWORD PTR 32[esi] - sub ebx,32 - ja $L015mod_loop -$L014even_tail: - pshufd xmm4,xmm0,78 - movdqa xmm1,xmm0 - pxor xmm4,xmm0 -DB 102,15,58,68,194,0 -DB 102,15,58,68,202,17 -DB 102,15,58,68,229,16 - movdqa xmm5,XMMWORD PTR [ecx] - xorps xmm0,xmm6 - xorps xmm1,xmm7 - pxor xmm3,xmm0 - pxor xmm3,xmm1 - pxor xmm4,xmm3 - movdqa xmm3,xmm4 - psrldq xmm4,8 - pslldq xmm3,8 - pxor xmm1,xmm4 - pxor xmm0,xmm3 - movdqa xmm4,xmm0 - movdqa xmm3,xmm0 - psllq xmm0,5 - pxor xmm3,xmm0 - psllq xmm0,1 - pxor xmm0,xmm3 - psllq xmm0,57 - movdqa xmm3,xmm0 - pslldq xmm0,8 - psrldq xmm3,8 - pxor xmm0,xmm4 - pxor xmm1,xmm3 - movdqa xmm4,xmm0 - psrlq xmm0,1 - pxor xmm1,xmm4 - pxor xmm4,xmm0 - psrlq xmm0,5 - pxor xmm0,xmm4 - psrlq xmm0,1 - pxor xmm0,xmm1 - test ebx,ebx - jnz $L016done - movups xmm2,XMMWORD PTR [edx] -$L013odd_tail: - movdqu xmm3,XMMWORD PTR [esi] -DB 102,15,56,0,221 - pxor xmm0,xmm3 - movdqa xmm1,xmm0 - pshufd xmm3,xmm0,78 - pshufd xmm4,xmm2,78 - pxor xmm3,xmm0 - pxor xmm4,xmm2 -DB 102,15,58,68,194,0 -DB 102,15,58,68,202,17 -DB 102,15,58,68,220,0 - xorps xmm3,xmm0 - xorps xmm3,xmm1 - movdqa xmm4,xmm3 - psrldq xmm3,8 - pslldq xmm4,8 - pxor xmm1,xmm3 - pxor xmm0,xmm4 - movdqa xmm4,xmm0 - movdqa xmm3,xmm0 - psllq xmm0,5 - pxor xmm3,xmm0 - psllq xmm0,1 - pxor xmm0,xmm3 - psllq xmm0,57 - movdqa xmm3,xmm0 - pslldq xmm0,8 - psrldq xmm3,8 - pxor xmm0,xmm4 - pxor xmm1,xmm3 - movdqa xmm4,xmm0 - psrlq xmm0,1 - pxor xmm1,xmm4 - pxor xmm4,xmm0 - psrlq xmm0,5 - pxor xmm0,xmm4 - psrlq xmm0,1 - pxor xmm0,xmm1 -$L016done: -DB 102,15,56,0,197 - movdqu XMMWORD PTR [eax],xmm0 - pop edi - pop esi - pop ebx - pop ebp - ret -_gcm_ghash_clmul ENDP -ALIGN 64 -$Lbswap:: -DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 -DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 -ALIGN 64 -$Lrem_8bit:: -DW 0,450,900,582,1800,1738,1164,1358 -DW 3600,4050,3476,3158,2328,2266,2716,2910 -DW 7200,7650,8100,7782,6952,6890,6316,6510 -DW 4656,5106,4532,4214,5432,5370,5820,6014 -DW 14400,14722,15300,14854,16200,16010,15564,15630 -DW 13904,14226,13780,13334,12632,12442,13020,13086 -DW 9312,9634,10212,9766,9064,8874,8428,8494 -DW 10864,11186,10740,10294,11640,11450,12028,12094 -DW 28800,28994,29444,29382,30600,30282,29708,30158 -DW 32400,32594,32020,31958,31128,30810,31260,31710 -DW 27808,28002,28452,28390,27560,27242,26668,27118 -DW 25264,25458,24884,24822,26040,25722,26172,26622 -DW 18624,18690,19268,19078,20424,19978,19532,19854 -DW 18128,18194,17748,17558,16856,16410,16988,17310 -DW 21728,21794,22372,22182,21480,21034,20588,20910 -DW 23280,23346,22900,22710,24056,23610,24188,24510 -DW 57600,57538,57988,58182,58888,59338,58764,58446 -DW 61200,61138,60564,60758,59416,59866,60316,59998 -DW 64800,64738,65188,65382,64040,64490,63916,63598 -DW 62256,62194,61620,61814,62520,62970,63420,63102 -DW 55616,55426,56004,56070,56904,57226,56780,56334 -DW 55120,54930,54484,54550,53336,53658,54236,53790 -DW 50528,50338,50916,50982,49768,50090,49644,49198 -DW 52080,51890,51444,51510,52344,52666,53244,52798 -DW 37248,36930,37380,37830,38536,38730,38156,38094 -DW 40848,40530,39956,40406,39064,39258,39708,39646 -DW 36256,35938,36388,36838,35496,35690,35116,35054 -DW 33712,33394,32820,33270,33976,34170,34620,34558 -DW 43456,43010,43588,43910,44744,44810,44364,44174 -DW 42960,42514,42068,42390,41176,41242,41820,41630 -DW 46560,46114,46692,47014,45800,45866,45420,45230 -DW 48112,47666,47220,47542,48376,48442,49020,48830 -ALIGN 64 -$Lrem_4bit:: -DD 0,0,0,471859200 -DD 0,943718400,0,610271232 -DD 0,1887436800,0,1822425088 -DD 0,1220542464,0,1423966208 -DD 0,3774873600,0,4246732800 -DD 0,3644850176,0,3311403008 -DD 0,2441084928,0,2376073216 -DD 0,2847932416,0,3051356160 -DB 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 -DB 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 -DB 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 -DB 0 -.text$ ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +ALIGN 16 +_gcm_gmult_4bit_x86 PROC PUBLIC +$L_gcm_gmult_4bit_x86_begin:: + push ebp + push ebx + push esi + push edi + sub esp,84 + mov edi,DWORD PTR 104[esp] + mov esi,DWORD PTR 108[esp] + mov ebp,DWORD PTR [edi] + mov edx,DWORD PTR 4[edi] + mov ecx,DWORD PTR 8[edi] + mov ebx,DWORD PTR 12[edi] + mov DWORD PTR 16[esp],0 + mov DWORD PTR 20[esp],471859200 + mov DWORD PTR 24[esp],943718400 + mov DWORD PTR 28[esp],610271232 + mov DWORD PTR 32[esp],1887436800 + mov DWORD PTR 36[esp],1822425088 + mov DWORD PTR 40[esp],1220542464 + mov DWORD PTR 44[esp],1423966208 + mov DWORD PTR 48[esp],3774873600 + mov DWORD PTR 52[esp],4246732800 + mov DWORD PTR 56[esp],3644850176 + mov DWORD PTR 60[esp],3311403008 + mov DWORD PTR 64[esp],2441084928 + mov DWORD PTR 68[esp],2376073216 + mov DWORD PTR 72[esp],2847932416 + mov DWORD PTR 76[esp],3051356160 + mov DWORD PTR [esp],ebp + mov DWORD PTR 4[esp],edx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],ebx + shr ebx,20 + and ebx,240 + mov ebp,DWORD PTR 4[ebx*1+esi] + mov edx,DWORD PTR [ebx*1+esi] + mov ecx,DWORD PTR 12[ebx*1+esi] + mov ebx,DWORD PTR 8[ebx*1+esi] + xor eax,eax + mov edi,15 + jmp $L000x86_loop +ALIGN 16 +$L000x86_loop: + mov al,bl + shrd ebx,ecx,4 + and al,15 + shrd ecx,edx,4 + shrd edx,ebp,4 + shr ebp,4 + xor ebp,DWORD PTR 16[eax*4+esp] + mov al,BYTE PTR [edi*1+esp] + and al,240 + xor ebx,DWORD PTR 8[eax*1+esi] + xor ecx,DWORD PTR 12[eax*1+esi] + xor edx,DWORD PTR [eax*1+esi] + xor ebp,DWORD PTR 4[eax*1+esi] + dec edi + js $L001x86_break + mov al,bl + shrd ebx,ecx,4 + and al,15 + shrd ecx,edx,4 + shrd edx,ebp,4 + shr ebp,4 + xor ebp,DWORD PTR 16[eax*4+esp] + mov al,BYTE PTR [edi*1+esp] + shl al,4 + xor ebx,DWORD PTR 8[eax*1+esi] + xor ecx,DWORD PTR 12[eax*1+esi] + xor edx,DWORD PTR [eax*1+esi] + xor ebp,DWORD PTR 4[eax*1+esi] + jmp $L000x86_loop +ALIGN 16 +$L001x86_break: + bswap ebx + bswap ecx + bswap edx + bswap ebp + mov edi,DWORD PTR 104[esp] + mov DWORD PTR 12[edi],ebx + mov DWORD PTR 8[edi],ecx + mov DWORD PTR 4[edi],edx + mov DWORD PTR [edi],ebp + add esp,84 + pop edi + pop esi + pop ebx + pop ebp + ret +_gcm_gmult_4bit_x86 ENDP +ALIGN 16 +_gcm_ghash_4bit_x86 PROC PUBLIC +$L_gcm_ghash_4bit_x86_begin:: + push ebp + push ebx + push esi + push edi + sub esp,84 + mov ebx,DWORD PTR 104[esp] + mov esi,DWORD PTR 108[esp] + mov edi,DWORD PTR 112[esp] + mov ecx,DWORD PTR 116[esp] + add ecx,edi + mov DWORD PTR 116[esp],ecx + mov ebp,DWORD PTR [ebx] + mov edx,DWORD PTR 4[ebx] + mov ecx,DWORD PTR 8[ebx] + mov ebx,DWORD PTR 12[ebx] + mov DWORD PTR 16[esp],0 + mov DWORD PTR 20[esp],471859200 + mov DWORD PTR 24[esp],943718400 + mov DWORD PTR 28[esp],610271232 + mov DWORD PTR 32[esp],1887436800 + mov DWORD PTR 36[esp],1822425088 + mov DWORD PTR 40[esp],1220542464 + mov DWORD PTR 44[esp],1423966208 + mov DWORD PTR 48[esp],3774873600 + mov DWORD PTR 52[esp],4246732800 + mov DWORD PTR 56[esp],3644850176 + mov DWORD PTR 60[esp],3311403008 + mov DWORD PTR 64[esp],2441084928 + mov DWORD PTR 68[esp],2376073216 + mov DWORD PTR 72[esp],2847932416 + mov DWORD PTR 76[esp],3051356160 +ALIGN 16 +$L002x86_outer_loop: + xor ebx,DWORD PTR 12[edi] + xor ecx,DWORD PTR 8[edi] + xor edx,DWORD PTR 4[edi] + xor ebp,DWORD PTR [edi] + mov DWORD PTR 12[esp],ebx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 4[esp],edx + mov DWORD PTR [esp],ebp + shr ebx,20 + and ebx,240 + mov ebp,DWORD PTR 4[ebx*1+esi] + mov edx,DWORD PTR [ebx*1+esi] + mov ecx,DWORD PTR 12[ebx*1+esi] + mov ebx,DWORD PTR 8[ebx*1+esi] + xor eax,eax + mov edi,15 + jmp $L003x86_loop +ALIGN 16 +$L003x86_loop: + mov al,bl + shrd ebx,ecx,4 + and al,15 + shrd ecx,edx,4 + shrd edx,ebp,4 + shr ebp,4 + xor ebp,DWORD PTR 16[eax*4+esp] + mov al,BYTE PTR [edi*1+esp] + and al,240 + xor ebx,DWORD PTR 8[eax*1+esi] + xor ecx,DWORD PTR 12[eax*1+esi] + xor edx,DWORD PTR [eax*1+esi] + xor ebp,DWORD PTR 4[eax*1+esi] + dec edi + js $L004x86_break + mov al,bl + shrd ebx,ecx,4 + and al,15 + shrd ecx,edx,4 + shrd edx,ebp,4 + shr ebp,4 + xor ebp,DWORD PTR 16[eax*4+esp] + mov al,BYTE PTR [edi*1+esp] + shl al,4 + xor ebx,DWORD PTR 8[eax*1+esi] + xor ecx,DWORD PTR 12[eax*1+esi] + xor edx,DWORD PTR [eax*1+esi] + xor ebp,DWORD PTR 4[eax*1+esi] + jmp $L003x86_loop +ALIGN 16 +$L004x86_break: + bswap ebx + bswap ecx + bswap edx + bswap ebp + mov edi,DWORD PTR 112[esp] + lea edi,DWORD PTR 16[edi] + cmp edi,DWORD PTR 116[esp] + mov DWORD PTR 112[esp],edi + jb $L002x86_outer_loop + mov edi,DWORD PTR 104[esp] + mov DWORD PTR 12[edi],ebx + mov DWORD PTR 8[edi],ecx + mov DWORD PTR 4[edi],edx + mov DWORD PTR [edi],ebp + add esp,84 + pop edi + pop esi + pop ebx + pop ebp + ret +_gcm_ghash_4bit_x86 ENDP +ALIGN 16 +_gcm_gmult_4bit_mmx PROC PUBLIC +$L_gcm_gmult_4bit_mmx_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + call $L005pic_point +$L005pic_point: + pop eax + lea eax,DWORD PTR ($Lrem_4bit-$L005pic_point)[eax] + movzx ebx,BYTE PTR 15[edi] + xor ecx,ecx + mov edx,ebx + mov cl,dl + mov ebp,14 + shl cl,4 + and edx,240 + movq mm0,QWORD PTR 8[ecx*1+esi] + movq mm1,QWORD PTR [ecx*1+esi] + movd ebx,mm0 + jmp $L006mmx_loop +ALIGN 16 +$L006mmx_loop: + psrlq mm0,4 + and ebx,15 + movq mm2,mm1 + psrlq mm1,4 + pxor mm0,QWORD PTR 8[edx*1+esi] + mov cl,BYTE PTR [ebp*1+edi] + psllq mm2,60 + pxor mm1,QWORD PTR [ebx*8+eax] + dec ebp + movd ebx,mm0 + pxor mm1,QWORD PTR [edx*1+esi] + mov edx,ecx + pxor mm0,mm2 + js $L007mmx_break + shl cl,4 + and ebx,15 + psrlq mm0,4 + and edx,240 + movq mm2,mm1 + psrlq mm1,4 + pxor mm0,QWORD PTR 8[ecx*1+esi] + psllq mm2,60 + pxor mm1,QWORD PTR [ebx*8+eax] + movd ebx,mm0 + pxor mm1,QWORD PTR [ecx*1+esi] + pxor mm0,mm2 + jmp $L006mmx_loop +ALIGN 16 +$L007mmx_break: + shl cl,4 + and ebx,15 + psrlq mm0,4 + and edx,240 + movq mm2,mm1 + psrlq mm1,4 + pxor mm0,QWORD PTR 8[ecx*1+esi] + psllq mm2,60 + pxor mm1,QWORD PTR [ebx*8+eax] + movd ebx,mm0 + pxor mm1,QWORD PTR [ecx*1+esi] + pxor mm0,mm2 + psrlq mm0,4 + and ebx,15 + movq mm2,mm1 + psrlq mm1,4 + pxor mm0,QWORD PTR 8[edx*1+esi] + psllq mm2,60 + pxor mm1,QWORD PTR [ebx*8+eax] + movd ebx,mm0 + pxor mm1,QWORD PTR [edx*1+esi] + pxor mm0,mm2 + psrlq mm0,32 + movd edx,mm1 + psrlq mm1,32 + movd ecx,mm0 + movd ebp,mm1 + bswap ebx + bswap edx + bswap ecx + bswap ebp + emms + mov DWORD PTR 12[edi],ebx + mov DWORD PTR 4[edi],edx + mov DWORD PTR 8[edi],ecx + mov DWORD PTR [edi],ebp + pop edi + pop esi + pop ebx + pop ebp + ret +_gcm_gmult_4bit_mmx ENDP +ALIGN 16 +_gcm_ghash_4bit_mmx PROC PUBLIC +$L_gcm_ghash_4bit_mmx_begin:: + push ebp + push ebx + push esi + push edi + mov eax,DWORD PTR 20[esp] + mov ebx,DWORD PTR 24[esp] + mov ecx,DWORD PTR 28[esp] + mov edx,DWORD PTR 32[esp] + mov ebp,esp + call $L008pic_point +$L008pic_point: + pop esi + lea esi,DWORD PTR ($Lrem_8bit-$L008pic_point)[esi] + sub esp,544 + and esp,-64 + sub esp,16 + add edx,ecx + mov DWORD PTR 544[esp],eax + mov DWORD PTR 552[esp],edx + mov DWORD PTR 556[esp],ebp + add ebx,128 + lea edi,DWORD PTR 144[esp] + lea ebp,DWORD PTR 400[esp] + mov edx,DWORD PTR [ebx-120] + movq mm0,QWORD PTR [ebx-120] + movq mm3,QWORD PTR [ebx-128] + shl edx,4 + mov BYTE PTR [esp],dl + mov edx,DWORD PTR [ebx-104] + movq mm2,QWORD PTR [ebx-104] + movq mm5,QWORD PTR [ebx-112] + movq QWORD PTR [edi-128],mm0 + psrlq mm0,4 + movq QWORD PTR [edi],mm3 + movq mm7,mm3 + psrlq mm3,4 + shl edx,4 + mov BYTE PTR 1[esp],dl + mov edx,DWORD PTR [ebx-88] + movq mm1,QWORD PTR [ebx-88] + psllq mm7,60 + movq mm4,QWORD PTR [ebx-96] + por mm0,mm7 + movq QWORD PTR [edi-120],mm2 + psrlq mm2,4 + movq QWORD PTR 8[edi],mm5 + movq mm6,mm5 + movq QWORD PTR [ebp-128],mm0 + psrlq mm5,4 + movq QWORD PTR [ebp],mm3 + shl edx,4 + mov BYTE PTR 2[esp],dl + mov edx,DWORD PTR [ebx-72] + movq mm0,QWORD PTR [ebx-72] + psllq mm6,60 + movq mm3,QWORD PTR [ebx-80] + por mm2,mm6 + movq QWORD PTR [edi-112],mm1 + psrlq mm1,4 + movq QWORD PTR 16[edi],mm4 + movq mm7,mm4 + movq QWORD PTR [ebp-120],mm2 + psrlq mm4,4 + movq QWORD PTR 8[ebp],mm5 + shl edx,4 + mov BYTE PTR 3[esp],dl + mov edx,DWORD PTR [ebx-56] + movq mm2,QWORD PTR [ebx-56] + psllq mm7,60 + movq mm5,QWORD PTR [ebx-64] + por mm1,mm7 + movq QWORD PTR [edi-104],mm0 + psrlq mm0,4 + movq QWORD PTR 24[edi],mm3 + movq mm6,mm3 + movq QWORD PTR [ebp-112],mm1 + psrlq mm3,4 + movq QWORD PTR 16[ebp],mm4 + shl edx,4 + mov BYTE PTR 4[esp],dl + mov edx,DWORD PTR [ebx-40] + movq mm1,QWORD PTR [ebx-40] + psllq mm6,60 + movq mm4,QWORD PTR [ebx-48] + por mm0,mm6 + movq QWORD PTR [edi-96],mm2 + psrlq mm2,4 + movq QWORD PTR 32[edi],mm5 + movq mm7,mm5 + movq QWORD PTR [ebp-104],mm0 + psrlq mm5,4 + movq QWORD PTR 24[ebp],mm3 + shl edx,4 + mov BYTE PTR 5[esp],dl + mov edx,DWORD PTR [ebx-24] + movq mm0,QWORD PTR [ebx-24] + psllq mm7,60 + movq mm3,QWORD PTR [ebx-32] + por mm2,mm7 + movq QWORD PTR [edi-88],mm1 + psrlq mm1,4 + movq QWORD PTR 40[edi],mm4 + movq mm6,mm4 + movq QWORD PTR [ebp-96],mm2 + psrlq mm4,4 + movq QWORD PTR 32[ebp],mm5 + shl edx,4 + mov BYTE PTR 6[esp],dl + mov edx,DWORD PTR [ebx-8] + movq mm2,QWORD PTR [ebx-8] + psllq mm6,60 + movq mm5,QWORD PTR [ebx-16] + por mm1,mm6 + movq QWORD PTR [edi-80],mm0 + psrlq mm0,4 + movq QWORD PTR 48[edi],mm3 + movq mm7,mm3 + movq QWORD PTR [ebp-88],mm1 + psrlq mm3,4 + movq QWORD PTR 40[ebp],mm4 + shl edx,4 + mov BYTE PTR 7[esp],dl + mov edx,DWORD PTR 8[ebx] + movq mm1,QWORD PTR 8[ebx] + psllq mm7,60 + movq mm4,QWORD PTR [ebx] + por mm0,mm7 + movq QWORD PTR [edi-72],mm2 + psrlq mm2,4 + movq QWORD PTR 56[edi],mm5 + movq mm6,mm5 + movq QWORD PTR [ebp-80],mm0 + psrlq mm5,4 + movq QWORD PTR 48[ebp],mm3 + shl edx,4 + mov BYTE PTR 8[esp],dl + mov edx,DWORD PTR 24[ebx] + movq mm0,QWORD PTR 24[ebx] + psllq mm6,60 + movq mm3,QWORD PTR 16[ebx] + por mm2,mm6 + movq QWORD PTR [edi-64],mm1 + psrlq mm1,4 + movq QWORD PTR 64[edi],mm4 + movq mm7,mm4 + movq QWORD PTR [ebp-72],mm2 + psrlq mm4,4 + movq QWORD PTR 56[ebp],mm5 + shl edx,4 + mov BYTE PTR 9[esp],dl + mov edx,DWORD PTR 40[ebx] + movq mm2,QWORD PTR 40[ebx] + psllq mm7,60 + movq mm5,QWORD PTR 32[ebx] + por mm1,mm7 + movq QWORD PTR [edi-56],mm0 + psrlq mm0,4 + movq QWORD PTR 72[edi],mm3 + movq mm6,mm3 + movq QWORD PTR [ebp-64],mm1 + psrlq mm3,4 + movq QWORD PTR 64[ebp],mm4 + shl edx,4 + mov BYTE PTR 10[esp],dl + mov edx,DWORD PTR 56[ebx] + movq mm1,QWORD PTR 56[ebx] + psllq mm6,60 + movq mm4,QWORD PTR 48[ebx] + por mm0,mm6 + movq QWORD PTR [edi-48],mm2 + psrlq mm2,4 + movq QWORD PTR 80[edi],mm5 + movq mm7,mm5 + movq QWORD PTR [ebp-56],mm0 + psrlq mm5,4 + movq QWORD PTR 72[ebp],mm3 + shl edx,4 + mov BYTE PTR 11[esp],dl + mov edx,DWORD PTR 72[ebx] + movq mm0,QWORD PTR 72[ebx] + psllq mm7,60 + movq mm3,QWORD PTR 64[ebx] + por mm2,mm7 + movq QWORD PTR [edi-40],mm1 + psrlq mm1,4 + movq QWORD PTR 88[edi],mm4 + movq mm6,mm4 + movq QWORD PTR [ebp-48],mm2 + psrlq mm4,4 + movq QWORD PTR 80[ebp],mm5 + shl edx,4 + mov BYTE PTR 12[esp],dl + mov edx,DWORD PTR 88[ebx] + movq mm2,QWORD PTR 88[ebx] + psllq mm6,60 + movq mm5,QWORD PTR 80[ebx] + por mm1,mm6 + movq QWORD PTR [edi-32],mm0 + psrlq mm0,4 + movq QWORD PTR 96[edi],mm3 + movq mm7,mm3 + movq QWORD PTR [ebp-40],mm1 + psrlq mm3,4 + movq QWORD PTR 88[ebp],mm4 + shl edx,4 + mov BYTE PTR 13[esp],dl + mov edx,DWORD PTR 104[ebx] + movq mm1,QWORD PTR 104[ebx] + psllq mm7,60 + movq mm4,QWORD PTR 96[ebx] + por mm0,mm7 + movq QWORD PTR [edi-24],mm2 + psrlq mm2,4 + movq QWORD PTR 104[edi],mm5 + movq mm6,mm5 + movq QWORD PTR [ebp-32],mm0 + psrlq mm5,4 + movq QWORD PTR 96[ebp],mm3 + shl edx,4 + mov BYTE PTR 14[esp],dl + mov edx,DWORD PTR 120[ebx] + movq mm0,QWORD PTR 120[ebx] + psllq mm6,60 + movq mm3,QWORD PTR 112[ebx] + por mm2,mm6 + movq QWORD PTR [edi-16],mm1 + psrlq mm1,4 + movq QWORD PTR 112[edi],mm4 + movq mm7,mm4 + movq QWORD PTR [ebp-24],mm2 + psrlq mm4,4 + movq QWORD PTR 104[ebp],mm5 + shl edx,4 + mov BYTE PTR 15[esp],dl + psllq mm7,60 + por mm1,mm7 + movq QWORD PTR [edi-8],mm0 + psrlq mm0,4 + movq QWORD PTR 120[edi],mm3 + movq mm6,mm3 + movq QWORD PTR [ebp-16],mm1 + psrlq mm3,4 + movq QWORD PTR 112[ebp],mm4 + psllq mm6,60 + por mm0,mm6 + movq QWORD PTR [ebp-8],mm0 + movq QWORD PTR 120[ebp],mm3 + movq mm6,QWORD PTR [eax] + mov ebx,DWORD PTR 8[eax] + mov edx,DWORD PTR 12[eax] +ALIGN 16 +$L009outer: + xor edx,DWORD PTR 12[ecx] + xor ebx,DWORD PTR 8[ecx] + pxor mm6,QWORD PTR [ecx] + lea ecx,DWORD PTR 16[ecx] + mov DWORD PTR 536[esp],ebx + movq QWORD PTR 528[esp],mm6 + mov DWORD PTR 548[esp],ecx + xor eax,eax + rol edx,8 + mov al,dl + mov ebp,eax + and al,15 + shr ebp,4 + pxor mm0,mm0 + rol edx,8 + pxor mm1,mm1 + pxor mm2,mm2 + movq mm7,QWORD PTR 16[eax*8+esp] + movq mm6,QWORD PTR 144[eax*8+esp] + mov al,dl + movd ebx,mm7 + psrlq mm7,8 + movq mm3,mm6 + mov edi,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[ebp*8+esp] + and al,15 + psllq mm3,56 + shr edi,4 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[ebp*8+esp] + xor bl,BYTE PTR [ebp*1+esp] + mov al,dl + movd ecx,mm7 + movzx ebx,bl + psrlq mm7,8 + movq mm3,mm6 + mov ebp,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[edi*8+esp] + and al,15 + psllq mm3,56 + shr ebp,4 + pinsrw mm2,WORD PTR [ebx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[edi*8+esp] + xor cl,BYTE PTR [edi*1+esp] + mov al,dl + mov edx,DWORD PTR 536[esp] + movd ebx,mm7 + movzx ecx,cl + psrlq mm7,8 + movq mm3,mm6 + mov edi,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[ebp*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm2 + shr edi,4 + pinsrw mm1,WORD PTR [ecx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[ebp*8+esp] + xor bl,BYTE PTR [ebp*1+esp] + mov al,dl + movd ecx,mm7 + movzx ebx,bl + psrlq mm7,8 + movq mm3,mm6 + mov ebp,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[edi*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm1 + shr ebp,4 + pinsrw mm0,WORD PTR [ebx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[edi*8+esp] + xor cl,BYTE PTR [edi*1+esp] + mov al,dl + movd ebx,mm7 + movzx ecx,cl + psrlq mm7,8 + movq mm3,mm6 + mov edi,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[ebp*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm0 + shr edi,4 + pinsrw mm2,WORD PTR [ecx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[ebp*8+esp] + xor bl,BYTE PTR [ebp*1+esp] + mov al,dl + movd ecx,mm7 + movzx ebx,bl + psrlq mm7,8 + movq mm3,mm6 + mov ebp,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[edi*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm2 + shr ebp,4 + pinsrw mm1,WORD PTR [ebx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[edi*8+esp] + xor cl,BYTE PTR [edi*1+esp] + mov al,dl + mov edx,DWORD PTR 532[esp] + movd ebx,mm7 + movzx ecx,cl + psrlq mm7,8 + movq mm3,mm6 + mov edi,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[ebp*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm1 + shr edi,4 + pinsrw mm0,WORD PTR [ecx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[ebp*8+esp] + xor bl,BYTE PTR [ebp*1+esp] + mov al,dl + movd ecx,mm7 + movzx ebx,bl + psrlq mm7,8 + movq mm3,mm6 + mov ebp,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[edi*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm0 + shr ebp,4 + pinsrw mm2,WORD PTR [ebx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[edi*8+esp] + xor cl,BYTE PTR [edi*1+esp] + mov al,dl + movd ebx,mm7 + movzx ecx,cl + psrlq mm7,8 + movq mm3,mm6 + mov edi,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[ebp*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm2 + shr edi,4 + pinsrw mm1,WORD PTR [ecx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[ebp*8+esp] + xor bl,BYTE PTR [ebp*1+esp] + mov al,dl + movd ecx,mm7 + movzx ebx,bl + psrlq mm7,8 + movq mm3,mm6 + mov ebp,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[edi*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm1 + shr ebp,4 + pinsrw mm0,WORD PTR [ebx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[edi*8+esp] + xor cl,BYTE PTR [edi*1+esp] + mov al,dl + mov edx,DWORD PTR 528[esp] + movd ebx,mm7 + movzx ecx,cl + psrlq mm7,8 + movq mm3,mm6 + mov edi,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[ebp*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm0 + shr edi,4 + pinsrw mm2,WORD PTR [ecx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[ebp*8+esp] + xor bl,BYTE PTR [ebp*1+esp] + mov al,dl + movd ecx,mm7 + movzx ebx,bl + psrlq mm7,8 + movq mm3,mm6 + mov ebp,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[edi*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm2 + shr ebp,4 + pinsrw mm1,WORD PTR [ebx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[edi*8+esp] + xor cl,BYTE PTR [edi*1+esp] + mov al,dl + movd ebx,mm7 + movzx ecx,cl + psrlq mm7,8 + movq mm3,mm6 + mov edi,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[ebp*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm1 + shr edi,4 + pinsrw mm0,WORD PTR [ecx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[ebp*8+esp] + xor bl,BYTE PTR [ebp*1+esp] + mov al,dl + movd ecx,mm7 + movzx ebx,bl + psrlq mm7,8 + movq mm3,mm6 + mov ebp,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[edi*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm0 + shr ebp,4 + pinsrw mm2,WORD PTR [ebx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + rol edx,8 + pxor mm6,QWORD PTR 144[eax*8+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[edi*8+esp] + xor cl,BYTE PTR [edi*1+esp] + mov al,dl + mov edx,DWORD PTR 524[esp] + movd ebx,mm7 + movzx ecx,cl + psrlq mm7,8 + movq mm3,mm6 + mov edi,eax + psrlq mm6,8 + pxor mm7,QWORD PTR 272[ebp*8+esp] + and al,15 + psllq mm3,56 + pxor mm6,mm2 + shr edi,4 + pinsrw mm1,WORD PTR [ecx*2+esi],2 + pxor mm7,QWORD PTR 16[eax*8+esp] + pxor mm6,QWORD PTR 144[eax*8+esp] + xor bl,BYTE PTR [ebp*1+esp] + pxor mm7,mm3 + pxor mm6,QWORD PTR 400[ebp*8+esp] + movzx ebx,bl + pxor mm2,mm2 + psllq mm1,4 + movd ecx,mm7 + psrlq mm7,4 + movq mm3,mm6 + psrlq mm6,4 + shl ecx,4 + pxor mm7,QWORD PTR 16[edi*8+esp] + psllq mm3,60 + movzx ecx,cl + pxor mm7,mm3 + pxor mm6,QWORD PTR 144[edi*8+esp] + pinsrw mm0,WORD PTR [ebx*2+esi],2 + pxor mm6,mm1 + movd edx,mm7 + pinsrw mm2,WORD PTR [ecx*2+esi],3 + psllq mm0,12 + pxor mm6,mm0 + psrlq mm7,32 + pxor mm6,mm2 + mov ecx,DWORD PTR 548[esp] + movd ebx,mm7 + movq mm3,mm6 + psllw mm6,8 + psrlw mm3,8 + por mm6,mm3 + bswap edx + pshufw mm6,mm6,27 + bswap ebx + cmp ecx,DWORD PTR 552[esp] + jne $L009outer + mov eax,DWORD PTR 544[esp] + mov DWORD PTR 12[eax],edx + mov DWORD PTR 8[eax],ebx + movq QWORD PTR [eax],mm6 + mov esp,DWORD PTR 556[esp] + emms + pop edi + pop esi + pop ebx + pop ebp + ret +_gcm_ghash_4bit_mmx ENDP +ALIGN 16 +_gcm_init_clmul PROC PUBLIC +$L_gcm_init_clmul_begin:: + mov edx,DWORD PTR 4[esp] + mov eax,DWORD PTR 8[esp] + call $L010pic +$L010pic: + pop ecx + lea ecx,DWORD PTR ($Lbswap-$L010pic)[ecx] + movdqu xmm2,XMMWORD PTR [eax] + pshufd xmm2,xmm2,78 + pshufd xmm4,xmm2,255 + movdqa xmm3,xmm2 + psllq xmm2,1 + pxor xmm5,xmm5 + psrlq xmm3,63 + pcmpgtd xmm5,xmm4 + pslldq xmm3,8 + por xmm2,xmm3 + pand xmm5,XMMWORD PTR 16[ecx] + pxor xmm2,xmm5 + movdqa xmm0,xmm2 + movdqa xmm1,xmm0 + pshufd xmm3,xmm0,78 + pshufd xmm4,xmm2,78 + pxor xmm3,xmm0 + pxor xmm4,xmm2 +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,220,0 + xorps xmm3,xmm0 + xorps xmm3,xmm1 + movdqa xmm4,xmm3 + psrldq xmm3,8 + pslldq xmm4,8 + pxor xmm1,xmm3 + pxor xmm0,xmm4 + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 + pshufd xmm3,xmm2,78 + pshufd xmm4,xmm0,78 + pxor xmm3,xmm2 + movdqu XMMWORD PTR [edx],xmm2 + pxor xmm4,xmm0 + movdqu XMMWORD PTR 16[edx],xmm0 +DB 102,15,58,15,227,8 + movdqu XMMWORD PTR 32[edx],xmm4 + ret +_gcm_init_clmul ENDP +ALIGN 16 +_gcm_gmult_clmul PROC PUBLIC +$L_gcm_gmult_clmul_begin:: + mov eax,DWORD PTR 4[esp] + mov edx,DWORD PTR 8[esp] + call $L011pic +$L011pic: + pop ecx + lea ecx,DWORD PTR ($Lbswap-$L011pic)[ecx] + movdqu xmm0,XMMWORD PTR [eax] + movdqa xmm5,XMMWORD PTR [ecx] + movups xmm2,XMMWORD PTR [edx] +DB 102,15,56,0,197 + movups xmm4,XMMWORD PTR 32[edx] + movdqa xmm1,xmm0 + pshufd xmm3,xmm0,78 + pxor xmm3,xmm0 +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,220,0 + xorps xmm3,xmm0 + xorps xmm3,xmm1 + movdqa xmm4,xmm3 + psrldq xmm3,8 + pslldq xmm4,8 + pxor xmm1,xmm3 + pxor xmm0,xmm4 + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 +DB 102,15,56,0,197 + movdqu XMMWORD PTR [eax],xmm0 + ret +_gcm_gmult_clmul ENDP +ALIGN 16 +_gcm_ghash_clmul PROC PUBLIC +$L_gcm_ghash_clmul_begin:: + push ebp + push ebx + push esi + push edi + mov eax,DWORD PTR 20[esp] + mov edx,DWORD PTR 24[esp] + mov esi,DWORD PTR 28[esp] + mov ebx,DWORD PTR 32[esp] + call $L012pic +$L012pic: + pop ecx + lea ecx,DWORD PTR ($Lbswap-$L012pic)[ecx] + movdqu xmm0,XMMWORD PTR [eax] + movdqa xmm5,XMMWORD PTR [ecx] + movdqu xmm2,XMMWORD PTR [edx] +DB 102,15,56,0,197 + sub ebx,16 + jz $L013odd_tail + movdqu xmm3,XMMWORD PTR [esi] + movdqu xmm6,XMMWORD PTR 16[esi] +DB 102,15,56,0,221 +DB 102,15,56,0,245 + movdqu xmm5,XMMWORD PTR 32[edx] + pxor xmm0,xmm3 + pshufd xmm3,xmm6,78 + movdqa xmm7,xmm6 + pxor xmm3,xmm6 + lea esi,DWORD PTR 32[esi] +DB 102,15,58,68,242,0 +DB 102,15,58,68,250,17 +DB 102,15,58,68,221,0 + movups xmm2,XMMWORD PTR 16[edx] + nop + sub ebx,32 + jbe $L014even_tail + jmp $L015mod_loop +ALIGN 32 +$L015mod_loop: + pshufd xmm4,xmm0,78 + movdqa xmm1,xmm0 + pxor xmm4,xmm0 + nop +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,229,16 + movups xmm2,XMMWORD PTR [edx] + xorps xmm0,xmm6 + movdqa xmm5,XMMWORD PTR [ecx] + xorps xmm1,xmm7 + movdqu xmm7,XMMWORD PTR [esi] + pxor xmm3,xmm0 + movdqu xmm6,XMMWORD PTR 16[esi] + pxor xmm3,xmm1 +DB 102,15,56,0,253 + pxor xmm4,xmm3 + movdqa xmm3,xmm4 + psrldq xmm4,8 + pslldq xmm3,8 + pxor xmm1,xmm4 + pxor xmm0,xmm3 +DB 102,15,56,0,245 + pxor xmm1,xmm7 + movdqa xmm7,xmm6 + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 +DB 102,15,58,68,242,0 + movups xmm5,XMMWORD PTR 32[edx] + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + pshufd xmm3,xmm7,78 + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm3,xmm7 + pxor xmm1,xmm4 +DB 102,15,58,68,250,17 + movups xmm2,XMMWORD PTR 16[edx] + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 +DB 102,15,58,68,221,0 + lea esi,DWORD PTR 32[esi] + sub ebx,32 + ja $L015mod_loop +$L014even_tail: + pshufd xmm4,xmm0,78 + movdqa xmm1,xmm0 + pxor xmm4,xmm0 +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,229,16 + movdqa xmm5,XMMWORD PTR [ecx] + xorps xmm0,xmm6 + xorps xmm1,xmm7 + pxor xmm3,xmm0 + pxor xmm3,xmm1 + pxor xmm4,xmm3 + movdqa xmm3,xmm4 + psrldq xmm4,8 + pslldq xmm3,8 + pxor xmm1,xmm4 + pxor xmm0,xmm3 + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 + test ebx,ebx + jnz $L016done + movups xmm2,XMMWORD PTR [edx] +$L013odd_tail: + movdqu xmm3,XMMWORD PTR [esi] +DB 102,15,56,0,221 + pxor xmm0,xmm3 + movdqa xmm1,xmm0 + pshufd xmm3,xmm0,78 + pshufd xmm4,xmm2,78 + pxor xmm3,xmm0 + pxor xmm4,xmm2 +DB 102,15,58,68,194,0 +DB 102,15,58,68,202,17 +DB 102,15,58,68,220,0 + xorps xmm3,xmm0 + xorps xmm3,xmm1 + movdqa xmm4,xmm3 + psrldq xmm3,8 + pslldq xmm4,8 + pxor xmm1,xmm3 + pxor xmm0,xmm4 + movdqa xmm4,xmm0 + movdqa xmm3,xmm0 + psllq xmm0,5 + pxor xmm3,xmm0 + psllq xmm0,1 + pxor xmm0,xmm3 + psllq xmm0,57 + movdqa xmm3,xmm0 + pslldq xmm0,8 + psrldq xmm3,8 + pxor xmm0,xmm4 + pxor xmm1,xmm3 + movdqa xmm4,xmm0 + psrlq xmm0,1 + pxor xmm1,xmm4 + pxor xmm4,xmm0 + psrlq xmm0,5 + pxor xmm0,xmm4 + psrlq xmm0,1 + pxor xmm0,xmm1 +$L016done: +DB 102,15,56,0,197 + movdqu XMMWORD PTR [eax],xmm0 + pop edi + pop esi + pop ebx + pop ebp + ret +_gcm_ghash_clmul ENDP +ALIGN 64 +$Lbswap:: +DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +DB 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 +ALIGN 64 +$Lrem_8bit:: +DW 0,450,900,582,1800,1738,1164,1358 +DW 3600,4050,3476,3158,2328,2266,2716,2910 +DW 7200,7650,8100,7782,6952,6890,6316,6510 +DW 4656,5106,4532,4214,5432,5370,5820,6014 +DW 14400,14722,15300,14854,16200,16010,15564,15630 +DW 13904,14226,13780,13334,12632,12442,13020,13086 +DW 9312,9634,10212,9766,9064,8874,8428,8494 +DW 10864,11186,10740,10294,11640,11450,12028,12094 +DW 28800,28994,29444,29382,30600,30282,29708,30158 +DW 32400,32594,32020,31958,31128,30810,31260,31710 +DW 27808,28002,28452,28390,27560,27242,26668,27118 +DW 25264,25458,24884,24822,26040,25722,26172,26622 +DW 18624,18690,19268,19078,20424,19978,19532,19854 +DW 18128,18194,17748,17558,16856,16410,16988,17310 +DW 21728,21794,22372,22182,21480,21034,20588,20910 +DW 23280,23346,22900,22710,24056,23610,24188,24510 +DW 57600,57538,57988,58182,58888,59338,58764,58446 +DW 61200,61138,60564,60758,59416,59866,60316,59998 +DW 64800,64738,65188,65382,64040,64490,63916,63598 +DW 62256,62194,61620,61814,62520,62970,63420,63102 +DW 55616,55426,56004,56070,56904,57226,56780,56334 +DW 55120,54930,54484,54550,53336,53658,54236,53790 +DW 50528,50338,50916,50982,49768,50090,49644,49198 +DW 52080,51890,51444,51510,52344,52666,53244,52798 +DW 37248,36930,37380,37830,38536,38730,38156,38094 +DW 40848,40530,39956,40406,39064,39258,39708,39646 +DW 36256,35938,36388,36838,35496,35690,35116,35054 +DW 33712,33394,32820,33270,33976,34170,34620,34558 +DW 43456,43010,43588,43910,44744,44810,44364,44174 +DW 42960,42514,42068,42390,41176,41242,41820,41630 +DW 46560,46114,46692,47014,45800,45866,45420,45230 +DW 48112,47666,47220,47542,48376,48442,49020,48830 +ALIGN 64 +$Lrem_4bit:: +DD 0,0,0,471859200 +DD 0,943718400,0,610271232 +DD 0,1887436800,0,1822425088 +DD 0,1220542464,0,1423966208 +DD 0,3774873600,0,4246732800 +DD 0,3644850176,0,3311403008 +DD 0,2441084928,0,2376073216 +DD 0,2847932416,0,3051356160 +DB 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 +DB 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 +DB 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 +DB 0 +.text$ ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/rc4/rc4-586.masm b/contrib/libs/openssl/asm/windows/crypto/rc4/rc4-586.masm index eade96c447..2b946da87e 100644 --- a/contrib/libs/openssl/asm/windows/crypto/rc4/rc4-586.masm +++ b/contrib/libs/openssl/asm/windows/crypto/rc4/rc4-586.masm @@ -1,387 +1,387 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -;EXTERN _OPENSSL_ia32cap_P:NEAR -ALIGN 16 -_RC4 PROC PUBLIC -$L_RC4_begin:: - push ebp - push ebx - push esi - push edi - mov edi,DWORD PTR 20[esp] - mov edx,DWORD PTR 24[esp] - mov esi,DWORD PTR 28[esp] - mov ebp,DWORD PTR 32[esp] - xor eax,eax - xor ebx,ebx - cmp edx,0 - je $L000abort - mov al,BYTE PTR [edi] - mov bl,BYTE PTR 4[edi] - add edi,8 - lea ecx,DWORD PTR [edx*1+esi] - sub ebp,esi - mov DWORD PTR 24[esp],ecx - inc al - cmp DWORD PTR 256[edi],-1 - je $L001RC4_CHAR - mov ecx,DWORD PTR [eax*4+edi] - and edx,-4 - jz $L002loop1 - mov DWORD PTR 32[esp],ebp - test edx,-8 - jz $L003go4loop4 - lea ebp,DWORD PTR _OPENSSL_ia32cap_P - bt DWORD PTR [ebp],26 - jnc $L003go4loop4 - mov ebp,DWORD PTR 32[esp] - and edx,-8 - lea edx,DWORD PTR [edx*1+esi-8] - mov DWORD PTR [edi-4],edx - add bl,cl - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - movq mm0,QWORD PTR [esi] - mov ecx,DWORD PTR [eax*4+edi] - movd mm2,DWORD PTR [edx*4+edi] - jmp $L004loop_mmx_enter -ALIGN 16 -$L005loop_mmx: - add bl,cl - psllq mm1,56 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - movq mm0,QWORD PTR [esi] - movq QWORD PTR [esi*1+ebp-8],mm2 - mov ecx,DWORD PTR [eax*4+edi] - movd mm2,DWORD PTR [edx*4+edi] -$L004loop_mmx_enter: - add bl,cl - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm0 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,8 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,16 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,24 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,32 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,40 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - add bl,cl - psllq mm1,48 - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - inc eax - add edx,ecx - movzx eax,al - movzx edx,dl - pxor mm2,mm1 - mov ecx,DWORD PTR [eax*4+edi] - movd mm1,DWORD PTR [edx*4+edi] - mov edx,ebx - xor ebx,ebx - mov bl,dl - cmp esi,DWORD PTR [edi-4] - lea esi,DWORD PTR 8[esi] - jb $L005loop_mmx - psllq mm1,56 - pxor mm2,mm1 - movq QWORD PTR [esi*1+ebp-8],mm2 - emms - cmp esi,DWORD PTR 24[esp] - je $L006done - jmp $L002loop1 -ALIGN 16 -$L003go4loop4: - lea edx,DWORD PTR [edx*1+esi-4] - mov DWORD PTR 28[esp],edx -$L007loop4: - add bl,cl - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - add edx,ecx - inc al - and edx,255 - mov ecx,DWORD PTR [eax*4+edi] - mov ebp,DWORD PTR [edx*4+edi] - add bl,cl - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - add edx,ecx - inc al - and edx,255 - ror ebp,8 - mov ecx,DWORD PTR [eax*4+edi] - or ebp,DWORD PTR [edx*4+edi] - add bl,cl - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - add edx,ecx - inc al - and edx,255 - ror ebp,8 - mov ecx,DWORD PTR [eax*4+edi] - or ebp,DWORD PTR [edx*4+edi] - add bl,cl - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - add edx,ecx - inc al - and edx,255 - ror ebp,8 - mov ecx,DWORD PTR 32[esp] - or ebp,DWORD PTR [edx*4+edi] - ror ebp,8 - xor ebp,DWORD PTR [esi] - cmp esi,DWORD PTR 28[esp] - mov DWORD PTR [esi*1+ecx],ebp - lea esi,DWORD PTR 4[esi] - mov ecx,DWORD PTR [eax*4+edi] - jb $L007loop4 - cmp esi,DWORD PTR 24[esp] - je $L006done - mov ebp,DWORD PTR 32[esp] -ALIGN 16 -$L002loop1: - add bl,cl - mov edx,DWORD PTR [ebx*4+edi] - mov DWORD PTR [ebx*4+edi],ecx - mov DWORD PTR [eax*4+edi],edx - add edx,ecx - inc al - and edx,255 - mov edx,DWORD PTR [edx*4+edi] - xor dl,BYTE PTR [esi] - lea esi,DWORD PTR 1[esi] - mov ecx,DWORD PTR [eax*4+edi] - cmp esi,DWORD PTR 24[esp] - mov BYTE PTR [esi*1+ebp-1],dl - jb $L002loop1 - jmp $L006done -ALIGN 16 -$L001RC4_CHAR: - movzx ecx,BYTE PTR [eax*1+edi] -$L008cloop1: - add bl,cl - movzx edx,BYTE PTR [ebx*1+edi] - mov BYTE PTR [ebx*1+edi],cl - mov BYTE PTR [eax*1+edi],dl - add dl,cl - movzx edx,BYTE PTR [edx*1+edi] - add al,1 - xor dl,BYTE PTR [esi] - lea esi,DWORD PTR 1[esi] - movzx ecx,BYTE PTR [eax*1+edi] - cmp esi,DWORD PTR 24[esp] - mov BYTE PTR [esi*1+ebp-1],dl - jb $L008cloop1 -$L006done: - dec al - mov DWORD PTR [edi-4],ebx - mov BYTE PTR [edi-8],al -$L000abort: - pop edi - pop esi - pop ebx - pop ebp - ret -_RC4 ENDP -ALIGN 16 -_RC4_set_key PROC PUBLIC -$L_RC4_set_key_begin:: - push ebp - push ebx - push esi - push edi - mov edi,DWORD PTR 20[esp] - mov ebp,DWORD PTR 24[esp] - mov esi,DWORD PTR 28[esp] - lea edx,DWORD PTR _OPENSSL_ia32cap_P - lea edi,DWORD PTR 8[edi] - lea esi,DWORD PTR [ebp*1+esi] - neg ebp - xor eax,eax - mov DWORD PTR [edi-4],ebp - bt DWORD PTR [edx],20 - jc $L009c1stloop -ALIGN 16 -$L010w1stloop: - mov DWORD PTR [eax*4+edi],eax - add al,1 - jnc $L010w1stloop - xor ecx,ecx - xor edx,edx -ALIGN 16 -$L011w2ndloop: - mov eax,DWORD PTR [ecx*4+edi] - add dl,BYTE PTR [ebp*1+esi] - add dl,al - add ebp,1 - mov ebx,DWORD PTR [edx*4+edi] - jnz $L012wnowrap - mov ebp,DWORD PTR [edi-4] -$L012wnowrap: - mov DWORD PTR [edx*4+edi],eax - mov DWORD PTR [ecx*4+edi],ebx - add cl,1 - jnc $L011w2ndloop - jmp $L013exit -ALIGN 16 -$L009c1stloop: - mov BYTE PTR [eax*1+edi],al - add al,1 - jnc $L009c1stloop - xor ecx,ecx - xor edx,edx - xor ebx,ebx -ALIGN 16 -$L014c2ndloop: - mov al,BYTE PTR [ecx*1+edi] - add dl,BYTE PTR [ebp*1+esi] - add dl,al - add ebp,1 - mov bl,BYTE PTR [edx*1+edi] - jnz $L015cnowrap - mov ebp,DWORD PTR [edi-4] -$L015cnowrap: - mov BYTE PTR [edx*1+edi],al - mov BYTE PTR [ecx*1+edi],bl - add cl,1 - jnc $L014c2ndloop - mov DWORD PTR 256[edi],-1 -$L013exit: - xor eax,eax - mov DWORD PTR [edi-8],eax - mov DWORD PTR [edi-4],eax - pop edi - pop esi - pop ebx - pop ebp - ret -_RC4_set_key ENDP -ALIGN 16 -_RC4_options PROC PUBLIC -$L_RC4_options_begin:: - call $L016pic_point -$L016pic_point: - pop eax - lea eax,DWORD PTR ($L017opts-$L016pic_point)[eax] - lea edx,DWORD PTR _OPENSSL_ia32cap_P - mov edx,DWORD PTR [edx] - bt edx,20 - jc $L0181xchar - bt edx,26 - jnc $L019ret - add eax,25 - ret -$L0181xchar: - add eax,12 -$L019ret: - ret -ALIGN 64 -$L017opts: -DB 114,99,52,40,52,120,44,105,110,116,41,0 -DB 114,99,52,40,49,120,44,99,104,97,114,41,0 -DB 114,99,52,40,56,120,44,109,109,120,41,0 -DB 82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89 -DB 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 -DB 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -ALIGN 64 -_RC4_options ENDP -.text$ ENDS -.bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:DWORD:4 -.bss ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +;EXTERN _OPENSSL_ia32cap_P:NEAR +ALIGN 16 +_RC4 PROC PUBLIC +$L_RC4_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov edx,DWORD PTR 24[esp] + mov esi,DWORD PTR 28[esp] + mov ebp,DWORD PTR 32[esp] + xor eax,eax + xor ebx,ebx + cmp edx,0 + je $L000abort + mov al,BYTE PTR [edi] + mov bl,BYTE PTR 4[edi] + add edi,8 + lea ecx,DWORD PTR [edx*1+esi] + sub ebp,esi + mov DWORD PTR 24[esp],ecx + inc al + cmp DWORD PTR 256[edi],-1 + je $L001RC4_CHAR + mov ecx,DWORD PTR [eax*4+edi] + and edx,-4 + jz $L002loop1 + mov DWORD PTR 32[esp],ebp + test edx,-8 + jz $L003go4loop4 + lea ebp,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [ebp],26 + jnc $L003go4loop4 + mov ebp,DWORD PTR 32[esp] + and edx,-8 + lea edx,DWORD PTR [edx*1+esi-8] + mov DWORD PTR [edi-4],edx + add bl,cl + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + inc eax + add edx,ecx + movzx eax,al + movzx edx,dl + movq mm0,QWORD PTR [esi] + mov ecx,DWORD PTR [eax*4+edi] + movd mm2,DWORD PTR [edx*4+edi] + jmp $L004loop_mmx_enter +ALIGN 16 +$L005loop_mmx: + add bl,cl + psllq mm1,56 + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + inc eax + add edx,ecx + movzx eax,al + movzx edx,dl + pxor mm2,mm1 + movq mm0,QWORD PTR [esi] + movq QWORD PTR [esi*1+ebp-8],mm2 + mov ecx,DWORD PTR [eax*4+edi] + movd mm2,DWORD PTR [edx*4+edi] +$L004loop_mmx_enter: + add bl,cl + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + inc eax + add edx,ecx + movzx eax,al + movzx edx,dl + pxor mm2,mm0 + mov ecx,DWORD PTR [eax*4+edi] + movd mm1,DWORD PTR [edx*4+edi] + add bl,cl + psllq mm1,8 + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + inc eax + add edx,ecx + movzx eax,al + movzx edx,dl + pxor mm2,mm1 + mov ecx,DWORD PTR [eax*4+edi] + movd mm1,DWORD PTR [edx*4+edi] + add bl,cl + psllq mm1,16 + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + inc eax + add edx,ecx + movzx eax,al + movzx edx,dl + pxor mm2,mm1 + mov ecx,DWORD PTR [eax*4+edi] + movd mm1,DWORD PTR [edx*4+edi] + add bl,cl + psllq mm1,24 + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + inc eax + add edx,ecx + movzx eax,al + movzx edx,dl + pxor mm2,mm1 + mov ecx,DWORD PTR [eax*4+edi] + movd mm1,DWORD PTR [edx*4+edi] + add bl,cl + psllq mm1,32 + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + inc eax + add edx,ecx + movzx eax,al + movzx edx,dl + pxor mm2,mm1 + mov ecx,DWORD PTR [eax*4+edi] + movd mm1,DWORD PTR [edx*4+edi] + add bl,cl + psllq mm1,40 + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + inc eax + add edx,ecx + movzx eax,al + movzx edx,dl + pxor mm2,mm1 + mov ecx,DWORD PTR [eax*4+edi] + movd mm1,DWORD PTR [edx*4+edi] + add bl,cl + psllq mm1,48 + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + inc eax + add edx,ecx + movzx eax,al + movzx edx,dl + pxor mm2,mm1 + mov ecx,DWORD PTR [eax*4+edi] + movd mm1,DWORD PTR [edx*4+edi] + mov edx,ebx + xor ebx,ebx + mov bl,dl + cmp esi,DWORD PTR [edi-4] + lea esi,DWORD PTR 8[esi] + jb $L005loop_mmx + psllq mm1,56 + pxor mm2,mm1 + movq QWORD PTR [esi*1+ebp-8],mm2 + emms + cmp esi,DWORD PTR 24[esp] + je $L006done + jmp $L002loop1 +ALIGN 16 +$L003go4loop4: + lea edx,DWORD PTR [edx*1+esi-4] + mov DWORD PTR 28[esp],edx +$L007loop4: + add bl,cl + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + add edx,ecx + inc al + and edx,255 + mov ecx,DWORD PTR [eax*4+edi] + mov ebp,DWORD PTR [edx*4+edi] + add bl,cl + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + add edx,ecx + inc al + and edx,255 + ror ebp,8 + mov ecx,DWORD PTR [eax*4+edi] + or ebp,DWORD PTR [edx*4+edi] + add bl,cl + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + add edx,ecx + inc al + and edx,255 + ror ebp,8 + mov ecx,DWORD PTR [eax*4+edi] + or ebp,DWORD PTR [edx*4+edi] + add bl,cl + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + add edx,ecx + inc al + and edx,255 + ror ebp,8 + mov ecx,DWORD PTR 32[esp] + or ebp,DWORD PTR [edx*4+edi] + ror ebp,8 + xor ebp,DWORD PTR [esi] + cmp esi,DWORD PTR 28[esp] + mov DWORD PTR [esi*1+ecx],ebp + lea esi,DWORD PTR 4[esi] + mov ecx,DWORD PTR [eax*4+edi] + jb $L007loop4 + cmp esi,DWORD PTR 24[esp] + je $L006done + mov ebp,DWORD PTR 32[esp] +ALIGN 16 +$L002loop1: + add bl,cl + mov edx,DWORD PTR [ebx*4+edi] + mov DWORD PTR [ebx*4+edi],ecx + mov DWORD PTR [eax*4+edi],edx + add edx,ecx + inc al + and edx,255 + mov edx,DWORD PTR [edx*4+edi] + xor dl,BYTE PTR [esi] + lea esi,DWORD PTR 1[esi] + mov ecx,DWORD PTR [eax*4+edi] + cmp esi,DWORD PTR 24[esp] + mov BYTE PTR [esi*1+ebp-1],dl + jb $L002loop1 + jmp $L006done +ALIGN 16 +$L001RC4_CHAR: + movzx ecx,BYTE PTR [eax*1+edi] +$L008cloop1: + add bl,cl + movzx edx,BYTE PTR [ebx*1+edi] + mov BYTE PTR [ebx*1+edi],cl + mov BYTE PTR [eax*1+edi],dl + add dl,cl + movzx edx,BYTE PTR [edx*1+edi] + add al,1 + xor dl,BYTE PTR [esi] + lea esi,DWORD PTR 1[esi] + movzx ecx,BYTE PTR [eax*1+edi] + cmp esi,DWORD PTR 24[esp] + mov BYTE PTR [esi*1+ebp-1],dl + jb $L008cloop1 +$L006done: + dec al + mov DWORD PTR [edi-4],ebx + mov BYTE PTR [edi-8],al +$L000abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_RC4 ENDP +ALIGN 16 +_RC4_set_key PROC PUBLIC +$L_RC4_set_key_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov ebp,DWORD PTR 24[esp] + mov esi,DWORD PTR 28[esp] + lea edx,DWORD PTR _OPENSSL_ia32cap_P + lea edi,DWORD PTR 8[edi] + lea esi,DWORD PTR [ebp*1+esi] + neg ebp + xor eax,eax + mov DWORD PTR [edi-4],ebp + bt DWORD PTR [edx],20 + jc $L009c1stloop +ALIGN 16 +$L010w1stloop: + mov DWORD PTR [eax*4+edi],eax + add al,1 + jnc $L010w1stloop + xor ecx,ecx + xor edx,edx +ALIGN 16 +$L011w2ndloop: + mov eax,DWORD PTR [ecx*4+edi] + add dl,BYTE PTR [ebp*1+esi] + add dl,al + add ebp,1 + mov ebx,DWORD PTR [edx*4+edi] + jnz $L012wnowrap + mov ebp,DWORD PTR [edi-4] +$L012wnowrap: + mov DWORD PTR [edx*4+edi],eax + mov DWORD PTR [ecx*4+edi],ebx + add cl,1 + jnc $L011w2ndloop + jmp $L013exit +ALIGN 16 +$L009c1stloop: + mov BYTE PTR [eax*1+edi],al + add al,1 + jnc $L009c1stloop + xor ecx,ecx + xor edx,edx + xor ebx,ebx +ALIGN 16 +$L014c2ndloop: + mov al,BYTE PTR [ecx*1+edi] + add dl,BYTE PTR [ebp*1+esi] + add dl,al + add ebp,1 + mov bl,BYTE PTR [edx*1+edi] + jnz $L015cnowrap + mov ebp,DWORD PTR [edi-4] +$L015cnowrap: + mov BYTE PTR [edx*1+edi],al + mov BYTE PTR [ecx*1+edi],bl + add cl,1 + jnc $L014c2ndloop + mov DWORD PTR 256[edi],-1 +$L013exit: + xor eax,eax + mov DWORD PTR [edi-8],eax + mov DWORD PTR [edi-4],eax + pop edi + pop esi + pop ebx + pop ebp + ret +_RC4_set_key ENDP +ALIGN 16 +_RC4_options PROC PUBLIC +$L_RC4_options_begin:: + call $L016pic_point +$L016pic_point: + pop eax + lea eax,DWORD PTR ($L017opts-$L016pic_point)[eax] + lea edx,DWORD PTR _OPENSSL_ia32cap_P + mov edx,DWORD PTR [edx] + bt edx,20 + jc $L0181xchar + bt edx,26 + jnc $L019ret + add eax,25 + ret +$L0181xchar: + add eax,12 +$L019ret: + ret +ALIGN 64 +$L017opts: +DB 114,99,52,40,52,120,44,105,110,116,41,0 +DB 114,99,52,40,49,120,44,99,104,97,114,41,0 +DB 114,99,52,40,56,120,44,109,109,120,41,0 +DB 82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89 +DB 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 +DB 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +ALIGN 64 +_RC4_options ENDP +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/sha/sha1-586.masm b/contrib/libs/openssl/asm/windows/crypto/sha/sha1-586.masm index 0a96e04b7c..6970eab063 100644 --- a/contrib/libs/openssl/asm/windows/crypto/sha/sha1-586.masm +++ b/contrib/libs/openssl/asm/windows/crypto/sha/sha1-586.masm @@ -1,3986 +1,3986 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -;EXTERN _OPENSSL_ia32cap_P:NEAR -ALIGN 16 -_sha1_block_data_order PROC PUBLIC -$L_sha1_block_data_order_begin:: - push ebp - push ebx - push esi - push edi - call $L000pic_point -$L000pic_point: - pop ebp - lea esi,DWORD PTR _OPENSSL_ia32cap_P - lea ebp,DWORD PTR ($LK_XX_XX-$L000pic_point)[ebp] - mov eax,DWORD PTR [esi] - mov edx,DWORD PTR 4[esi] - test edx,512 - jz $L001x86 - mov ecx,DWORD PTR 8[esi] - test eax,16777216 - jz $L001x86 - test ecx,536870912 - jnz $Lshaext_shortcut - and edx,268435456 - and eax,1073741824 - or eax,edx - cmp eax,1342177280 - je $Lavx_shortcut - jmp $Lssse3_shortcut -ALIGN 16 -$L001x86: - mov ebp,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - sub esp,76 - shl eax,6 - add eax,esi - mov DWORD PTR 104[esp],eax - mov edi,DWORD PTR 16[ebp] - jmp $L002loop -ALIGN 16 -$L002loop: - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edx,DWORD PTR 12[esi] - bswap eax - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],ebx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],edx - mov eax,DWORD PTR 16[esi] - mov ebx,DWORD PTR 20[esi] - mov ecx,DWORD PTR 24[esi] - mov edx,DWORD PTR 28[esi] - bswap eax - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR 16[esp],eax - mov DWORD PTR 20[esp],ebx - mov DWORD PTR 24[esp],ecx - mov DWORD PTR 28[esp],edx - mov eax,DWORD PTR 32[esi] - mov ebx,DWORD PTR 36[esi] - mov ecx,DWORD PTR 40[esi] - mov edx,DWORD PTR 44[esi] - bswap eax - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR 32[esp],eax - mov DWORD PTR 36[esp],ebx - mov DWORD PTR 40[esp],ecx - mov DWORD PTR 44[esp],edx - mov eax,DWORD PTR 48[esi] - mov ebx,DWORD PTR 52[esi] - mov ecx,DWORD PTR 56[esi] - mov edx,DWORD PTR 60[esi] - bswap eax - bswap ebx - bswap ecx - bswap edx - mov DWORD PTR 48[esp],eax - mov DWORD PTR 52[esp],ebx - mov DWORD PTR 56[esp],ecx - mov DWORD PTR 60[esp],edx - mov DWORD PTR 100[esp],esi - mov eax,DWORD PTR [ebp] - mov ebx,DWORD PTR 4[ebp] - mov ecx,DWORD PTR 8[ebp] - mov edx,DWORD PTR 12[ebp] - ; 00_15 0 - mov esi,ecx - mov ebp,eax - rol ebp,5 - xor esi,edx - add ebp,edi - mov edi,DWORD PTR [esp] - and esi,ebx - ror ebx,2 - xor esi,edx - lea ebp,DWORD PTR 1518500249[edi*1+ebp] - add ebp,esi - ; 00_15 1 - mov edi,ebx - mov esi,ebp - rol ebp,5 - xor edi,ecx - add ebp,edx - mov edx,DWORD PTR 4[esp] - and edi,eax - ror eax,2 - xor edi,ecx - lea ebp,DWORD PTR 1518500249[edx*1+ebp] - add ebp,edi - ; 00_15 2 - mov edx,eax - mov edi,ebp - rol ebp,5 - xor edx,ebx - add ebp,ecx - mov ecx,DWORD PTR 8[esp] - and edx,esi - ror esi,2 - xor edx,ebx - lea ebp,DWORD PTR 1518500249[ecx*1+ebp] - add ebp,edx - ; 00_15 3 - mov ecx,esi - mov edx,ebp - rol ebp,5 - xor ecx,eax - add ebp,ebx - mov ebx,DWORD PTR 12[esp] - and ecx,edi - ror edi,2 - xor ecx,eax - lea ebp,DWORD PTR 1518500249[ebx*1+ebp] - add ebp,ecx - ; 00_15 4 - mov ebx,edi - mov ecx,ebp - rol ebp,5 - xor ebx,esi - add ebp,eax - mov eax,DWORD PTR 16[esp] - and ebx,edx - ror edx,2 - xor ebx,esi - lea ebp,DWORD PTR 1518500249[eax*1+ebp] - add ebp,ebx - ; 00_15 5 - mov eax,edx - mov ebx,ebp - rol ebp,5 - xor eax,edi - add ebp,esi - mov esi,DWORD PTR 20[esp] - and eax,ecx - ror ecx,2 - xor eax,edi - lea ebp,DWORD PTR 1518500249[esi*1+ebp] - add ebp,eax - ; 00_15 6 - mov esi,ecx - mov eax,ebp - rol ebp,5 - xor esi,edx - add ebp,edi - mov edi,DWORD PTR 24[esp] - and esi,ebx - ror ebx,2 - xor esi,edx - lea ebp,DWORD PTR 1518500249[edi*1+ebp] - add ebp,esi - ; 00_15 7 - mov edi,ebx - mov esi,ebp - rol ebp,5 - xor edi,ecx - add ebp,edx - mov edx,DWORD PTR 28[esp] - and edi,eax - ror eax,2 - xor edi,ecx - lea ebp,DWORD PTR 1518500249[edx*1+ebp] - add ebp,edi - ; 00_15 8 - mov edx,eax - mov edi,ebp - rol ebp,5 - xor edx,ebx - add ebp,ecx - mov ecx,DWORD PTR 32[esp] - and edx,esi - ror esi,2 - xor edx,ebx - lea ebp,DWORD PTR 1518500249[ecx*1+ebp] - add ebp,edx - ; 00_15 9 - mov ecx,esi - mov edx,ebp - rol ebp,5 - xor ecx,eax - add ebp,ebx - mov ebx,DWORD PTR 36[esp] - and ecx,edi - ror edi,2 - xor ecx,eax - lea ebp,DWORD PTR 1518500249[ebx*1+ebp] - add ebp,ecx - ; 00_15 10 - mov ebx,edi - mov ecx,ebp - rol ebp,5 - xor ebx,esi - add ebp,eax - mov eax,DWORD PTR 40[esp] - and ebx,edx - ror edx,2 - xor ebx,esi - lea ebp,DWORD PTR 1518500249[eax*1+ebp] - add ebp,ebx - ; 00_15 11 - mov eax,edx - mov ebx,ebp - rol ebp,5 - xor eax,edi - add ebp,esi - mov esi,DWORD PTR 44[esp] - and eax,ecx - ror ecx,2 - xor eax,edi - lea ebp,DWORD PTR 1518500249[esi*1+ebp] - add ebp,eax - ; 00_15 12 - mov esi,ecx - mov eax,ebp - rol ebp,5 - xor esi,edx - add ebp,edi - mov edi,DWORD PTR 48[esp] - and esi,ebx - ror ebx,2 - xor esi,edx - lea ebp,DWORD PTR 1518500249[edi*1+ebp] - add ebp,esi - ; 00_15 13 - mov edi,ebx - mov esi,ebp - rol ebp,5 - xor edi,ecx - add ebp,edx - mov edx,DWORD PTR 52[esp] - and edi,eax - ror eax,2 - xor edi,ecx - lea ebp,DWORD PTR 1518500249[edx*1+ebp] - add ebp,edi - ; 00_15 14 - mov edx,eax - mov edi,ebp - rol ebp,5 - xor edx,ebx - add ebp,ecx - mov ecx,DWORD PTR 56[esp] - and edx,esi - ror esi,2 - xor edx,ebx - lea ebp,DWORD PTR 1518500249[ecx*1+ebp] - add ebp,edx - ; 00_15 15 - mov ecx,esi - mov edx,ebp - rol ebp,5 - xor ecx,eax - add ebp,ebx - mov ebx,DWORD PTR 60[esp] - and ecx,edi - ror edi,2 - xor ecx,eax - lea ebp,DWORD PTR 1518500249[ebx*1+ebp] - mov ebx,DWORD PTR [esp] - add ecx,ebp - ; 16_19 16 - mov ebp,edi - xor ebx,DWORD PTR 8[esp] - xor ebp,esi - xor ebx,DWORD PTR 32[esp] - and ebp,edx - xor ebx,DWORD PTR 52[esp] - rol ebx,1 - xor ebp,esi - add eax,ebp - mov ebp,ecx - ror edx,2 - mov DWORD PTR [esp],ebx - rol ebp,5 - lea ebx,DWORD PTR 1518500249[eax*1+ebx] - mov eax,DWORD PTR 4[esp] - add ebx,ebp - ; 16_19 17 - mov ebp,edx - xor eax,DWORD PTR 12[esp] - xor ebp,edi - xor eax,DWORD PTR 36[esp] - and ebp,ecx - xor eax,DWORD PTR 56[esp] - rol eax,1 - xor ebp,edi - add esi,ebp - mov ebp,ebx - ror ecx,2 - mov DWORD PTR 4[esp],eax - rol ebp,5 - lea eax,DWORD PTR 1518500249[esi*1+eax] - mov esi,DWORD PTR 8[esp] - add eax,ebp - ; 16_19 18 - mov ebp,ecx - xor esi,DWORD PTR 16[esp] - xor ebp,edx - xor esi,DWORD PTR 40[esp] - and ebp,ebx - xor esi,DWORD PTR 60[esp] - rol esi,1 - xor ebp,edx - add edi,ebp - mov ebp,eax - ror ebx,2 - mov DWORD PTR 8[esp],esi - rol ebp,5 - lea esi,DWORD PTR 1518500249[edi*1+esi] - mov edi,DWORD PTR 12[esp] - add esi,ebp - ; 16_19 19 - mov ebp,ebx - xor edi,DWORD PTR 20[esp] - xor ebp,ecx - xor edi,DWORD PTR 44[esp] - and ebp,eax - xor edi,DWORD PTR [esp] - rol edi,1 - xor ebp,ecx - add edx,ebp - mov ebp,esi - ror eax,2 - mov DWORD PTR 12[esp],edi - rol ebp,5 - lea edi,DWORD PTR 1518500249[edx*1+edi] - mov edx,DWORD PTR 16[esp] - add edi,ebp - ; 20_39 20 - mov ebp,esi - xor edx,DWORD PTR 24[esp] - xor ebp,eax - xor edx,DWORD PTR 48[esp] - xor ebp,ebx - xor edx,DWORD PTR 4[esp] - rol edx,1 - add ecx,ebp - ror esi,2 - mov ebp,edi - rol ebp,5 - mov DWORD PTR 16[esp],edx - lea edx,DWORD PTR 1859775393[ecx*1+edx] - mov ecx,DWORD PTR 20[esp] - add edx,ebp - ; 20_39 21 - mov ebp,edi - xor ecx,DWORD PTR 28[esp] - xor ebp,esi - xor ecx,DWORD PTR 52[esp] - xor ebp,eax - xor ecx,DWORD PTR 8[esp] - rol ecx,1 - add ebx,ebp - ror edi,2 - mov ebp,edx - rol ebp,5 - mov DWORD PTR 20[esp],ecx - lea ecx,DWORD PTR 1859775393[ebx*1+ecx] - mov ebx,DWORD PTR 24[esp] - add ecx,ebp - ; 20_39 22 - mov ebp,edx - xor ebx,DWORD PTR 32[esp] - xor ebp,edi - xor ebx,DWORD PTR 56[esp] - xor ebp,esi - xor ebx,DWORD PTR 12[esp] - rol ebx,1 - add eax,ebp - ror edx,2 - mov ebp,ecx - rol ebp,5 - mov DWORD PTR 24[esp],ebx - lea ebx,DWORD PTR 1859775393[eax*1+ebx] - mov eax,DWORD PTR 28[esp] - add ebx,ebp - ; 20_39 23 - mov ebp,ecx - xor eax,DWORD PTR 36[esp] - xor ebp,edx - xor eax,DWORD PTR 60[esp] - xor ebp,edi - xor eax,DWORD PTR 16[esp] - rol eax,1 - add esi,ebp - ror ecx,2 - mov ebp,ebx - rol ebp,5 - mov DWORD PTR 28[esp],eax - lea eax,DWORD PTR 1859775393[esi*1+eax] - mov esi,DWORD PTR 32[esp] - add eax,ebp - ; 20_39 24 - mov ebp,ebx - xor esi,DWORD PTR 40[esp] - xor ebp,ecx - xor esi,DWORD PTR [esp] - xor ebp,edx - xor esi,DWORD PTR 20[esp] - rol esi,1 - add edi,ebp - ror ebx,2 - mov ebp,eax - rol ebp,5 - mov DWORD PTR 32[esp],esi - lea esi,DWORD PTR 1859775393[edi*1+esi] - mov edi,DWORD PTR 36[esp] - add esi,ebp - ; 20_39 25 - mov ebp,eax - xor edi,DWORD PTR 44[esp] - xor ebp,ebx - xor edi,DWORD PTR 4[esp] - xor ebp,ecx - xor edi,DWORD PTR 24[esp] - rol edi,1 - add edx,ebp - ror eax,2 - mov ebp,esi - rol ebp,5 - mov DWORD PTR 36[esp],edi - lea edi,DWORD PTR 1859775393[edx*1+edi] - mov edx,DWORD PTR 40[esp] - add edi,ebp - ; 20_39 26 - mov ebp,esi - xor edx,DWORD PTR 48[esp] - xor ebp,eax - xor edx,DWORD PTR 8[esp] - xor ebp,ebx - xor edx,DWORD PTR 28[esp] - rol edx,1 - add ecx,ebp - ror esi,2 - mov ebp,edi - rol ebp,5 - mov DWORD PTR 40[esp],edx - lea edx,DWORD PTR 1859775393[ecx*1+edx] - mov ecx,DWORD PTR 44[esp] - add edx,ebp - ; 20_39 27 - mov ebp,edi - xor ecx,DWORD PTR 52[esp] - xor ebp,esi - xor ecx,DWORD PTR 12[esp] - xor ebp,eax - xor ecx,DWORD PTR 32[esp] - rol ecx,1 - add ebx,ebp - ror edi,2 - mov ebp,edx - rol ebp,5 - mov DWORD PTR 44[esp],ecx - lea ecx,DWORD PTR 1859775393[ebx*1+ecx] - mov ebx,DWORD PTR 48[esp] - add ecx,ebp - ; 20_39 28 - mov ebp,edx - xor ebx,DWORD PTR 56[esp] - xor ebp,edi - xor ebx,DWORD PTR 16[esp] - xor ebp,esi - xor ebx,DWORD PTR 36[esp] - rol ebx,1 - add eax,ebp - ror edx,2 - mov ebp,ecx - rol ebp,5 - mov DWORD PTR 48[esp],ebx - lea ebx,DWORD PTR 1859775393[eax*1+ebx] - mov eax,DWORD PTR 52[esp] - add ebx,ebp - ; 20_39 29 - mov ebp,ecx - xor eax,DWORD PTR 60[esp] - xor ebp,edx - xor eax,DWORD PTR 20[esp] - xor ebp,edi - xor eax,DWORD PTR 40[esp] - rol eax,1 - add esi,ebp - ror ecx,2 - mov ebp,ebx - rol ebp,5 - mov DWORD PTR 52[esp],eax - lea eax,DWORD PTR 1859775393[esi*1+eax] - mov esi,DWORD PTR 56[esp] - add eax,ebp - ; 20_39 30 - mov ebp,ebx - xor esi,DWORD PTR [esp] - xor ebp,ecx - xor esi,DWORD PTR 24[esp] - xor ebp,edx - xor esi,DWORD PTR 44[esp] - rol esi,1 - add edi,ebp - ror ebx,2 - mov ebp,eax - rol ebp,5 - mov DWORD PTR 56[esp],esi - lea esi,DWORD PTR 1859775393[edi*1+esi] - mov edi,DWORD PTR 60[esp] - add esi,ebp - ; 20_39 31 - mov ebp,eax - xor edi,DWORD PTR 4[esp] - xor ebp,ebx - xor edi,DWORD PTR 28[esp] - xor ebp,ecx - xor edi,DWORD PTR 48[esp] - rol edi,1 - add edx,ebp - ror eax,2 - mov ebp,esi - rol ebp,5 - mov DWORD PTR 60[esp],edi - lea edi,DWORD PTR 1859775393[edx*1+edi] - mov edx,DWORD PTR [esp] - add edi,ebp - ; 20_39 32 - mov ebp,esi - xor edx,DWORD PTR 8[esp] - xor ebp,eax - xor edx,DWORD PTR 32[esp] - xor ebp,ebx - xor edx,DWORD PTR 52[esp] - rol edx,1 - add ecx,ebp - ror esi,2 - mov ebp,edi - rol ebp,5 - mov DWORD PTR [esp],edx - lea edx,DWORD PTR 1859775393[ecx*1+edx] - mov ecx,DWORD PTR 4[esp] - add edx,ebp - ; 20_39 33 - mov ebp,edi - xor ecx,DWORD PTR 12[esp] - xor ebp,esi - xor ecx,DWORD PTR 36[esp] - xor ebp,eax - xor ecx,DWORD PTR 56[esp] - rol ecx,1 - add ebx,ebp - ror edi,2 - mov ebp,edx - rol ebp,5 - mov DWORD PTR 4[esp],ecx - lea ecx,DWORD PTR 1859775393[ebx*1+ecx] - mov ebx,DWORD PTR 8[esp] - add ecx,ebp - ; 20_39 34 - mov ebp,edx - xor ebx,DWORD PTR 16[esp] - xor ebp,edi - xor ebx,DWORD PTR 40[esp] - xor ebp,esi - xor ebx,DWORD PTR 60[esp] - rol ebx,1 - add eax,ebp - ror edx,2 - mov ebp,ecx - rol ebp,5 - mov DWORD PTR 8[esp],ebx - lea ebx,DWORD PTR 1859775393[eax*1+ebx] - mov eax,DWORD PTR 12[esp] - add ebx,ebp - ; 20_39 35 - mov ebp,ecx - xor eax,DWORD PTR 20[esp] - xor ebp,edx - xor eax,DWORD PTR 44[esp] - xor ebp,edi - xor eax,DWORD PTR [esp] - rol eax,1 - add esi,ebp - ror ecx,2 - mov ebp,ebx - rol ebp,5 - mov DWORD PTR 12[esp],eax - lea eax,DWORD PTR 1859775393[esi*1+eax] - mov esi,DWORD PTR 16[esp] - add eax,ebp - ; 20_39 36 - mov ebp,ebx - xor esi,DWORD PTR 24[esp] - xor ebp,ecx - xor esi,DWORD PTR 48[esp] - xor ebp,edx - xor esi,DWORD PTR 4[esp] - rol esi,1 - add edi,ebp - ror ebx,2 - mov ebp,eax - rol ebp,5 - mov DWORD PTR 16[esp],esi - lea esi,DWORD PTR 1859775393[edi*1+esi] - mov edi,DWORD PTR 20[esp] - add esi,ebp - ; 20_39 37 - mov ebp,eax - xor edi,DWORD PTR 28[esp] - xor ebp,ebx - xor edi,DWORD PTR 52[esp] - xor ebp,ecx - xor edi,DWORD PTR 8[esp] - rol edi,1 - add edx,ebp - ror eax,2 - mov ebp,esi - rol ebp,5 - mov DWORD PTR 20[esp],edi - lea edi,DWORD PTR 1859775393[edx*1+edi] - mov edx,DWORD PTR 24[esp] - add edi,ebp - ; 20_39 38 - mov ebp,esi - xor edx,DWORD PTR 32[esp] - xor ebp,eax - xor edx,DWORD PTR 56[esp] - xor ebp,ebx - xor edx,DWORD PTR 12[esp] - rol edx,1 - add ecx,ebp - ror esi,2 - mov ebp,edi - rol ebp,5 - mov DWORD PTR 24[esp],edx - lea edx,DWORD PTR 1859775393[ecx*1+edx] - mov ecx,DWORD PTR 28[esp] - add edx,ebp - ; 20_39 39 - mov ebp,edi - xor ecx,DWORD PTR 36[esp] - xor ebp,esi - xor ecx,DWORD PTR 60[esp] - xor ebp,eax - xor ecx,DWORD PTR 16[esp] - rol ecx,1 - add ebx,ebp - ror edi,2 - mov ebp,edx - rol ebp,5 - mov DWORD PTR 28[esp],ecx - lea ecx,DWORD PTR 1859775393[ebx*1+ecx] - mov ebx,DWORD PTR 32[esp] - add ecx,ebp - ; 40_59 40 - mov ebp,edi - xor ebx,DWORD PTR 40[esp] - xor ebp,esi - xor ebx,DWORD PTR [esp] - and ebp,edx - xor ebx,DWORD PTR 20[esp] - rol ebx,1 - add ebp,eax - ror edx,2 - mov eax,ecx - rol eax,5 - mov DWORD PTR 32[esp],ebx - lea ebx,DWORD PTR 2400959708[ebp*1+ebx] - mov ebp,edi - add ebx,eax - and ebp,esi - mov eax,DWORD PTR 36[esp] - add ebx,ebp - ; 40_59 41 - mov ebp,edx - xor eax,DWORD PTR 44[esp] - xor ebp,edi - xor eax,DWORD PTR 4[esp] - and ebp,ecx - xor eax,DWORD PTR 24[esp] - rol eax,1 - add ebp,esi - ror ecx,2 - mov esi,ebx - rol esi,5 - mov DWORD PTR 36[esp],eax - lea eax,DWORD PTR 2400959708[ebp*1+eax] - mov ebp,edx - add eax,esi - and ebp,edi - mov esi,DWORD PTR 40[esp] - add eax,ebp - ; 40_59 42 - mov ebp,ecx - xor esi,DWORD PTR 48[esp] - xor ebp,edx - xor esi,DWORD PTR 8[esp] - and ebp,ebx - xor esi,DWORD PTR 28[esp] - rol esi,1 - add ebp,edi - ror ebx,2 - mov edi,eax - rol edi,5 - mov DWORD PTR 40[esp],esi - lea esi,DWORD PTR 2400959708[ebp*1+esi] - mov ebp,ecx - add esi,edi - and ebp,edx - mov edi,DWORD PTR 44[esp] - add esi,ebp - ; 40_59 43 - mov ebp,ebx - xor edi,DWORD PTR 52[esp] - xor ebp,ecx - xor edi,DWORD PTR 12[esp] - and ebp,eax - xor edi,DWORD PTR 32[esp] - rol edi,1 - add ebp,edx - ror eax,2 - mov edx,esi - rol edx,5 - mov DWORD PTR 44[esp],edi - lea edi,DWORD PTR 2400959708[ebp*1+edi] - mov ebp,ebx - add edi,edx - and ebp,ecx - mov edx,DWORD PTR 48[esp] - add edi,ebp - ; 40_59 44 - mov ebp,eax - xor edx,DWORD PTR 56[esp] - xor ebp,ebx - xor edx,DWORD PTR 16[esp] - and ebp,esi - xor edx,DWORD PTR 36[esp] - rol edx,1 - add ebp,ecx - ror esi,2 - mov ecx,edi - rol ecx,5 - mov DWORD PTR 48[esp],edx - lea edx,DWORD PTR 2400959708[ebp*1+edx] - mov ebp,eax - add edx,ecx - and ebp,ebx - mov ecx,DWORD PTR 52[esp] - add edx,ebp - ; 40_59 45 - mov ebp,esi - xor ecx,DWORD PTR 60[esp] - xor ebp,eax - xor ecx,DWORD PTR 20[esp] - and ebp,edi - xor ecx,DWORD PTR 40[esp] - rol ecx,1 - add ebp,ebx - ror edi,2 - mov ebx,edx - rol ebx,5 - mov DWORD PTR 52[esp],ecx - lea ecx,DWORD PTR 2400959708[ebp*1+ecx] - mov ebp,esi - add ecx,ebx - and ebp,eax - mov ebx,DWORD PTR 56[esp] - add ecx,ebp - ; 40_59 46 - mov ebp,edi - xor ebx,DWORD PTR [esp] - xor ebp,esi - xor ebx,DWORD PTR 24[esp] - and ebp,edx - xor ebx,DWORD PTR 44[esp] - rol ebx,1 - add ebp,eax - ror edx,2 - mov eax,ecx - rol eax,5 - mov DWORD PTR 56[esp],ebx - lea ebx,DWORD PTR 2400959708[ebp*1+ebx] - mov ebp,edi - add ebx,eax - and ebp,esi - mov eax,DWORD PTR 60[esp] - add ebx,ebp - ; 40_59 47 - mov ebp,edx - xor eax,DWORD PTR 4[esp] - xor ebp,edi - xor eax,DWORD PTR 28[esp] - and ebp,ecx - xor eax,DWORD PTR 48[esp] - rol eax,1 - add ebp,esi - ror ecx,2 - mov esi,ebx - rol esi,5 - mov DWORD PTR 60[esp],eax - lea eax,DWORD PTR 2400959708[ebp*1+eax] - mov ebp,edx - add eax,esi - and ebp,edi - mov esi,DWORD PTR [esp] - add eax,ebp - ; 40_59 48 - mov ebp,ecx - xor esi,DWORD PTR 8[esp] - xor ebp,edx - xor esi,DWORD PTR 32[esp] - and ebp,ebx - xor esi,DWORD PTR 52[esp] - rol esi,1 - add ebp,edi - ror ebx,2 - mov edi,eax - rol edi,5 - mov DWORD PTR [esp],esi - lea esi,DWORD PTR 2400959708[ebp*1+esi] - mov ebp,ecx - add esi,edi - and ebp,edx - mov edi,DWORD PTR 4[esp] - add esi,ebp - ; 40_59 49 - mov ebp,ebx - xor edi,DWORD PTR 12[esp] - xor ebp,ecx - xor edi,DWORD PTR 36[esp] - and ebp,eax - xor edi,DWORD PTR 56[esp] - rol edi,1 - add ebp,edx - ror eax,2 - mov edx,esi - rol edx,5 - mov DWORD PTR 4[esp],edi - lea edi,DWORD PTR 2400959708[ebp*1+edi] - mov ebp,ebx - add edi,edx - and ebp,ecx - mov edx,DWORD PTR 8[esp] - add edi,ebp - ; 40_59 50 - mov ebp,eax - xor edx,DWORD PTR 16[esp] - xor ebp,ebx - xor edx,DWORD PTR 40[esp] - and ebp,esi - xor edx,DWORD PTR 60[esp] - rol edx,1 - add ebp,ecx - ror esi,2 - mov ecx,edi - rol ecx,5 - mov DWORD PTR 8[esp],edx - lea edx,DWORD PTR 2400959708[ebp*1+edx] - mov ebp,eax - add edx,ecx - and ebp,ebx - mov ecx,DWORD PTR 12[esp] - add edx,ebp - ; 40_59 51 - mov ebp,esi - xor ecx,DWORD PTR 20[esp] - xor ebp,eax - xor ecx,DWORD PTR 44[esp] - and ebp,edi - xor ecx,DWORD PTR [esp] - rol ecx,1 - add ebp,ebx - ror edi,2 - mov ebx,edx - rol ebx,5 - mov DWORD PTR 12[esp],ecx - lea ecx,DWORD PTR 2400959708[ebp*1+ecx] - mov ebp,esi - add ecx,ebx - and ebp,eax - mov ebx,DWORD PTR 16[esp] - add ecx,ebp - ; 40_59 52 - mov ebp,edi - xor ebx,DWORD PTR 24[esp] - xor ebp,esi - xor ebx,DWORD PTR 48[esp] - and ebp,edx - xor ebx,DWORD PTR 4[esp] - rol ebx,1 - add ebp,eax - ror edx,2 - mov eax,ecx - rol eax,5 - mov DWORD PTR 16[esp],ebx - lea ebx,DWORD PTR 2400959708[ebp*1+ebx] - mov ebp,edi - add ebx,eax - and ebp,esi - mov eax,DWORD PTR 20[esp] - add ebx,ebp - ; 40_59 53 - mov ebp,edx - xor eax,DWORD PTR 28[esp] - xor ebp,edi - xor eax,DWORD PTR 52[esp] - and ebp,ecx - xor eax,DWORD PTR 8[esp] - rol eax,1 - add ebp,esi - ror ecx,2 - mov esi,ebx - rol esi,5 - mov DWORD PTR 20[esp],eax - lea eax,DWORD PTR 2400959708[ebp*1+eax] - mov ebp,edx - add eax,esi - and ebp,edi - mov esi,DWORD PTR 24[esp] - add eax,ebp - ; 40_59 54 - mov ebp,ecx - xor esi,DWORD PTR 32[esp] - xor ebp,edx - xor esi,DWORD PTR 56[esp] - and ebp,ebx - xor esi,DWORD PTR 12[esp] - rol esi,1 - add ebp,edi - ror ebx,2 - mov edi,eax - rol edi,5 - mov DWORD PTR 24[esp],esi - lea esi,DWORD PTR 2400959708[ebp*1+esi] - mov ebp,ecx - add esi,edi - and ebp,edx - mov edi,DWORD PTR 28[esp] - add esi,ebp - ; 40_59 55 - mov ebp,ebx - xor edi,DWORD PTR 36[esp] - xor ebp,ecx - xor edi,DWORD PTR 60[esp] - and ebp,eax - xor edi,DWORD PTR 16[esp] - rol edi,1 - add ebp,edx - ror eax,2 - mov edx,esi - rol edx,5 - mov DWORD PTR 28[esp],edi - lea edi,DWORD PTR 2400959708[ebp*1+edi] - mov ebp,ebx - add edi,edx - and ebp,ecx - mov edx,DWORD PTR 32[esp] - add edi,ebp - ; 40_59 56 - mov ebp,eax - xor edx,DWORD PTR 40[esp] - xor ebp,ebx - xor edx,DWORD PTR [esp] - and ebp,esi - xor edx,DWORD PTR 20[esp] - rol edx,1 - add ebp,ecx - ror esi,2 - mov ecx,edi - rol ecx,5 - mov DWORD PTR 32[esp],edx - lea edx,DWORD PTR 2400959708[ebp*1+edx] - mov ebp,eax - add edx,ecx - and ebp,ebx - mov ecx,DWORD PTR 36[esp] - add edx,ebp - ; 40_59 57 - mov ebp,esi - xor ecx,DWORD PTR 44[esp] - xor ebp,eax - xor ecx,DWORD PTR 4[esp] - and ebp,edi - xor ecx,DWORD PTR 24[esp] - rol ecx,1 - add ebp,ebx - ror edi,2 - mov ebx,edx - rol ebx,5 - mov DWORD PTR 36[esp],ecx - lea ecx,DWORD PTR 2400959708[ebp*1+ecx] - mov ebp,esi - add ecx,ebx - and ebp,eax - mov ebx,DWORD PTR 40[esp] - add ecx,ebp - ; 40_59 58 - mov ebp,edi - xor ebx,DWORD PTR 48[esp] - xor ebp,esi - xor ebx,DWORD PTR 8[esp] - and ebp,edx - xor ebx,DWORD PTR 28[esp] - rol ebx,1 - add ebp,eax - ror edx,2 - mov eax,ecx - rol eax,5 - mov DWORD PTR 40[esp],ebx - lea ebx,DWORD PTR 2400959708[ebp*1+ebx] - mov ebp,edi - add ebx,eax - and ebp,esi - mov eax,DWORD PTR 44[esp] - add ebx,ebp - ; 40_59 59 - mov ebp,edx - xor eax,DWORD PTR 52[esp] - xor ebp,edi - xor eax,DWORD PTR 12[esp] - and ebp,ecx - xor eax,DWORD PTR 32[esp] - rol eax,1 - add ebp,esi - ror ecx,2 - mov esi,ebx - rol esi,5 - mov DWORD PTR 44[esp],eax - lea eax,DWORD PTR 2400959708[ebp*1+eax] - mov ebp,edx - add eax,esi - and ebp,edi - mov esi,DWORD PTR 48[esp] - add eax,ebp - ; 20_39 60 - mov ebp,ebx - xor esi,DWORD PTR 56[esp] - xor ebp,ecx - xor esi,DWORD PTR 16[esp] - xor ebp,edx - xor esi,DWORD PTR 36[esp] - rol esi,1 - add edi,ebp - ror ebx,2 - mov ebp,eax - rol ebp,5 - mov DWORD PTR 48[esp],esi - lea esi,DWORD PTR 3395469782[edi*1+esi] - mov edi,DWORD PTR 52[esp] - add esi,ebp - ; 20_39 61 - mov ebp,eax - xor edi,DWORD PTR 60[esp] - xor ebp,ebx - xor edi,DWORD PTR 20[esp] - xor ebp,ecx - xor edi,DWORD PTR 40[esp] - rol edi,1 - add edx,ebp - ror eax,2 - mov ebp,esi - rol ebp,5 - mov DWORD PTR 52[esp],edi - lea edi,DWORD PTR 3395469782[edx*1+edi] - mov edx,DWORD PTR 56[esp] - add edi,ebp - ; 20_39 62 - mov ebp,esi - xor edx,DWORD PTR [esp] - xor ebp,eax - xor edx,DWORD PTR 24[esp] - xor ebp,ebx - xor edx,DWORD PTR 44[esp] - rol edx,1 - add ecx,ebp - ror esi,2 - mov ebp,edi - rol ebp,5 - mov DWORD PTR 56[esp],edx - lea edx,DWORD PTR 3395469782[ecx*1+edx] - mov ecx,DWORD PTR 60[esp] - add edx,ebp - ; 20_39 63 - mov ebp,edi - xor ecx,DWORD PTR 4[esp] - xor ebp,esi - xor ecx,DWORD PTR 28[esp] - xor ebp,eax - xor ecx,DWORD PTR 48[esp] - rol ecx,1 - add ebx,ebp - ror edi,2 - mov ebp,edx - rol ebp,5 - mov DWORD PTR 60[esp],ecx - lea ecx,DWORD PTR 3395469782[ebx*1+ecx] - mov ebx,DWORD PTR [esp] - add ecx,ebp - ; 20_39 64 - mov ebp,edx - xor ebx,DWORD PTR 8[esp] - xor ebp,edi - xor ebx,DWORD PTR 32[esp] - xor ebp,esi - xor ebx,DWORD PTR 52[esp] - rol ebx,1 - add eax,ebp - ror edx,2 - mov ebp,ecx - rol ebp,5 - mov DWORD PTR [esp],ebx - lea ebx,DWORD PTR 3395469782[eax*1+ebx] - mov eax,DWORD PTR 4[esp] - add ebx,ebp - ; 20_39 65 - mov ebp,ecx - xor eax,DWORD PTR 12[esp] - xor ebp,edx - xor eax,DWORD PTR 36[esp] - xor ebp,edi - xor eax,DWORD PTR 56[esp] - rol eax,1 - add esi,ebp - ror ecx,2 - mov ebp,ebx - rol ebp,5 - mov DWORD PTR 4[esp],eax - lea eax,DWORD PTR 3395469782[esi*1+eax] - mov esi,DWORD PTR 8[esp] - add eax,ebp - ; 20_39 66 - mov ebp,ebx - xor esi,DWORD PTR 16[esp] - xor ebp,ecx - xor esi,DWORD PTR 40[esp] - xor ebp,edx - xor esi,DWORD PTR 60[esp] - rol esi,1 - add edi,ebp - ror ebx,2 - mov ebp,eax - rol ebp,5 - mov DWORD PTR 8[esp],esi - lea esi,DWORD PTR 3395469782[edi*1+esi] - mov edi,DWORD PTR 12[esp] - add esi,ebp - ; 20_39 67 - mov ebp,eax - xor edi,DWORD PTR 20[esp] - xor ebp,ebx - xor edi,DWORD PTR 44[esp] - xor ebp,ecx - xor edi,DWORD PTR [esp] - rol edi,1 - add edx,ebp - ror eax,2 - mov ebp,esi - rol ebp,5 - mov DWORD PTR 12[esp],edi - lea edi,DWORD PTR 3395469782[edx*1+edi] - mov edx,DWORD PTR 16[esp] - add edi,ebp - ; 20_39 68 - mov ebp,esi - xor edx,DWORD PTR 24[esp] - xor ebp,eax - xor edx,DWORD PTR 48[esp] - xor ebp,ebx - xor edx,DWORD PTR 4[esp] - rol edx,1 - add ecx,ebp - ror esi,2 - mov ebp,edi - rol ebp,5 - mov DWORD PTR 16[esp],edx - lea edx,DWORD PTR 3395469782[ecx*1+edx] - mov ecx,DWORD PTR 20[esp] - add edx,ebp - ; 20_39 69 - mov ebp,edi - xor ecx,DWORD PTR 28[esp] - xor ebp,esi - xor ecx,DWORD PTR 52[esp] - xor ebp,eax - xor ecx,DWORD PTR 8[esp] - rol ecx,1 - add ebx,ebp - ror edi,2 - mov ebp,edx - rol ebp,5 - mov DWORD PTR 20[esp],ecx - lea ecx,DWORD PTR 3395469782[ebx*1+ecx] - mov ebx,DWORD PTR 24[esp] - add ecx,ebp - ; 20_39 70 - mov ebp,edx - xor ebx,DWORD PTR 32[esp] - xor ebp,edi - xor ebx,DWORD PTR 56[esp] - xor ebp,esi - xor ebx,DWORD PTR 12[esp] - rol ebx,1 - add eax,ebp - ror edx,2 - mov ebp,ecx - rol ebp,5 - mov DWORD PTR 24[esp],ebx - lea ebx,DWORD PTR 3395469782[eax*1+ebx] - mov eax,DWORD PTR 28[esp] - add ebx,ebp - ; 20_39 71 - mov ebp,ecx - xor eax,DWORD PTR 36[esp] - xor ebp,edx - xor eax,DWORD PTR 60[esp] - xor ebp,edi - xor eax,DWORD PTR 16[esp] - rol eax,1 - add esi,ebp - ror ecx,2 - mov ebp,ebx - rol ebp,5 - mov DWORD PTR 28[esp],eax - lea eax,DWORD PTR 3395469782[esi*1+eax] - mov esi,DWORD PTR 32[esp] - add eax,ebp - ; 20_39 72 - mov ebp,ebx - xor esi,DWORD PTR 40[esp] - xor ebp,ecx - xor esi,DWORD PTR [esp] - xor ebp,edx - xor esi,DWORD PTR 20[esp] - rol esi,1 - add edi,ebp - ror ebx,2 - mov ebp,eax - rol ebp,5 - mov DWORD PTR 32[esp],esi - lea esi,DWORD PTR 3395469782[edi*1+esi] - mov edi,DWORD PTR 36[esp] - add esi,ebp - ; 20_39 73 - mov ebp,eax - xor edi,DWORD PTR 44[esp] - xor ebp,ebx - xor edi,DWORD PTR 4[esp] - xor ebp,ecx - xor edi,DWORD PTR 24[esp] - rol edi,1 - add edx,ebp - ror eax,2 - mov ebp,esi - rol ebp,5 - mov DWORD PTR 36[esp],edi - lea edi,DWORD PTR 3395469782[edx*1+edi] - mov edx,DWORD PTR 40[esp] - add edi,ebp - ; 20_39 74 - mov ebp,esi - xor edx,DWORD PTR 48[esp] - xor ebp,eax - xor edx,DWORD PTR 8[esp] - xor ebp,ebx - xor edx,DWORD PTR 28[esp] - rol edx,1 - add ecx,ebp - ror esi,2 - mov ebp,edi - rol ebp,5 - mov DWORD PTR 40[esp],edx - lea edx,DWORD PTR 3395469782[ecx*1+edx] - mov ecx,DWORD PTR 44[esp] - add edx,ebp - ; 20_39 75 - mov ebp,edi - xor ecx,DWORD PTR 52[esp] - xor ebp,esi - xor ecx,DWORD PTR 12[esp] - xor ebp,eax - xor ecx,DWORD PTR 32[esp] - rol ecx,1 - add ebx,ebp - ror edi,2 - mov ebp,edx - rol ebp,5 - mov DWORD PTR 44[esp],ecx - lea ecx,DWORD PTR 3395469782[ebx*1+ecx] - mov ebx,DWORD PTR 48[esp] - add ecx,ebp - ; 20_39 76 - mov ebp,edx - xor ebx,DWORD PTR 56[esp] - xor ebp,edi - xor ebx,DWORD PTR 16[esp] - xor ebp,esi - xor ebx,DWORD PTR 36[esp] - rol ebx,1 - add eax,ebp - ror edx,2 - mov ebp,ecx - rol ebp,5 - mov DWORD PTR 48[esp],ebx - lea ebx,DWORD PTR 3395469782[eax*1+ebx] - mov eax,DWORD PTR 52[esp] - add ebx,ebp - ; 20_39 77 - mov ebp,ecx - xor eax,DWORD PTR 60[esp] - xor ebp,edx - xor eax,DWORD PTR 20[esp] - xor ebp,edi - xor eax,DWORD PTR 40[esp] - rol eax,1 - add esi,ebp - ror ecx,2 - mov ebp,ebx - rol ebp,5 - lea eax,DWORD PTR 3395469782[esi*1+eax] - mov esi,DWORD PTR 56[esp] - add eax,ebp - ; 20_39 78 - mov ebp,ebx - xor esi,DWORD PTR [esp] - xor ebp,ecx - xor esi,DWORD PTR 24[esp] - xor ebp,edx - xor esi,DWORD PTR 44[esp] - rol esi,1 - add edi,ebp - ror ebx,2 - mov ebp,eax - rol ebp,5 - lea esi,DWORD PTR 3395469782[edi*1+esi] - mov edi,DWORD PTR 60[esp] - add esi,ebp - ; 20_39 79 - mov ebp,eax - xor edi,DWORD PTR 4[esp] - xor ebp,ebx - xor edi,DWORD PTR 28[esp] - xor ebp,ecx - xor edi,DWORD PTR 48[esp] - rol edi,1 - add edx,ebp - ror eax,2 - mov ebp,esi - rol ebp,5 - lea edi,DWORD PTR 3395469782[edx*1+edi] - add edi,ebp - mov ebp,DWORD PTR 96[esp] - mov edx,DWORD PTR 100[esp] - add edi,DWORD PTR [ebp] - add esi,DWORD PTR 4[ebp] - add eax,DWORD PTR 8[ebp] - add ebx,DWORD PTR 12[ebp] - add ecx,DWORD PTR 16[ebp] - mov DWORD PTR [ebp],edi - add edx,64 - mov DWORD PTR 4[ebp],esi - cmp edx,DWORD PTR 104[esp] - mov DWORD PTR 8[ebp],eax - mov edi,ecx - mov DWORD PTR 12[ebp],ebx - mov esi,edx - mov DWORD PTR 16[ebp],ecx - jb $L002loop - add esp,76 - pop edi - pop esi - pop ebx - pop ebp - ret -_sha1_block_data_order ENDP -ALIGN 16 -__sha1_block_data_order_shaext PROC PRIVATE - push ebp - push ebx - push esi - push edi - call $L003pic_point -$L003pic_point: - pop ebp - lea ebp,DWORD PTR ($LK_XX_XX-$L003pic_point)[ebp] -$Lshaext_shortcut:: - mov edi,DWORD PTR 20[esp] - mov ebx,esp - mov esi,DWORD PTR 24[esp] - mov ecx,DWORD PTR 28[esp] - sub esp,32 - movdqu xmm0,XMMWORD PTR [edi] - movd xmm1,DWORD PTR 16[edi] - and esp,-32 - movdqa xmm3,XMMWORD PTR 80[ebp] - movdqu xmm4,XMMWORD PTR [esi] - pshufd xmm0,xmm0,27 - movdqu xmm5,XMMWORD PTR 16[esi] - pshufd xmm1,xmm1,27 - movdqu xmm6,XMMWORD PTR 32[esi] -DB 102,15,56,0,227 - movdqu xmm7,XMMWORD PTR 48[esi] -DB 102,15,56,0,235 -DB 102,15,56,0,243 -DB 102,15,56,0,251 - jmp $L004loop_shaext -ALIGN 16 -$L004loop_shaext: - dec ecx - lea eax,DWORD PTR 64[esi] - movdqa XMMWORD PTR [esp],xmm1 - paddd xmm1,xmm4 - cmovne esi,eax - movdqa XMMWORD PTR 16[esp],xmm0 -DB 15,56,201,229 - movdqa xmm2,xmm0 -DB 15,58,204,193,0 -DB 15,56,200,213 - pxor xmm4,xmm6 -DB 15,56,201,238 -DB 15,56,202,231 - movdqa xmm1,xmm0 -DB 15,58,204,194,0 -DB 15,56,200,206 - pxor xmm5,xmm7 -DB 15,56,202,236 -DB 15,56,201,247 - movdqa xmm2,xmm0 -DB 15,58,204,193,0 -DB 15,56,200,215 - pxor xmm6,xmm4 -DB 15,56,201,252 -DB 15,56,202,245 - movdqa xmm1,xmm0 -DB 15,58,204,194,0 -DB 15,56,200,204 - pxor xmm7,xmm5 -DB 15,56,202,254 -DB 15,56,201,229 - movdqa xmm2,xmm0 -DB 15,58,204,193,0 -DB 15,56,200,213 - pxor xmm4,xmm6 -DB 15,56,201,238 -DB 15,56,202,231 - movdqa xmm1,xmm0 -DB 15,58,204,194,1 -DB 15,56,200,206 - pxor xmm5,xmm7 -DB 15,56,202,236 -DB 15,56,201,247 - movdqa xmm2,xmm0 -DB 15,58,204,193,1 -DB 15,56,200,215 - pxor xmm6,xmm4 -DB 15,56,201,252 -DB 15,56,202,245 - movdqa xmm1,xmm0 -DB 15,58,204,194,1 -DB 15,56,200,204 - pxor xmm7,xmm5 -DB 15,56,202,254 -DB 15,56,201,229 - movdqa xmm2,xmm0 -DB 15,58,204,193,1 -DB 15,56,200,213 - pxor xmm4,xmm6 -DB 15,56,201,238 -DB 15,56,202,231 - movdqa xmm1,xmm0 -DB 15,58,204,194,1 -DB 15,56,200,206 - pxor xmm5,xmm7 -DB 15,56,202,236 -DB 15,56,201,247 - movdqa xmm2,xmm0 -DB 15,58,204,193,2 -DB 15,56,200,215 - pxor xmm6,xmm4 -DB 15,56,201,252 -DB 15,56,202,245 - movdqa xmm1,xmm0 -DB 15,58,204,194,2 -DB 15,56,200,204 - pxor xmm7,xmm5 -DB 15,56,202,254 -DB 15,56,201,229 - movdqa xmm2,xmm0 -DB 15,58,204,193,2 -DB 15,56,200,213 - pxor xmm4,xmm6 -DB 15,56,201,238 -DB 15,56,202,231 - movdqa xmm1,xmm0 -DB 15,58,204,194,2 -DB 15,56,200,206 - pxor xmm5,xmm7 -DB 15,56,202,236 -DB 15,56,201,247 - movdqa xmm2,xmm0 -DB 15,58,204,193,2 -DB 15,56,200,215 - pxor xmm6,xmm4 -DB 15,56,201,252 -DB 15,56,202,245 - movdqa xmm1,xmm0 -DB 15,58,204,194,3 -DB 15,56,200,204 - pxor xmm7,xmm5 -DB 15,56,202,254 - movdqu xmm4,XMMWORD PTR [esi] - movdqa xmm2,xmm0 -DB 15,58,204,193,3 -DB 15,56,200,213 - movdqu xmm5,XMMWORD PTR 16[esi] -DB 102,15,56,0,227 - movdqa xmm1,xmm0 -DB 15,58,204,194,3 -DB 15,56,200,206 - movdqu xmm6,XMMWORD PTR 32[esi] -DB 102,15,56,0,235 - movdqa xmm2,xmm0 -DB 15,58,204,193,3 -DB 15,56,200,215 - movdqu xmm7,XMMWORD PTR 48[esi] -DB 102,15,56,0,243 - movdqa xmm1,xmm0 -DB 15,58,204,194,3 - movdqa xmm2,XMMWORD PTR [esp] -DB 102,15,56,0,251 -DB 15,56,200,202 - paddd xmm0,XMMWORD PTR 16[esp] - jnz $L004loop_shaext - pshufd xmm0,xmm0,27 - pshufd xmm1,xmm1,27 - movdqu XMMWORD PTR [edi],xmm0 - movd DWORD PTR 16[edi],xmm1 - mov esp,ebx - pop edi - pop esi - pop ebx - pop ebp - ret -__sha1_block_data_order_shaext ENDP -ALIGN 16 -__sha1_block_data_order_ssse3 PROC PRIVATE - push ebp - push ebx - push esi - push edi - call $L005pic_point -$L005pic_point: - pop ebp - lea ebp,DWORD PTR ($LK_XX_XX-$L005pic_point)[ebp] -$Lssse3_shortcut:: - movdqa xmm7,XMMWORD PTR [ebp] - movdqa xmm0,XMMWORD PTR 16[ebp] - movdqa xmm1,XMMWORD PTR 32[ebp] - movdqa xmm2,XMMWORD PTR 48[ebp] - movdqa xmm6,XMMWORD PTR 64[ebp] - mov edi,DWORD PTR 20[esp] - mov ebp,DWORD PTR 24[esp] - mov edx,DWORD PTR 28[esp] - mov esi,esp - sub esp,208 - and esp,-64 - movdqa XMMWORD PTR 112[esp],xmm0 - movdqa XMMWORD PTR 128[esp],xmm1 - movdqa XMMWORD PTR 144[esp],xmm2 - shl edx,6 - movdqa XMMWORD PTR 160[esp],xmm7 - add edx,ebp - movdqa XMMWORD PTR 176[esp],xmm6 - add ebp,64 - mov DWORD PTR 192[esp],edi - mov DWORD PTR 196[esp],ebp - mov DWORD PTR 200[esp],edx - mov DWORD PTR 204[esp],esi - mov eax,DWORD PTR [edi] - mov ebx,DWORD PTR 4[edi] - mov ecx,DWORD PTR 8[edi] - mov edx,DWORD PTR 12[edi] - mov edi,DWORD PTR 16[edi] - mov esi,ebx - movdqu xmm0,XMMWORD PTR [ebp-64] - movdqu xmm1,XMMWORD PTR [ebp-48] - movdqu xmm2,XMMWORD PTR [ebp-32] - movdqu xmm3,XMMWORD PTR [ebp-16] -DB 102,15,56,0,198 -DB 102,15,56,0,206 -DB 102,15,56,0,214 - movdqa XMMWORD PTR 96[esp],xmm7 -DB 102,15,56,0,222 - paddd xmm0,xmm7 - paddd xmm1,xmm7 - paddd xmm2,xmm7 - movdqa XMMWORD PTR [esp],xmm0 - psubd xmm0,xmm7 - movdqa XMMWORD PTR 16[esp],xmm1 - psubd xmm1,xmm7 - movdqa XMMWORD PTR 32[esp],xmm2 - mov ebp,ecx - psubd xmm2,xmm7 - xor ebp,edx - pshufd xmm4,xmm0,238 - and esi,ebp - jmp $L006loop -ALIGN 16 -$L006loop: - ror ebx,2 - xor esi,edx - mov ebp,eax - punpcklqdq xmm4,xmm1 - movdqa xmm6,xmm3 - add edi,DWORD PTR [esp] - xor ebx,ecx - paddd xmm7,xmm3 - movdqa XMMWORD PTR 64[esp],xmm0 - rol eax,5 - add edi,esi - psrldq xmm6,4 - and ebp,ebx - xor ebx,ecx - pxor xmm4,xmm0 - add edi,eax - ror eax,7 - pxor xmm6,xmm2 - xor ebp,ecx - mov esi,edi - add edx,DWORD PTR 4[esp] - pxor xmm4,xmm6 - xor eax,ebx - rol edi,5 - movdqa XMMWORD PTR 48[esp],xmm7 - add edx,ebp - and esi,eax - movdqa xmm0,xmm4 - xor eax,ebx - add edx,edi - ror edi,7 - movdqa xmm6,xmm4 - xor esi,ebx - pslldq xmm0,12 - paddd xmm4,xmm4 - mov ebp,edx - add ecx,DWORD PTR 8[esp] - psrld xmm6,31 - xor edi,eax - rol edx,5 - movdqa xmm7,xmm0 - add ecx,esi - and ebp,edi - xor edi,eax - psrld xmm0,30 - add ecx,edx - ror edx,7 - por xmm4,xmm6 - xor ebp,eax - mov esi,ecx - add ebx,DWORD PTR 12[esp] - pslld xmm7,2 - xor edx,edi - rol ecx,5 - pxor xmm4,xmm0 - movdqa xmm0,XMMWORD PTR 96[esp] - add ebx,ebp - and esi,edx - pxor xmm4,xmm7 - pshufd xmm5,xmm1,238 - xor edx,edi - add ebx,ecx - ror ecx,7 - xor esi,edi - mov ebp,ebx - punpcklqdq xmm5,xmm2 - movdqa xmm7,xmm4 - add eax,DWORD PTR 16[esp] - xor ecx,edx - paddd xmm0,xmm4 - movdqa XMMWORD PTR 80[esp],xmm1 - rol ebx,5 - add eax,esi - psrldq xmm7,4 - and ebp,ecx - xor ecx,edx - pxor xmm5,xmm1 - add eax,ebx - ror ebx,7 - pxor xmm7,xmm3 - xor ebp,edx - mov esi,eax - add edi,DWORD PTR 20[esp] - pxor xmm5,xmm7 - xor ebx,ecx - rol eax,5 - movdqa XMMWORD PTR [esp],xmm0 - add edi,ebp - and esi,ebx - movdqa xmm1,xmm5 - xor ebx,ecx - add edi,eax - ror eax,7 - movdqa xmm7,xmm5 - xor esi,ecx - pslldq xmm1,12 - paddd xmm5,xmm5 - mov ebp,edi - add edx,DWORD PTR 24[esp] - psrld xmm7,31 - xor eax,ebx - rol edi,5 - movdqa xmm0,xmm1 - add edx,esi - and ebp,eax - xor eax,ebx - psrld xmm1,30 - add edx,edi - ror edi,7 - por xmm5,xmm7 - xor ebp,ebx - mov esi,edx - add ecx,DWORD PTR 28[esp] - pslld xmm0,2 - xor edi,eax - rol edx,5 - pxor xmm5,xmm1 - movdqa xmm1,XMMWORD PTR 112[esp] - add ecx,ebp - and esi,edi - pxor xmm5,xmm0 - pshufd xmm6,xmm2,238 - xor edi,eax - add ecx,edx - ror edx,7 - xor esi,eax - mov ebp,ecx - punpcklqdq xmm6,xmm3 - movdqa xmm0,xmm5 - add ebx,DWORD PTR 32[esp] - xor edx,edi - paddd xmm1,xmm5 - movdqa XMMWORD PTR 96[esp],xmm2 - rol ecx,5 - add ebx,esi - psrldq xmm0,4 - and ebp,edx - xor edx,edi - pxor xmm6,xmm2 - add ebx,ecx - ror ecx,7 - pxor xmm0,xmm4 - xor ebp,edi - mov esi,ebx - add eax,DWORD PTR 36[esp] - pxor xmm6,xmm0 - xor ecx,edx - rol ebx,5 - movdqa XMMWORD PTR 16[esp],xmm1 - add eax,ebp - and esi,ecx - movdqa xmm2,xmm6 - xor ecx,edx - add eax,ebx - ror ebx,7 - movdqa xmm0,xmm6 - xor esi,edx - pslldq xmm2,12 - paddd xmm6,xmm6 - mov ebp,eax - add edi,DWORD PTR 40[esp] - psrld xmm0,31 - xor ebx,ecx - rol eax,5 - movdqa xmm1,xmm2 - add edi,esi - and ebp,ebx - xor ebx,ecx - psrld xmm2,30 - add edi,eax - ror eax,7 - por xmm6,xmm0 - xor ebp,ecx - movdqa xmm0,XMMWORD PTR 64[esp] - mov esi,edi - add edx,DWORD PTR 44[esp] - pslld xmm1,2 - xor eax,ebx - rol edi,5 - pxor xmm6,xmm2 - movdqa xmm2,XMMWORD PTR 112[esp] - add edx,ebp - and esi,eax - pxor xmm6,xmm1 - pshufd xmm7,xmm3,238 - xor eax,ebx - add edx,edi - ror edi,7 - xor esi,ebx - mov ebp,edx - punpcklqdq xmm7,xmm4 - movdqa xmm1,xmm6 - add ecx,DWORD PTR 48[esp] - xor edi,eax - paddd xmm2,xmm6 - movdqa XMMWORD PTR 64[esp],xmm3 - rol edx,5 - add ecx,esi - psrldq xmm1,4 - and ebp,edi - xor edi,eax - pxor xmm7,xmm3 - add ecx,edx - ror edx,7 - pxor xmm1,xmm5 - xor ebp,eax - mov esi,ecx - add ebx,DWORD PTR 52[esp] - pxor xmm7,xmm1 - xor edx,edi - rol ecx,5 - movdqa XMMWORD PTR 32[esp],xmm2 - add ebx,ebp - and esi,edx - movdqa xmm3,xmm7 - xor edx,edi - add ebx,ecx - ror ecx,7 - movdqa xmm1,xmm7 - xor esi,edi - pslldq xmm3,12 - paddd xmm7,xmm7 - mov ebp,ebx - add eax,DWORD PTR 56[esp] - psrld xmm1,31 - xor ecx,edx - rol ebx,5 - movdqa xmm2,xmm3 - add eax,esi - and ebp,ecx - xor ecx,edx - psrld xmm3,30 - add eax,ebx - ror ebx,7 - por xmm7,xmm1 - xor ebp,edx - movdqa xmm1,XMMWORD PTR 80[esp] - mov esi,eax - add edi,DWORD PTR 60[esp] - pslld xmm2,2 - xor ebx,ecx - rol eax,5 - pxor xmm7,xmm3 - movdqa xmm3,XMMWORD PTR 112[esp] - add edi,ebp - and esi,ebx - pxor xmm7,xmm2 - pshufd xmm2,xmm6,238 - xor ebx,ecx - add edi,eax - ror eax,7 - pxor xmm0,xmm4 - punpcklqdq xmm2,xmm7 - xor esi,ecx - mov ebp,edi - add edx,DWORD PTR [esp] - pxor xmm0,xmm1 - movdqa XMMWORD PTR 80[esp],xmm4 - xor eax,ebx - rol edi,5 - movdqa xmm4,xmm3 - add edx,esi - paddd xmm3,xmm7 - and ebp,eax - pxor xmm0,xmm2 - xor eax,ebx - add edx,edi - ror edi,7 - xor ebp,ebx - movdqa xmm2,xmm0 - movdqa XMMWORD PTR 48[esp],xmm3 - mov esi,edx - add ecx,DWORD PTR 4[esp] - xor edi,eax - rol edx,5 - pslld xmm0,2 - add ecx,ebp - and esi,edi - psrld xmm2,30 - xor edi,eax - add ecx,edx - ror edx,7 - xor esi,eax - mov ebp,ecx - add ebx,DWORD PTR 8[esp] - xor edx,edi - rol ecx,5 - por xmm0,xmm2 - add ebx,esi - and ebp,edx - movdqa xmm2,XMMWORD PTR 96[esp] - xor edx,edi - add ebx,ecx - add eax,DWORD PTR 12[esp] - xor ebp,edi - mov esi,ebx - pshufd xmm3,xmm7,238 - rol ebx,5 - add eax,ebp - xor esi,edx - ror ecx,7 - add eax,ebx - add edi,DWORD PTR 16[esp] - pxor xmm1,xmm5 - punpcklqdq xmm3,xmm0 - xor esi,ecx - mov ebp,eax - rol eax,5 - pxor xmm1,xmm2 - movdqa XMMWORD PTR 96[esp],xmm5 - add edi,esi - xor ebp,ecx - movdqa xmm5,xmm4 - ror ebx,7 - paddd xmm4,xmm0 - add edi,eax - pxor xmm1,xmm3 - add edx,DWORD PTR 20[esp] - xor ebp,ebx - mov esi,edi - rol edi,5 - movdqa xmm3,xmm1 - movdqa XMMWORD PTR [esp],xmm4 - add edx,ebp - xor esi,ebx - ror eax,7 - add edx,edi - pslld xmm1,2 - add ecx,DWORD PTR 24[esp] - xor esi,eax - psrld xmm3,30 - mov ebp,edx - rol edx,5 - add ecx,esi - xor ebp,eax - ror edi,7 - add ecx,edx - por xmm1,xmm3 - add ebx,DWORD PTR 28[esp] - xor ebp,edi - movdqa xmm3,XMMWORD PTR 64[esp] - mov esi,ecx - rol ecx,5 - add ebx,ebp - xor esi,edi - ror edx,7 - pshufd xmm4,xmm0,238 - add ebx,ecx - add eax,DWORD PTR 32[esp] - pxor xmm2,xmm6 - punpcklqdq xmm4,xmm1 - xor esi,edx - mov ebp,ebx - rol ebx,5 - pxor xmm2,xmm3 - movdqa XMMWORD PTR 64[esp],xmm6 - add eax,esi - xor ebp,edx - movdqa xmm6,XMMWORD PTR 128[esp] - ror ecx,7 - paddd xmm5,xmm1 - add eax,ebx - pxor xmm2,xmm4 - add edi,DWORD PTR 36[esp] - xor ebp,ecx - mov esi,eax - rol eax,5 - movdqa xmm4,xmm2 - movdqa XMMWORD PTR 16[esp],xmm5 - add edi,ebp - xor esi,ecx - ror ebx,7 - add edi,eax - pslld xmm2,2 - add edx,DWORD PTR 40[esp] - xor esi,ebx - psrld xmm4,30 - mov ebp,edi - rol edi,5 - add edx,esi - xor ebp,ebx - ror eax,7 - add edx,edi - por xmm2,xmm4 - add ecx,DWORD PTR 44[esp] - xor ebp,eax - movdqa xmm4,XMMWORD PTR 80[esp] - mov esi,edx - rol edx,5 - add ecx,ebp - xor esi,eax - ror edi,7 - pshufd xmm5,xmm1,238 - add ecx,edx - add ebx,DWORD PTR 48[esp] - pxor xmm3,xmm7 - punpcklqdq xmm5,xmm2 - xor esi,edi - mov ebp,ecx - rol ecx,5 - pxor xmm3,xmm4 - movdqa XMMWORD PTR 80[esp],xmm7 - add ebx,esi - xor ebp,edi - movdqa xmm7,xmm6 - ror edx,7 - paddd xmm6,xmm2 - add ebx,ecx - pxor xmm3,xmm5 - add eax,DWORD PTR 52[esp] - xor ebp,edx - mov esi,ebx - rol ebx,5 - movdqa xmm5,xmm3 - movdqa XMMWORD PTR 32[esp],xmm6 - add eax,ebp - xor esi,edx - ror ecx,7 - add eax,ebx - pslld xmm3,2 - add edi,DWORD PTR 56[esp] - xor esi,ecx - psrld xmm5,30 - mov ebp,eax - rol eax,5 - add edi,esi - xor ebp,ecx - ror ebx,7 - add edi,eax - por xmm3,xmm5 - add edx,DWORD PTR 60[esp] - xor ebp,ebx - movdqa xmm5,XMMWORD PTR 96[esp] - mov esi,edi - rol edi,5 - add edx,ebp - xor esi,ebx - ror eax,7 - pshufd xmm6,xmm2,238 - add edx,edi - add ecx,DWORD PTR [esp] - pxor xmm4,xmm0 - punpcklqdq xmm6,xmm3 - xor esi,eax - mov ebp,edx - rol edx,5 - pxor xmm4,xmm5 - movdqa XMMWORD PTR 96[esp],xmm0 - add ecx,esi - xor ebp,eax - movdqa xmm0,xmm7 - ror edi,7 - paddd xmm7,xmm3 - add ecx,edx - pxor xmm4,xmm6 - add ebx,DWORD PTR 4[esp] - xor ebp,edi - mov esi,ecx - rol ecx,5 - movdqa xmm6,xmm4 - movdqa XMMWORD PTR 48[esp],xmm7 - add ebx,ebp - xor esi,edi - ror edx,7 - add ebx,ecx - pslld xmm4,2 - add eax,DWORD PTR 8[esp] - xor esi,edx - psrld xmm6,30 - mov ebp,ebx - rol ebx,5 - add eax,esi - xor ebp,edx - ror ecx,7 - add eax,ebx - por xmm4,xmm6 - add edi,DWORD PTR 12[esp] - xor ebp,ecx - movdqa xmm6,XMMWORD PTR 64[esp] - mov esi,eax - rol eax,5 - add edi,ebp - xor esi,ecx - ror ebx,7 - pshufd xmm7,xmm3,238 - add edi,eax - add edx,DWORD PTR 16[esp] - pxor xmm5,xmm1 - punpcklqdq xmm7,xmm4 - xor esi,ebx - mov ebp,edi - rol edi,5 - pxor xmm5,xmm6 - movdqa XMMWORD PTR 64[esp],xmm1 - add edx,esi - xor ebp,ebx - movdqa xmm1,xmm0 - ror eax,7 - paddd xmm0,xmm4 - add edx,edi - pxor xmm5,xmm7 - add ecx,DWORD PTR 20[esp] - xor ebp,eax - mov esi,edx - rol edx,5 - movdqa xmm7,xmm5 - movdqa XMMWORD PTR [esp],xmm0 - add ecx,ebp - xor esi,eax - ror edi,7 - add ecx,edx - pslld xmm5,2 - add ebx,DWORD PTR 24[esp] - xor esi,edi - psrld xmm7,30 - mov ebp,ecx - rol ecx,5 - add ebx,esi - xor ebp,edi - ror edx,7 - add ebx,ecx - por xmm5,xmm7 - add eax,DWORD PTR 28[esp] - movdqa xmm7,XMMWORD PTR 80[esp] - ror ecx,7 - mov esi,ebx - xor ebp,edx - rol ebx,5 - pshufd xmm0,xmm4,238 - add eax,ebp - xor esi,ecx - xor ecx,edx - add eax,ebx - add edi,DWORD PTR 32[esp] - pxor xmm6,xmm2 - punpcklqdq xmm0,xmm5 - and esi,ecx - xor ecx,edx - ror ebx,7 - pxor xmm6,xmm7 - movdqa XMMWORD PTR 80[esp],xmm2 - mov ebp,eax - xor esi,ecx - rol eax,5 - movdqa xmm2,xmm1 - add edi,esi - paddd xmm1,xmm5 - xor ebp,ebx - pxor xmm6,xmm0 - xor ebx,ecx - add edi,eax - add edx,DWORD PTR 36[esp] - and ebp,ebx - movdqa xmm0,xmm6 - movdqa XMMWORD PTR 16[esp],xmm1 - xor ebx,ecx - ror eax,7 - mov esi,edi - xor ebp,ebx - rol edi,5 - pslld xmm6,2 - add edx,ebp - xor esi,eax - psrld xmm0,30 - xor eax,ebx - add edx,edi - add ecx,DWORD PTR 40[esp] - and esi,eax - xor eax,ebx - ror edi,7 - por xmm6,xmm0 - mov ebp,edx - xor esi,eax - movdqa xmm0,XMMWORD PTR 96[esp] - rol edx,5 - add ecx,esi - xor ebp,edi - xor edi,eax - add ecx,edx - pshufd xmm1,xmm5,238 - add ebx,DWORD PTR 44[esp] - and ebp,edi - xor edi,eax - ror edx,7 - mov esi,ecx - xor ebp,edi - rol ecx,5 - add ebx,ebp - xor esi,edx - xor edx,edi - add ebx,ecx - add eax,DWORD PTR 48[esp] - pxor xmm7,xmm3 - punpcklqdq xmm1,xmm6 - and esi,edx - xor edx,edi - ror ecx,7 - pxor xmm7,xmm0 - movdqa XMMWORD PTR 96[esp],xmm3 - mov ebp,ebx - xor esi,edx - rol ebx,5 - movdqa xmm3,XMMWORD PTR 144[esp] - add eax,esi - paddd xmm2,xmm6 - xor ebp,ecx - pxor xmm7,xmm1 - xor ecx,edx - add eax,ebx - add edi,DWORD PTR 52[esp] - and ebp,ecx - movdqa xmm1,xmm7 - movdqa XMMWORD PTR 32[esp],xmm2 - xor ecx,edx - ror ebx,7 - mov esi,eax - xor ebp,ecx - rol eax,5 - pslld xmm7,2 - add edi,ebp - xor esi,ebx - psrld xmm1,30 - xor ebx,ecx - add edi,eax - add edx,DWORD PTR 56[esp] - and esi,ebx - xor ebx,ecx - ror eax,7 - por xmm7,xmm1 - mov ebp,edi - xor esi,ebx - movdqa xmm1,XMMWORD PTR 64[esp] - rol edi,5 - add edx,esi - xor ebp,eax - xor eax,ebx - add edx,edi - pshufd xmm2,xmm6,238 - add ecx,DWORD PTR 60[esp] - and ebp,eax - xor eax,ebx - ror edi,7 - mov esi,edx - xor ebp,eax - rol edx,5 - add ecx,ebp - xor esi,edi - xor edi,eax - add ecx,edx - add ebx,DWORD PTR [esp] - pxor xmm0,xmm4 - punpcklqdq xmm2,xmm7 - and esi,edi - xor edi,eax - ror edx,7 - pxor xmm0,xmm1 - movdqa XMMWORD PTR 64[esp],xmm4 - mov ebp,ecx - xor esi,edi - rol ecx,5 - movdqa xmm4,xmm3 - add ebx,esi - paddd xmm3,xmm7 - xor ebp,edx - pxor xmm0,xmm2 - xor edx,edi - add ebx,ecx - add eax,DWORD PTR 4[esp] - and ebp,edx - movdqa xmm2,xmm0 - movdqa XMMWORD PTR 48[esp],xmm3 - xor edx,edi - ror ecx,7 - mov esi,ebx - xor ebp,edx - rol ebx,5 - pslld xmm0,2 - add eax,ebp - xor esi,ecx - psrld xmm2,30 - xor ecx,edx - add eax,ebx - add edi,DWORD PTR 8[esp] - and esi,ecx - xor ecx,edx - ror ebx,7 - por xmm0,xmm2 - mov ebp,eax - xor esi,ecx - movdqa xmm2,XMMWORD PTR 80[esp] - rol eax,5 - add edi,esi - xor ebp,ebx - xor ebx,ecx - add edi,eax - pshufd xmm3,xmm7,238 - add edx,DWORD PTR 12[esp] - and ebp,ebx - xor ebx,ecx - ror eax,7 - mov esi,edi - xor ebp,ebx - rol edi,5 - add edx,ebp - xor esi,eax - xor eax,ebx - add edx,edi - add ecx,DWORD PTR 16[esp] - pxor xmm1,xmm5 - punpcklqdq xmm3,xmm0 - and esi,eax - xor eax,ebx - ror edi,7 - pxor xmm1,xmm2 - movdqa XMMWORD PTR 80[esp],xmm5 - mov ebp,edx - xor esi,eax - rol edx,5 - movdqa xmm5,xmm4 - add ecx,esi - paddd xmm4,xmm0 - xor ebp,edi - pxor xmm1,xmm3 - xor edi,eax - add ecx,edx - add ebx,DWORD PTR 20[esp] - and ebp,edi - movdqa xmm3,xmm1 - movdqa XMMWORD PTR [esp],xmm4 - xor edi,eax - ror edx,7 - mov esi,ecx - xor ebp,edi - rol ecx,5 - pslld xmm1,2 - add ebx,ebp - xor esi,edx - psrld xmm3,30 - xor edx,edi - add ebx,ecx - add eax,DWORD PTR 24[esp] - and esi,edx - xor edx,edi - ror ecx,7 - por xmm1,xmm3 - mov ebp,ebx - xor esi,edx - movdqa xmm3,XMMWORD PTR 96[esp] - rol ebx,5 - add eax,esi - xor ebp,ecx - xor ecx,edx - add eax,ebx - pshufd xmm4,xmm0,238 - add edi,DWORD PTR 28[esp] - and ebp,ecx - xor ecx,edx - ror ebx,7 - mov esi,eax - xor ebp,ecx - rol eax,5 - add edi,ebp - xor esi,ebx - xor ebx,ecx - add edi,eax - add edx,DWORD PTR 32[esp] - pxor xmm2,xmm6 - punpcklqdq xmm4,xmm1 - and esi,ebx - xor ebx,ecx - ror eax,7 - pxor xmm2,xmm3 - movdqa XMMWORD PTR 96[esp],xmm6 - mov ebp,edi - xor esi,ebx - rol edi,5 - movdqa xmm6,xmm5 - add edx,esi - paddd xmm5,xmm1 - xor ebp,eax - pxor xmm2,xmm4 - xor eax,ebx - add edx,edi - add ecx,DWORD PTR 36[esp] - and ebp,eax - movdqa xmm4,xmm2 - movdqa XMMWORD PTR 16[esp],xmm5 - xor eax,ebx - ror edi,7 - mov esi,edx - xor ebp,eax - rol edx,5 - pslld xmm2,2 - add ecx,ebp - xor esi,edi - psrld xmm4,30 - xor edi,eax - add ecx,edx - add ebx,DWORD PTR 40[esp] - and esi,edi - xor edi,eax - ror edx,7 - por xmm2,xmm4 - mov ebp,ecx - xor esi,edi - movdqa xmm4,XMMWORD PTR 64[esp] - rol ecx,5 - add ebx,esi - xor ebp,edx - xor edx,edi - add ebx,ecx - pshufd xmm5,xmm1,238 - add eax,DWORD PTR 44[esp] - and ebp,edx - xor edx,edi - ror ecx,7 - mov esi,ebx - xor ebp,edx - rol ebx,5 - add eax,ebp - xor esi,edx - add eax,ebx - add edi,DWORD PTR 48[esp] - pxor xmm3,xmm7 - punpcklqdq xmm5,xmm2 - xor esi,ecx - mov ebp,eax - rol eax,5 - pxor xmm3,xmm4 - movdqa XMMWORD PTR 64[esp],xmm7 - add edi,esi - xor ebp,ecx - movdqa xmm7,xmm6 - ror ebx,7 - paddd xmm6,xmm2 - add edi,eax - pxor xmm3,xmm5 - add edx,DWORD PTR 52[esp] - xor ebp,ebx - mov esi,edi - rol edi,5 - movdqa xmm5,xmm3 - movdqa XMMWORD PTR 32[esp],xmm6 - add edx,ebp - xor esi,ebx - ror eax,7 - add edx,edi - pslld xmm3,2 - add ecx,DWORD PTR 56[esp] - xor esi,eax - psrld xmm5,30 - mov ebp,edx - rol edx,5 - add ecx,esi - xor ebp,eax - ror edi,7 - add ecx,edx - por xmm3,xmm5 - add ebx,DWORD PTR 60[esp] - xor ebp,edi - mov esi,ecx - rol ecx,5 - add ebx,ebp - xor esi,edi - ror edx,7 - add ebx,ecx - add eax,DWORD PTR [esp] - xor esi,edx - mov ebp,ebx - rol ebx,5 - add eax,esi - xor ebp,edx - ror ecx,7 - paddd xmm7,xmm3 - add eax,ebx - add edi,DWORD PTR 4[esp] - xor ebp,ecx - mov esi,eax - movdqa XMMWORD PTR 48[esp],xmm7 - rol eax,5 - add edi,ebp - xor esi,ecx - ror ebx,7 - add edi,eax - add edx,DWORD PTR 8[esp] - xor esi,ebx - mov ebp,edi - rol edi,5 - add edx,esi - xor ebp,ebx - ror eax,7 - add edx,edi - add ecx,DWORD PTR 12[esp] - xor ebp,eax - mov esi,edx - rol edx,5 - add ecx,ebp - xor esi,eax - ror edi,7 - add ecx,edx - mov ebp,DWORD PTR 196[esp] - cmp ebp,DWORD PTR 200[esp] - je $L007done - movdqa xmm7,XMMWORD PTR 160[esp] - movdqa xmm6,XMMWORD PTR 176[esp] - movdqu xmm0,XMMWORD PTR [ebp] - movdqu xmm1,XMMWORD PTR 16[ebp] - movdqu xmm2,XMMWORD PTR 32[ebp] - movdqu xmm3,XMMWORD PTR 48[ebp] - add ebp,64 -DB 102,15,56,0,198 - mov DWORD PTR 196[esp],ebp - movdqa XMMWORD PTR 96[esp],xmm7 - add ebx,DWORD PTR 16[esp] - xor esi,edi - mov ebp,ecx - rol ecx,5 - add ebx,esi - xor ebp,edi - ror edx,7 -DB 102,15,56,0,206 - add ebx,ecx - add eax,DWORD PTR 20[esp] - xor ebp,edx - mov esi,ebx - paddd xmm0,xmm7 - rol ebx,5 - add eax,ebp - xor esi,edx - ror ecx,7 - movdqa XMMWORD PTR [esp],xmm0 - add eax,ebx - add edi,DWORD PTR 24[esp] - xor esi,ecx - mov ebp,eax - psubd xmm0,xmm7 - rol eax,5 - add edi,esi - xor ebp,ecx - ror ebx,7 - add edi,eax - add edx,DWORD PTR 28[esp] - xor ebp,ebx - mov esi,edi - rol edi,5 - add edx,ebp - xor esi,ebx - ror eax,7 - add edx,edi - add ecx,DWORD PTR 32[esp] - xor esi,eax - mov ebp,edx - rol edx,5 - add ecx,esi - xor ebp,eax - ror edi,7 -DB 102,15,56,0,214 - add ecx,edx - add ebx,DWORD PTR 36[esp] - xor ebp,edi - mov esi,ecx - paddd xmm1,xmm7 - rol ecx,5 - add ebx,ebp - xor esi,edi - ror edx,7 - movdqa XMMWORD PTR 16[esp],xmm1 - add ebx,ecx - add eax,DWORD PTR 40[esp] - xor esi,edx - mov ebp,ebx - psubd xmm1,xmm7 - rol ebx,5 - add eax,esi - xor ebp,edx - ror ecx,7 - add eax,ebx - add edi,DWORD PTR 44[esp] - xor ebp,ecx - mov esi,eax - rol eax,5 - add edi,ebp - xor esi,ecx - ror ebx,7 - add edi,eax - add edx,DWORD PTR 48[esp] - xor esi,ebx - mov ebp,edi - rol edi,5 - add edx,esi - xor ebp,ebx - ror eax,7 -DB 102,15,56,0,222 - add edx,edi - add ecx,DWORD PTR 52[esp] - xor ebp,eax - mov esi,edx - paddd xmm2,xmm7 - rol edx,5 - add ecx,ebp - xor esi,eax - ror edi,7 - movdqa XMMWORD PTR 32[esp],xmm2 - add ecx,edx - add ebx,DWORD PTR 56[esp] - xor esi,edi - mov ebp,ecx - psubd xmm2,xmm7 - rol ecx,5 - add ebx,esi - xor ebp,edi - ror edx,7 - add ebx,ecx - add eax,DWORD PTR 60[esp] - xor ebp,edx - mov esi,ebx - rol ebx,5 - add eax,ebp - ror ecx,7 - add eax,ebx - mov ebp,DWORD PTR 192[esp] - add eax,DWORD PTR [ebp] - add esi,DWORD PTR 4[ebp] - add ecx,DWORD PTR 8[ebp] - mov DWORD PTR [ebp],eax - add edx,DWORD PTR 12[ebp] - mov DWORD PTR 4[ebp],esi - add edi,DWORD PTR 16[ebp] - mov DWORD PTR 8[ebp],ecx - mov ebx,ecx - mov DWORD PTR 12[ebp],edx - xor ebx,edx - mov DWORD PTR 16[ebp],edi - mov ebp,esi - pshufd xmm4,xmm0,238 - and esi,ebx - mov ebx,ebp - jmp $L006loop -ALIGN 16 -$L007done: - add ebx,DWORD PTR 16[esp] - xor esi,edi - mov ebp,ecx - rol ecx,5 - add ebx,esi - xor ebp,edi - ror edx,7 - add ebx,ecx - add eax,DWORD PTR 20[esp] - xor ebp,edx - mov esi,ebx - rol ebx,5 - add eax,ebp - xor esi,edx - ror ecx,7 - add eax,ebx - add edi,DWORD PTR 24[esp] - xor esi,ecx - mov ebp,eax - rol eax,5 - add edi,esi - xor ebp,ecx - ror ebx,7 - add edi,eax - add edx,DWORD PTR 28[esp] - xor ebp,ebx - mov esi,edi - rol edi,5 - add edx,ebp - xor esi,ebx - ror eax,7 - add edx,edi - add ecx,DWORD PTR 32[esp] - xor esi,eax - mov ebp,edx - rol edx,5 - add ecx,esi - xor ebp,eax - ror edi,7 - add ecx,edx - add ebx,DWORD PTR 36[esp] - xor ebp,edi - mov esi,ecx - rol ecx,5 - add ebx,ebp - xor esi,edi - ror edx,7 - add ebx,ecx - add eax,DWORD PTR 40[esp] - xor esi,edx - mov ebp,ebx - rol ebx,5 - add eax,esi - xor ebp,edx - ror ecx,7 - add eax,ebx - add edi,DWORD PTR 44[esp] - xor ebp,ecx - mov esi,eax - rol eax,5 - add edi,ebp - xor esi,ecx - ror ebx,7 - add edi,eax - add edx,DWORD PTR 48[esp] - xor esi,ebx - mov ebp,edi - rol edi,5 - add edx,esi - xor ebp,ebx - ror eax,7 - add edx,edi - add ecx,DWORD PTR 52[esp] - xor ebp,eax - mov esi,edx - rol edx,5 - add ecx,ebp - xor esi,eax - ror edi,7 - add ecx,edx - add ebx,DWORD PTR 56[esp] - xor esi,edi - mov ebp,ecx - rol ecx,5 - add ebx,esi - xor ebp,edi - ror edx,7 - add ebx,ecx - add eax,DWORD PTR 60[esp] - xor ebp,edx - mov esi,ebx - rol ebx,5 - add eax,ebp - ror ecx,7 - add eax,ebx - mov ebp,DWORD PTR 192[esp] - add eax,DWORD PTR [ebp] - mov esp,DWORD PTR 204[esp] - add esi,DWORD PTR 4[ebp] - add ecx,DWORD PTR 8[ebp] - mov DWORD PTR [ebp],eax - add edx,DWORD PTR 12[ebp] - mov DWORD PTR 4[ebp],esi - add edi,DWORD PTR 16[ebp] - mov DWORD PTR 8[ebp],ecx - mov DWORD PTR 12[ebp],edx - mov DWORD PTR 16[ebp],edi - pop edi - pop esi - pop ebx - pop ebp - ret -__sha1_block_data_order_ssse3 ENDP -ALIGN 16 -__sha1_block_data_order_avx PROC PRIVATE - push ebp - push ebx - push esi - push edi - call $L008pic_point -$L008pic_point: - pop ebp - lea ebp,DWORD PTR ($LK_XX_XX-$L008pic_point)[ebp] -$Lavx_shortcut:: - vzeroall - vmovdqa xmm7,XMMWORD PTR [ebp] - vmovdqa xmm0,XMMWORD PTR 16[ebp] - vmovdqa xmm1,XMMWORD PTR 32[ebp] - vmovdqa xmm2,XMMWORD PTR 48[ebp] - vmovdqa xmm6,XMMWORD PTR 64[ebp] - mov edi,DWORD PTR 20[esp] - mov ebp,DWORD PTR 24[esp] - mov edx,DWORD PTR 28[esp] - mov esi,esp - sub esp,208 - and esp,-64 - vmovdqa XMMWORD PTR 112[esp],xmm0 - vmovdqa XMMWORD PTR 128[esp],xmm1 - vmovdqa XMMWORD PTR 144[esp],xmm2 - shl edx,6 - vmovdqa XMMWORD PTR 160[esp],xmm7 - add edx,ebp - vmovdqa XMMWORD PTR 176[esp],xmm6 - add ebp,64 - mov DWORD PTR 192[esp],edi - mov DWORD PTR 196[esp],ebp - mov DWORD PTR 200[esp],edx - mov DWORD PTR 204[esp],esi - mov eax,DWORD PTR [edi] - mov ebx,DWORD PTR 4[edi] - mov ecx,DWORD PTR 8[edi] - mov edx,DWORD PTR 12[edi] - mov edi,DWORD PTR 16[edi] - mov esi,ebx - vmovdqu xmm0,XMMWORD PTR [ebp-64] - vmovdqu xmm1,XMMWORD PTR [ebp-48] - vmovdqu xmm2,XMMWORD PTR [ebp-32] - vmovdqu xmm3,XMMWORD PTR [ebp-16] - vpshufb xmm0,xmm0,xmm6 - vpshufb xmm1,xmm1,xmm6 - vpshufb xmm2,xmm2,xmm6 - vmovdqa XMMWORD PTR 96[esp],xmm7 - vpshufb xmm3,xmm3,xmm6 - vpaddd xmm4,xmm0,xmm7 - vpaddd xmm5,xmm1,xmm7 - vpaddd xmm6,xmm2,xmm7 - vmovdqa XMMWORD PTR [esp],xmm4 - mov ebp,ecx - vmovdqa XMMWORD PTR 16[esp],xmm5 - xor ebp,edx - vmovdqa XMMWORD PTR 32[esp],xmm6 - and esi,ebp - jmp $L009loop -ALIGN 16 -$L009loop: - shrd ebx,ebx,2 - xor esi,edx - vpalignr xmm4,xmm1,xmm0,8 - mov ebp,eax - add edi,DWORD PTR [esp] - vpaddd xmm7,xmm7,xmm3 - vmovdqa XMMWORD PTR 64[esp],xmm0 - xor ebx,ecx - shld eax,eax,5 - vpsrldq xmm6,xmm3,4 - add edi,esi - and ebp,ebx - vpxor xmm4,xmm4,xmm0 - xor ebx,ecx - add edi,eax - vpxor xmm6,xmm6,xmm2 - shrd eax,eax,7 - xor ebp,ecx - vmovdqa XMMWORD PTR 48[esp],xmm7 - mov esi,edi - add edx,DWORD PTR 4[esp] - vpxor xmm4,xmm4,xmm6 - xor eax,ebx - shld edi,edi,5 - add edx,ebp - and esi,eax - vpsrld xmm6,xmm4,31 - xor eax,ebx - add edx,edi - shrd edi,edi,7 - xor esi,ebx - vpslldq xmm0,xmm4,12 - vpaddd xmm4,xmm4,xmm4 - mov ebp,edx - add ecx,DWORD PTR 8[esp] - xor edi,eax - shld edx,edx,5 - vpsrld xmm7,xmm0,30 - vpor xmm4,xmm4,xmm6 - add ecx,esi - and ebp,edi - xor edi,eax - add ecx,edx - vpslld xmm0,xmm0,2 - shrd edx,edx,7 - xor ebp,eax - vpxor xmm4,xmm4,xmm7 - mov esi,ecx - add ebx,DWORD PTR 12[esp] - xor edx,edi - shld ecx,ecx,5 - vpxor xmm4,xmm4,xmm0 - add ebx,ebp - and esi,edx - vmovdqa xmm0,XMMWORD PTR 96[esp] - xor edx,edi - add ebx,ecx - shrd ecx,ecx,7 - xor esi,edi - vpalignr xmm5,xmm2,xmm1,8 - mov ebp,ebx - add eax,DWORD PTR 16[esp] - vpaddd xmm0,xmm0,xmm4 - vmovdqa XMMWORD PTR 80[esp],xmm1 - xor ecx,edx - shld ebx,ebx,5 - vpsrldq xmm7,xmm4,4 - add eax,esi - and ebp,ecx - vpxor xmm5,xmm5,xmm1 - xor ecx,edx - add eax,ebx - vpxor xmm7,xmm7,xmm3 - shrd ebx,ebx,7 - xor ebp,edx - vmovdqa XMMWORD PTR [esp],xmm0 - mov esi,eax - add edi,DWORD PTR 20[esp] - vpxor xmm5,xmm5,xmm7 - xor ebx,ecx - shld eax,eax,5 - add edi,ebp - and esi,ebx - vpsrld xmm7,xmm5,31 - xor ebx,ecx - add edi,eax - shrd eax,eax,7 - xor esi,ecx - vpslldq xmm1,xmm5,12 - vpaddd xmm5,xmm5,xmm5 - mov ebp,edi - add edx,DWORD PTR 24[esp] - xor eax,ebx - shld edi,edi,5 - vpsrld xmm0,xmm1,30 - vpor xmm5,xmm5,xmm7 - add edx,esi - and ebp,eax - xor eax,ebx - add edx,edi - vpslld xmm1,xmm1,2 - shrd edi,edi,7 - xor ebp,ebx - vpxor xmm5,xmm5,xmm0 - mov esi,edx - add ecx,DWORD PTR 28[esp] - xor edi,eax - shld edx,edx,5 - vpxor xmm5,xmm5,xmm1 - add ecx,ebp - and esi,edi - vmovdqa xmm1,XMMWORD PTR 112[esp] - xor edi,eax - add ecx,edx - shrd edx,edx,7 - xor esi,eax - vpalignr xmm6,xmm3,xmm2,8 - mov ebp,ecx - add ebx,DWORD PTR 32[esp] - vpaddd xmm1,xmm1,xmm5 - vmovdqa XMMWORD PTR 96[esp],xmm2 - xor edx,edi - shld ecx,ecx,5 - vpsrldq xmm0,xmm5,4 - add ebx,esi - and ebp,edx - vpxor xmm6,xmm6,xmm2 - xor edx,edi - add ebx,ecx - vpxor xmm0,xmm0,xmm4 - shrd ecx,ecx,7 - xor ebp,edi - vmovdqa XMMWORD PTR 16[esp],xmm1 - mov esi,ebx - add eax,DWORD PTR 36[esp] - vpxor xmm6,xmm6,xmm0 - xor ecx,edx - shld ebx,ebx,5 - add eax,ebp - and esi,ecx - vpsrld xmm0,xmm6,31 - xor ecx,edx - add eax,ebx - shrd ebx,ebx,7 - xor esi,edx - vpslldq xmm2,xmm6,12 - vpaddd xmm6,xmm6,xmm6 - mov ebp,eax - add edi,DWORD PTR 40[esp] - xor ebx,ecx - shld eax,eax,5 - vpsrld xmm1,xmm2,30 - vpor xmm6,xmm6,xmm0 - add edi,esi - and ebp,ebx - xor ebx,ecx - add edi,eax - vpslld xmm2,xmm2,2 - vmovdqa xmm0,XMMWORD PTR 64[esp] - shrd eax,eax,7 - xor ebp,ecx - vpxor xmm6,xmm6,xmm1 - mov esi,edi - add edx,DWORD PTR 44[esp] - xor eax,ebx - shld edi,edi,5 - vpxor xmm6,xmm6,xmm2 - add edx,ebp - and esi,eax - vmovdqa xmm2,XMMWORD PTR 112[esp] - xor eax,ebx - add edx,edi - shrd edi,edi,7 - xor esi,ebx - vpalignr xmm7,xmm4,xmm3,8 - mov ebp,edx - add ecx,DWORD PTR 48[esp] - vpaddd xmm2,xmm2,xmm6 - vmovdqa XMMWORD PTR 64[esp],xmm3 - xor edi,eax - shld edx,edx,5 - vpsrldq xmm1,xmm6,4 - add ecx,esi - and ebp,edi - vpxor xmm7,xmm7,xmm3 - xor edi,eax - add ecx,edx - vpxor xmm1,xmm1,xmm5 - shrd edx,edx,7 - xor ebp,eax - vmovdqa XMMWORD PTR 32[esp],xmm2 - mov esi,ecx - add ebx,DWORD PTR 52[esp] - vpxor xmm7,xmm7,xmm1 - xor edx,edi - shld ecx,ecx,5 - add ebx,ebp - and esi,edx - vpsrld xmm1,xmm7,31 - xor edx,edi - add ebx,ecx - shrd ecx,ecx,7 - xor esi,edi - vpslldq xmm3,xmm7,12 - vpaddd xmm7,xmm7,xmm7 - mov ebp,ebx - add eax,DWORD PTR 56[esp] - xor ecx,edx - shld ebx,ebx,5 - vpsrld xmm2,xmm3,30 - vpor xmm7,xmm7,xmm1 - add eax,esi - and ebp,ecx - xor ecx,edx - add eax,ebx - vpslld xmm3,xmm3,2 - vmovdqa xmm1,XMMWORD PTR 80[esp] - shrd ebx,ebx,7 - xor ebp,edx - vpxor xmm7,xmm7,xmm2 - mov esi,eax - add edi,DWORD PTR 60[esp] - xor ebx,ecx - shld eax,eax,5 - vpxor xmm7,xmm7,xmm3 - add edi,ebp - and esi,ebx - vmovdqa xmm3,XMMWORD PTR 112[esp] - xor ebx,ecx - add edi,eax - vpalignr xmm2,xmm7,xmm6,8 - vpxor xmm0,xmm0,xmm4 - shrd eax,eax,7 - xor esi,ecx - mov ebp,edi - add edx,DWORD PTR [esp] - vpxor xmm0,xmm0,xmm1 - vmovdqa XMMWORD PTR 80[esp],xmm4 - xor eax,ebx - shld edi,edi,5 - vmovdqa xmm4,xmm3 - vpaddd xmm3,xmm3,xmm7 - add edx,esi - and ebp,eax - vpxor xmm0,xmm0,xmm2 - xor eax,ebx - add edx,edi - shrd edi,edi,7 - xor ebp,ebx - vpsrld xmm2,xmm0,30 - vmovdqa XMMWORD PTR 48[esp],xmm3 - mov esi,edx - add ecx,DWORD PTR 4[esp] - xor edi,eax - shld edx,edx,5 - vpslld xmm0,xmm0,2 - add ecx,ebp - and esi,edi - xor edi,eax - add ecx,edx - shrd edx,edx,7 - xor esi,eax - mov ebp,ecx - add ebx,DWORD PTR 8[esp] - vpor xmm0,xmm0,xmm2 - xor edx,edi - shld ecx,ecx,5 - vmovdqa xmm2,XMMWORD PTR 96[esp] - add ebx,esi - and ebp,edx - xor edx,edi - add ebx,ecx - add eax,DWORD PTR 12[esp] - xor ebp,edi - mov esi,ebx - shld ebx,ebx,5 - add eax,ebp - xor esi,edx - shrd ecx,ecx,7 - add eax,ebx - vpalignr xmm3,xmm0,xmm7,8 - vpxor xmm1,xmm1,xmm5 - add edi,DWORD PTR 16[esp] - xor esi,ecx - mov ebp,eax - shld eax,eax,5 - vpxor xmm1,xmm1,xmm2 - vmovdqa XMMWORD PTR 96[esp],xmm5 - add edi,esi - xor ebp,ecx - vmovdqa xmm5,xmm4 - vpaddd xmm4,xmm4,xmm0 - shrd ebx,ebx,7 - add edi,eax - vpxor xmm1,xmm1,xmm3 - add edx,DWORD PTR 20[esp] - xor ebp,ebx - mov esi,edi - shld edi,edi,5 - vpsrld xmm3,xmm1,30 - vmovdqa XMMWORD PTR [esp],xmm4 - add edx,ebp - xor esi,ebx - shrd eax,eax,7 - add edx,edi - vpslld xmm1,xmm1,2 - add ecx,DWORD PTR 24[esp] - xor esi,eax - mov ebp,edx - shld edx,edx,5 - add ecx,esi - xor ebp,eax - shrd edi,edi,7 - add ecx,edx - vpor xmm1,xmm1,xmm3 - add ebx,DWORD PTR 28[esp] - xor ebp,edi - vmovdqa xmm3,XMMWORD PTR 64[esp] - mov esi,ecx - shld ecx,ecx,5 - add ebx,ebp - xor esi,edi - shrd edx,edx,7 - add ebx,ecx - vpalignr xmm4,xmm1,xmm0,8 - vpxor xmm2,xmm2,xmm6 - add eax,DWORD PTR 32[esp] - xor esi,edx - mov ebp,ebx - shld ebx,ebx,5 - vpxor xmm2,xmm2,xmm3 - vmovdqa XMMWORD PTR 64[esp],xmm6 - add eax,esi - xor ebp,edx - vmovdqa xmm6,XMMWORD PTR 128[esp] - vpaddd xmm5,xmm5,xmm1 - shrd ecx,ecx,7 - add eax,ebx - vpxor xmm2,xmm2,xmm4 - add edi,DWORD PTR 36[esp] - xor ebp,ecx - mov esi,eax - shld eax,eax,5 - vpsrld xmm4,xmm2,30 - vmovdqa XMMWORD PTR 16[esp],xmm5 - add edi,ebp - xor esi,ecx - shrd ebx,ebx,7 - add edi,eax - vpslld xmm2,xmm2,2 - add edx,DWORD PTR 40[esp] - xor esi,ebx - mov ebp,edi - shld edi,edi,5 - add edx,esi - xor ebp,ebx - shrd eax,eax,7 - add edx,edi - vpor xmm2,xmm2,xmm4 - add ecx,DWORD PTR 44[esp] - xor ebp,eax - vmovdqa xmm4,XMMWORD PTR 80[esp] - mov esi,edx - shld edx,edx,5 - add ecx,ebp - xor esi,eax - shrd edi,edi,7 - add ecx,edx - vpalignr xmm5,xmm2,xmm1,8 - vpxor xmm3,xmm3,xmm7 - add ebx,DWORD PTR 48[esp] - xor esi,edi - mov ebp,ecx - shld ecx,ecx,5 - vpxor xmm3,xmm3,xmm4 - vmovdqa XMMWORD PTR 80[esp],xmm7 - add ebx,esi - xor ebp,edi - vmovdqa xmm7,xmm6 - vpaddd xmm6,xmm6,xmm2 - shrd edx,edx,7 - add ebx,ecx - vpxor xmm3,xmm3,xmm5 - add eax,DWORD PTR 52[esp] - xor ebp,edx - mov esi,ebx - shld ebx,ebx,5 - vpsrld xmm5,xmm3,30 - vmovdqa XMMWORD PTR 32[esp],xmm6 - add eax,ebp - xor esi,edx - shrd ecx,ecx,7 - add eax,ebx - vpslld xmm3,xmm3,2 - add edi,DWORD PTR 56[esp] - xor esi,ecx - mov ebp,eax - shld eax,eax,5 - add edi,esi - xor ebp,ecx - shrd ebx,ebx,7 - add edi,eax - vpor xmm3,xmm3,xmm5 - add edx,DWORD PTR 60[esp] - xor ebp,ebx - vmovdqa xmm5,XMMWORD PTR 96[esp] - mov esi,edi - shld edi,edi,5 - add edx,ebp - xor esi,ebx - shrd eax,eax,7 - add edx,edi - vpalignr xmm6,xmm3,xmm2,8 - vpxor xmm4,xmm4,xmm0 - add ecx,DWORD PTR [esp] - xor esi,eax - mov ebp,edx - shld edx,edx,5 - vpxor xmm4,xmm4,xmm5 - vmovdqa XMMWORD PTR 96[esp],xmm0 - add ecx,esi - xor ebp,eax - vmovdqa xmm0,xmm7 - vpaddd xmm7,xmm7,xmm3 - shrd edi,edi,7 - add ecx,edx - vpxor xmm4,xmm4,xmm6 - add ebx,DWORD PTR 4[esp] - xor ebp,edi - mov esi,ecx - shld ecx,ecx,5 - vpsrld xmm6,xmm4,30 - vmovdqa XMMWORD PTR 48[esp],xmm7 - add ebx,ebp - xor esi,edi - shrd edx,edx,7 - add ebx,ecx - vpslld xmm4,xmm4,2 - add eax,DWORD PTR 8[esp] - xor esi,edx - mov ebp,ebx - shld ebx,ebx,5 - add eax,esi - xor ebp,edx - shrd ecx,ecx,7 - add eax,ebx - vpor xmm4,xmm4,xmm6 - add edi,DWORD PTR 12[esp] - xor ebp,ecx - vmovdqa xmm6,XMMWORD PTR 64[esp] - mov esi,eax - shld eax,eax,5 - add edi,ebp - xor esi,ecx - shrd ebx,ebx,7 - add edi,eax - vpalignr xmm7,xmm4,xmm3,8 - vpxor xmm5,xmm5,xmm1 - add edx,DWORD PTR 16[esp] - xor esi,ebx - mov ebp,edi - shld edi,edi,5 - vpxor xmm5,xmm5,xmm6 - vmovdqa XMMWORD PTR 64[esp],xmm1 - add edx,esi - xor ebp,ebx - vmovdqa xmm1,xmm0 - vpaddd xmm0,xmm0,xmm4 - shrd eax,eax,7 - add edx,edi - vpxor xmm5,xmm5,xmm7 - add ecx,DWORD PTR 20[esp] - xor ebp,eax - mov esi,edx - shld edx,edx,5 - vpsrld xmm7,xmm5,30 - vmovdqa XMMWORD PTR [esp],xmm0 - add ecx,ebp - xor esi,eax - shrd edi,edi,7 - add ecx,edx - vpslld xmm5,xmm5,2 - add ebx,DWORD PTR 24[esp] - xor esi,edi - mov ebp,ecx - shld ecx,ecx,5 - add ebx,esi - xor ebp,edi - shrd edx,edx,7 - add ebx,ecx - vpor xmm5,xmm5,xmm7 - add eax,DWORD PTR 28[esp] - vmovdqa xmm7,XMMWORD PTR 80[esp] - shrd ecx,ecx,7 - mov esi,ebx - xor ebp,edx - shld ebx,ebx,5 - add eax,ebp - xor esi,ecx - xor ecx,edx - add eax,ebx - vpalignr xmm0,xmm5,xmm4,8 - vpxor xmm6,xmm6,xmm2 - add edi,DWORD PTR 32[esp] - and esi,ecx - xor ecx,edx - shrd ebx,ebx,7 - vpxor xmm6,xmm6,xmm7 - vmovdqa XMMWORD PTR 80[esp],xmm2 - mov ebp,eax - xor esi,ecx - vmovdqa xmm2,xmm1 - vpaddd xmm1,xmm1,xmm5 - shld eax,eax,5 - add edi,esi - vpxor xmm6,xmm6,xmm0 - xor ebp,ebx - xor ebx,ecx - add edi,eax - add edx,DWORD PTR 36[esp] - vpsrld xmm0,xmm6,30 - vmovdqa XMMWORD PTR 16[esp],xmm1 - and ebp,ebx - xor ebx,ecx - shrd eax,eax,7 - mov esi,edi - vpslld xmm6,xmm6,2 - xor ebp,ebx - shld edi,edi,5 - add edx,ebp - xor esi,eax - xor eax,ebx - add edx,edi - add ecx,DWORD PTR 40[esp] - and esi,eax - vpor xmm6,xmm6,xmm0 - xor eax,ebx - shrd edi,edi,7 - vmovdqa xmm0,XMMWORD PTR 96[esp] - mov ebp,edx - xor esi,eax - shld edx,edx,5 - add ecx,esi - xor ebp,edi - xor edi,eax - add ecx,edx - add ebx,DWORD PTR 44[esp] - and ebp,edi - xor edi,eax - shrd edx,edx,7 - mov esi,ecx - xor ebp,edi - shld ecx,ecx,5 - add ebx,ebp - xor esi,edx - xor edx,edi - add ebx,ecx - vpalignr xmm1,xmm6,xmm5,8 - vpxor xmm7,xmm7,xmm3 - add eax,DWORD PTR 48[esp] - and esi,edx - xor edx,edi - shrd ecx,ecx,7 - vpxor xmm7,xmm7,xmm0 - vmovdqa XMMWORD PTR 96[esp],xmm3 - mov ebp,ebx - xor esi,edx - vmovdqa xmm3,XMMWORD PTR 144[esp] - vpaddd xmm2,xmm2,xmm6 - shld ebx,ebx,5 - add eax,esi - vpxor xmm7,xmm7,xmm1 - xor ebp,ecx - xor ecx,edx - add eax,ebx - add edi,DWORD PTR 52[esp] - vpsrld xmm1,xmm7,30 - vmovdqa XMMWORD PTR 32[esp],xmm2 - and ebp,ecx - xor ecx,edx - shrd ebx,ebx,7 - mov esi,eax - vpslld xmm7,xmm7,2 - xor ebp,ecx - shld eax,eax,5 - add edi,ebp - xor esi,ebx - xor ebx,ecx - add edi,eax - add edx,DWORD PTR 56[esp] - and esi,ebx - vpor xmm7,xmm7,xmm1 - xor ebx,ecx - shrd eax,eax,7 - vmovdqa xmm1,XMMWORD PTR 64[esp] - mov ebp,edi - xor esi,ebx - shld edi,edi,5 - add edx,esi - xor ebp,eax - xor eax,ebx - add edx,edi - add ecx,DWORD PTR 60[esp] - and ebp,eax - xor eax,ebx - shrd edi,edi,7 - mov esi,edx - xor ebp,eax - shld edx,edx,5 - add ecx,ebp - xor esi,edi - xor edi,eax - add ecx,edx - vpalignr xmm2,xmm7,xmm6,8 - vpxor xmm0,xmm0,xmm4 - add ebx,DWORD PTR [esp] - and esi,edi - xor edi,eax - shrd edx,edx,7 - vpxor xmm0,xmm0,xmm1 - vmovdqa XMMWORD PTR 64[esp],xmm4 - mov ebp,ecx - xor esi,edi - vmovdqa xmm4,xmm3 - vpaddd xmm3,xmm3,xmm7 - shld ecx,ecx,5 - add ebx,esi - vpxor xmm0,xmm0,xmm2 - xor ebp,edx - xor edx,edi - add ebx,ecx - add eax,DWORD PTR 4[esp] - vpsrld xmm2,xmm0,30 - vmovdqa XMMWORD PTR 48[esp],xmm3 - and ebp,edx - xor edx,edi - shrd ecx,ecx,7 - mov esi,ebx - vpslld xmm0,xmm0,2 - xor ebp,edx - shld ebx,ebx,5 - add eax,ebp - xor esi,ecx - xor ecx,edx - add eax,ebx - add edi,DWORD PTR 8[esp] - and esi,ecx - vpor xmm0,xmm0,xmm2 - xor ecx,edx - shrd ebx,ebx,7 - vmovdqa xmm2,XMMWORD PTR 80[esp] - mov ebp,eax - xor esi,ecx - shld eax,eax,5 - add edi,esi - xor ebp,ebx - xor ebx,ecx - add edi,eax - add edx,DWORD PTR 12[esp] - and ebp,ebx - xor ebx,ecx - shrd eax,eax,7 - mov esi,edi - xor ebp,ebx - shld edi,edi,5 - add edx,ebp - xor esi,eax - xor eax,ebx - add edx,edi - vpalignr xmm3,xmm0,xmm7,8 - vpxor xmm1,xmm1,xmm5 - add ecx,DWORD PTR 16[esp] - and esi,eax - xor eax,ebx - shrd edi,edi,7 - vpxor xmm1,xmm1,xmm2 - vmovdqa XMMWORD PTR 80[esp],xmm5 - mov ebp,edx - xor esi,eax - vmovdqa xmm5,xmm4 - vpaddd xmm4,xmm4,xmm0 - shld edx,edx,5 - add ecx,esi - vpxor xmm1,xmm1,xmm3 - xor ebp,edi - xor edi,eax - add ecx,edx - add ebx,DWORD PTR 20[esp] - vpsrld xmm3,xmm1,30 - vmovdqa XMMWORD PTR [esp],xmm4 - and ebp,edi - xor edi,eax - shrd edx,edx,7 - mov esi,ecx - vpslld xmm1,xmm1,2 - xor ebp,edi - shld ecx,ecx,5 - add ebx,ebp - xor esi,edx - xor edx,edi - add ebx,ecx - add eax,DWORD PTR 24[esp] - and esi,edx - vpor xmm1,xmm1,xmm3 - xor edx,edi - shrd ecx,ecx,7 - vmovdqa xmm3,XMMWORD PTR 96[esp] - mov ebp,ebx - xor esi,edx - shld ebx,ebx,5 - add eax,esi - xor ebp,ecx - xor ecx,edx - add eax,ebx - add edi,DWORD PTR 28[esp] - and ebp,ecx - xor ecx,edx - shrd ebx,ebx,7 - mov esi,eax - xor ebp,ecx - shld eax,eax,5 - add edi,ebp - xor esi,ebx - xor ebx,ecx - add edi,eax - vpalignr xmm4,xmm1,xmm0,8 - vpxor xmm2,xmm2,xmm6 - add edx,DWORD PTR 32[esp] - and esi,ebx - xor ebx,ecx - shrd eax,eax,7 - vpxor xmm2,xmm2,xmm3 - vmovdqa XMMWORD PTR 96[esp],xmm6 - mov ebp,edi - xor esi,ebx - vmovdqa xmm6,xmm5 - vpaddd xmm5,xmm5,xmm1 - shld edi,edi,5 - add edx,esi - vpxor xmm2,xmm2,xmm4 - xor ebp,eax - xor eax,ebx - add edx,edi - add ecx,DWORD PTR 36[esp] - vpsrld xmm4,xmm2,30 - vmovdqa XMMWORD PTR 16[esp],xmm5 - and ebp,eax - xor eax,ebx - shrd edi,edi,7 - mov esi,edx - vpslld xmm2,xmm2,2 - xor ebp,eax - shld edx,edx,5 - add ecx,ebp - xor esi,edi - xor edi,eax - add ecx,edx - add ebx,DWORD PTR 40[esp] - and esi,edi - vpor xmm2,xmm2,xmm4 - xor edi,eax - shrd edx,edx,7 - vmovdqa xmm4,XMMWORD PTR 64[esp] - mov ebp,ecx - xor esi,edi - shld ecx,ecx,5 - add ebx,esi - xor ebp,edx - xor edx,edi - add ebx,ecx - add eax,DWORD PTR 44[esp] - and ebp,edx - xor edx,edi - shrd ecx,ecx,7 - mov esi,ebx - xor ebp,edx - shld ebx,ebx,5 - add eax,ebp - xor esi,edx - add eax,ebx - vpalignr xmm5,xmm2,xmm1,8 - vpxor xmm3,xmm3,xmm7 - add edi,DWORD PTR 48[esp] - xor esi,ecx - mov ebp,eax - shld eax,eax,5 - vpxor xmm3,xmm3,xmm4 - vmovdqa XMMWORD PTR 64[esp],xmm7 - add edi,esi - xor ebp,ecx - vmovdqa xmm7,xmm6 - vpaddd xmm6,xmm6,xmm2 - shrd ebx,ebx,7 - add edi,eax - vpxor xmm3,xmm3,xmm5 - add edx,DWORD PTR 52[esp] - xor ebp,ebx - mov esi,edi - shld edi,edi,5 - vpsrld xmm5,xmm3,30 - vmovdqa XMMWORD PTR 32[esp],xmm6 - add edx,ebp - xor esi,ebx - shrd eax,eax,7 - add edx,edi - vpslld xmm3,xmm3,2 - add ecx,DWORD PTR 56[esp] - xor esi,eax - mov ebp,edx - shld edx,edx,5 - add ecx,esi - xor ebp,eax - shrd edi,edi,7 - add ecx,edx - vpor xmm3,xmm3,xmm5 - add ebx,DWORD PTR 60[esp] - xor ebp,edi - mov esi,ecx - shld ecx,ecx,5 - add ebx,ebp - xor esi,edi - shrd edx,edx,7 - add ebx,ecx - add eax,DWORD PTR [esp] - vpaddd xmm7,xmm7,xmm3 - xor esi,edx - mov ebp,ebx - shld ebx,ebx,5 - add eax,esi - vmovdqa XMMWORD PTR 48[esp],xmm7 - xor ebp,edx - shrd ecx,ecx,7 - add eax,ebx - add edi,DWORD PTR 4[esp] - xor ebp,ecx - mov esi,eax - shld eax,eax,5 - add edi,ebp - xor esi,ecx - shrd ebx,ebx,7 - add edi,eax - add edx,DWORD PTR 8[esp] - xor esi,ebx - mov ebp,edi - shld edi,edi,5 - add edx,esi - xor ebp,ebx - shrd eax,eax,7 - add edx,edi - add ecx,DWORD PTR 12[esp] - xor ebp,eax - mov esi,edx - shld edx,edx,5 - add ecx,ebp - xor esi,eax - shrd edi,edi,7 - add ecx,edx - mov ebp,DWORD PTR 196[esp] - cmp ebp,DWORD PTR 200[esp] - je $L010done - vmovdqa xmm7,XMMWORD PTR 160[esp] - vmovdqa xmm6,XMMWORD PTR 176[esp] - vmovdqu xmm0,XMMWORD PTR [ebp] - vmovdqu xmm1,XMMWORD PTR 16[ebp] - vmovdqu xmm2,XMMWORD PTR 32[ebp] - vmovdqu xmm3,XMMWORD PTR 48[ebp] - add ebp,64 - vpshufb xmm0,xmm0,xmm6 - mov DWORD PTR 196[esp],ebp - vmovdqa XMMWORD PTR 96[esp],xmm7 - add ebx,DWORD PTR 16[esp] - xor esi,edi - vpshufb xmm1,xmm1,xmm6 - mov ebp,ecx - shld ecx,ecx,5 - vpaddd xmm4,xmm0,xmm7 - add ebx,esi - xor ebp,edi - shrd edx,edx,7 - add ebx,ecx - vmovdqa XMMWORD PTR [esp],xmm4 - add eax,DWORD PTR 20[esp] - xor ebp,edx - mov esi,ebx - shld ebx,ebx,5 - add eax,ebp - xor esi,edx - shrd ecx,ecx,7 - add eax,ebx - add edi,DWORD PTR 24[esp] - xor esi,ecx - mov ebp,eax - shld eax,eax,5 - add edi,esi - xor ebp,ecx - shrd ebx,ebx,7 - add edi,eax - add edx,DWORD PTR 28[esp] - xor ebp,ebx - mov esi,edi - shld edi,edi,5 - add edx,ebp - xor esi,ebx - shrd eax,eax,7 - add edx,edi - add ecx,DWORD PTR 32[esp] - xor esi,eax - vpshufb xmm2,xmm2,xmm6 - mov ebp,edx - shld edx,edx,5 - vpaddd xmm5,xmm1,xmm7 - add ecx,esi - xor ebp,eax - shrd edi,edi,7 - add ecx,edx - vmovdqa XMMWORD PTR 16[esp],xmm5 - add ebx,DWORD PTR 36[esp] - xor ebp,edi - mov esi,ecx - shld ecx,ecx,5 - add ebx,ebp - xor esi,edi - shrd edx,edx,7 - add ebx,ecx - add eax,DWORD PTR 40[esp] - xor esi,edx - mov ebp,ebx - shld ebx,ebx,5 - add eax,esi - xor ebp,edx - shrd ecx,ecx,7 - add eax,ebx - add edi,DWORD PTR 44[esp] - xor ebp,ecx - mov esi,eax - shld eax,eax,5 - add edi,ebp - xor esi,ecx - shrd ebx,ebx,7 - add edi,eax - add edx,DWORD PTR 48[esp] - xor esi,ebx - vpshufb xmm3,xmm3,xmm6 - mov ebp,edi - shld edi,edi,5 - vpaddd xmm6,xmm2,xmm7 - add edx,esi - xor ebp,ebx - shrd eax,eax,7 - add edx,edi - vmovdqa XMMWORD PTR 32[esp],xmm6 - add ecx,DWORD PTR 52[esp] - xor ebp,eax - mov esi,edx - shld edx,edx,5 - add ecx,ebp - xor esi,eax - shrd edi,edi,7 - add ecx,edx - add ebx,DWORD PTR 56[esp] - xor esi,edi - mov ebp,ecx - shld ecx,ecx,5 - add ebx,esi - xor ebp,edi - shrd edx,edx,7 - add ebx,ecx - add eax,DWORD PTR 60[esp] - xor ebp,edx - mov esi,ebx - shld ebx,ebx,5 - add eax,ebp - shrd ecx,ecx,7 - add eax,ebx - mov ebp,DWORD PTR 192[esp] - add eax,DWORD PTR [ebp] - add esi,DWORD PTR 4[ebp] - add ecx,DWORD PTR 8[ebp] - mov DWORD PTR [ebp],eax - add edx,DWORD PTR 12[ebp] - mov DWORD PTR 4[ebp],esi - add edi,DWORD PTR 16[ebp] - mov ebx,ecx - mov DWORD PTR 8[ebp],ecx - xor ebx,edx - mov DWORD PTR 12[ebp],edx - mov DWORD PTR 16[ebp],edi - mov ebp,esi - and esi,ebx - mov ebx,ebp - jmp $L009loop -ALIGN 16 -$L010done: - add ebx,DWORD PTR 16[esp] - xor esi,edi - mov ebp,ecx - shld ecx,ecx,5 - add ebx,esi - xor ebp,edi - shrd edx,edx,7 - add ebx,ecx - add eax,DWORD PTR 20[esp] - xor ebp,edx - mov esi,ebx - shld ebx,ebx,5 - add eax,ebp - xor esi,edx - shrd ecx,ecx,7 - add eax,ebx - add edi,DWORD PTR 24[esp] - xor esi,ecx - mov ebp,eax - shld eax,eax,5 - add edi,esi - xor ebp,ecx - shrd ebx,ebx,7 - add edi,eax - add edx,DWORD PTR 28[esp] - xor ebp,ebx - mov esi,edi - shld edi,edi,5 - add edx,ebp - xor esi,ebx - shrd eax,eax,7 - add edx,edi - add ecx,DWORD PTR 32[esp] - xor esi,eax - mov ebp,edx - shld edx,edx,5 - add ecx,esi - xor ebp,eax - shrd edi,edi,7 - add ecx,edx - add ebx,DWORD PTR 36[esp] - xor ebp,edi - mov esi,ecx - shld ecx,ecx,5 - add ebx,ebp - xor esi,edi - shrd edx,edx,7 - add ebx,ecx - add eax,DWORD PTR 40[esp] - xor esi,edx - mov ebp,ebx - shld ebx,ebx,5 - add eax,esi - xor ebp,edx - shrd ecx,ecx,7 - add eax,ebx - add edi,DWORD PTR 44[esp] - xor ebp,ecx - mov esi,eax - shld eax,eax,5 - add edi,ebp - xor esi,ecx - shrd ebx,ebx,7 - add edi,eax - add edx,DWORD PTR 48[esp] - xor esi,ebx - mov ebp,edi - shld edi,edi,5 - add edx,esi - xor ebp,ebx - shrd eax,eax,7 - add edx,edi - add ecx,DWORD PTR 52[esp] - xor ebp,eax - mov esi,edx - shld edx,edx,5 - add ecx,ebp - xor esi,eax - shrd edi,edi,7 - add ecx,edx - add ebx,DWORD PTR 56[esp] - xor esi,edi - mov ebp,ecx - shld ecx,ecx,5 - add ebx,esi - xor ebp,edi - shrd edx,edx,7 - add ebx,ecx - add eax,DWORD PTR 60[esp] - xor ebp,edx - mov esi,ebx - shld ebx,ebx,5 - add eax,ebp - shrd ecx,ecx,7 - add eax,ebx - vzeroall - mov ebp,DWORD PTR 192[esp] - add eax,DWORD PTR [ebp] - mov esp,DWORD PTR 204[esp] - add esi,DWORD PTR 4[ebp] - add ecx,DWORD PTR 8[ebp] - mov DWORD PTR [ebp],eax - add edx,DWORD PTR 12[ebp] - mov DWORD PTR 4[ebp],esi - add edi,DWORD PTR 16[ebp] - mov DWORD PTR 8[ebp],ecx - mov DWORD PTR 12[ebp],edx - mov DWORD PTR 16[ebp],edi - pop edi - pop esi - pop ebx - pop ebp - ret -__sha1_block_data_order_avx ENDP -ALIGN 64 -$LK_XX_XX:: -DD 1518500249,1518500249,1518500249,1518500249 -DD 1859775393,1859775393,1859775393,1859775393 -DD 2400959708,2400959708,2400959708,2400959708 -DD 3395469782,3395469782,3395469782,3395469782 -DD 66051,67438087,134810123,202182159 -DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 -DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115 -DB 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82 -DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 -DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 -.text$ ENDS -.bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:DWORD:4 -.bss ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +;EXTERN _OPENSSL_ia32cap_P:NEAR +ALIGN 16 +_sha1_block_data_order PROC PUBLIC +$L_sha1_block_data_order_begin:: + push ebp + push ebx + push esi + push edi + call $L000pic_point +$L000pic_point: + pop ebp + lea esi,DWORD PTR _OPENSSL_ia32cap_P + lea ebp,DWORD PTR ($LK_XX_XX-$L000pic_point)[ebp] + mov eax,DWORD PTR [esi] + mov edx,DWORD PTR 4[esi] + test edx,512 + jz $L001x86 + mov ecx,DWORD PTR 8[esi] + test eax,16777216 + jz $L001x86 + test ecx,536870912 + jnz $Lshaext_shortcut + and edx,268435456 + and eax,1073741824 + or eax,edx + cmp eax,1342177280 + je $Lavx_shortcut + jmp $Lssse3_shortcut +ALIGN 16 +$L001x86: + mov ebp,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + sub esp,76 + shl eax,6 + add eax,esi + mov DWORD PTR 104[esp],eax + mov edi,DWORD PTR 16[ebp] + jmp $L002loop +ALIGN 16 +$L002loop: + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edx,DWORD PTR 12[esi] + bswap eax + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],ebx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],edx + mov eax,DWORD PTR 16[esi] + mov ebx,DWORD PTR 20[esi] + mov ecx,DWORD PTR 24[esi] + mov edx,DWORD PTR 28[esi] + bswap eax + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR 16[esp],eax + mov DWORD PTR 20[esp],ebx + mov DWORD PTR 24[esp],ecx + mov DWORD PTR 28[esp],edx + mov eax,DWORD PTR 32[esi] + mov ebx,DWORD PTR 36[esi] + mov ecx,DWORD PTR 40[esi] + mov edx,DWORD PTR 44[esi] + bswap eax + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR 32[esp],eax + mov DWORD PTR 36[esp],ebx + mov DWORD PTR 40[esp],ecx + mov DWORD PTR 44[esp],edx + mov eax,DWORD PTR 48[esi] + mov ebx,DWORD PTR 52[esi] + mov ecx,DWORD PTR 56[esi] + mov edx,DWORD PTR 60[esi] + bswap eax + bswap ebx + bswap ecx + bswap edx + mov DWORD PTR 48[esp],eax + mov DWORD PTR 52[esp],ebx + mov DWORD PTR 56[esp],ecx + mov DWORD PTR 60[esp],edx + mov DWORD PTR 100[esp],esi + mov eax,DWORD PTR [ebp] + mov ebx,DWORD PTR 4[ebp] + mov ecx,DWORD PTR 8[ebp] + mov edx,DWORD PTR 12[ebp] + ; 00_15 0 + mov esi,ecx + mov ebp,eax + rol ebp,5 + xor esi,edx + add ebp,edi + mov edi,DWORD PTR [esp] + and esi,ebx + ror ebx,2 + xor esi,edx + lea ebp,DWORD PTR 1518500249[edi*1+ebp] + add ebp,esi + ; 00_15 1 + mov edi,ebx + mov esi,ebp + rol ebp,5 + xor edi,ecx + add ebp,edx + mov edx,DWORD PTR 4[esp] + and edi,eax + ror eax,2 + xor edi,ecx + lea ebp,DWORD PTR 1518500249[edx*1+ebp] + add ebp,edi + ; 00_15 2 + mov edx,eax + mov edi,ebp + rol ebp,5 + xor edx,ebx + add ebp,ecx + mov ecx,DWORD PTR 8[esp] + and edx,esi + ror esi,2 + xor edx,ebx + lea ebp,DWORD PTR 1518500249[ecx*1+ebp] + add ebp,edx + ; 00_15 3 + mov ecx,esi + mov edx,ebp + rol ebp,5 + xor ecx,eax + add ebp,ebx + mov ebx,DWORD PTR 12[esp] + and ecx,edi + ror edi,2 + xor ecx,eax + lea ebp,DWORD PTR 1518500249[ebx*1+ebp] + add ebp,ecx + ; 00_15 4 + mov ebx,edi + mov ecx,ebp + rol ebp,5 + xor ebx,esi + add ebp,eax + mov eax,DWORD PTR 16[esp] + and ebx,edx + ror edx,2 + xor ebx,esi + lea ebp,DWORD PTR 1518500249[eax*1+ebp] + add ebp,ebx + ; 00_15 5 + mov eax,edx + mov ebx,ebp + rol ebp,5 + xor eax,edi + add ebp,esi + mov esi,DWORD PTR 20[esp] + and eax,ecx + ror ecx,2 + xor eax,edi + lea ebp,DWORD PTR 1518500249[esi*1+ebp] + add ebp,eax + ; 00_15 6 + mov esi,ecx + mov eax,ebp + rol ebp,5 + xor esi,edx + add ebp,edi + mov edi,DWORD PTR 24[esp] + and esi,ebx + ror ebx,2 + xor esi,edx + lea ebp,DWORD PTR 1518500249[edi*1+ebp] + add ebp,esi + ; 00_15 7 + mov edi,ebx + mov esi,ebp + rol ebp,5 + xor edi,ecx + add ebp,edx + mov edx,DWORD PTR 28[esp] + and edi,eax + ror eax,2 + xor edi,ecx + lea ebp,DWORD PTR 1518500249[edx*1+ebp] + add ebp,edi + ; 00_15 8 + mov edx,eax + mov edi,ebp + rol ebp,5 + xor edx,ebx + add ebp,ecx + mov ecx,DWORD PTR 32[esp] + and edx,esi + ror esi,2 + xor edx,ebx + lea ebp,DWORD PTR 1518500249[ecx*1+ebp] + add ebp,edx + ; 00_15 9 + mov ecx,esi + mov edx,ebp + rol ebp,5 + xor ecx,eax + add ebp,ebx + mov ebx,DWORD PTR 36[esp] + and ecx,edi + ror edi,2 + xor ecx,eax + lea ebp,DWORD PTR 1518500249[ebx*1+ebp] + add ebp,ecx + ; 00_15 10 + mov ebx,edi + mov ecx,ebp + rol ebp,5 + xor ebx,esi + add ebp,eax + mov eax,DWORD PTR 40[esp] + and ebx,edx + ror edx,2 + xor ebx,esi + lea ebp,DWORD PTR 1518500249[eax*1+ebp] + add ebp,ebx + ; 00_15 11 + mov eax,edx + mov ebx,ebp + rol ebp,5 + xor eax,edi + add ebp,esi + mov esi,DWORD PTR 44[esp] + and eax,ecx + ror ecx,2 + xor eax,edi + lea ebp,DWORD PTR 1518500249[esi*1+ebp] + add ebp,eax + ; 00_15 12 + mov esi,ecx + mov eax,ebp + rol ebp,5 + xor esi,edx + add ebp,edi + mov edi,DWORD PTR 48[esp] + and esi,ebx + ror ebx,2 + xor esi,edx + lea ebp,DWORD PTR 1518500249[edi*1+ebp] + add ebp,esi + ; 00_15 13 + mov edi,ebx + mov esi,ebp + rol ebp,5 + xor edi,ecx + add ebp,edx + mov edx,DWORD PTR 52[esp] + and edi,eax + ror eax,2 + xor edi,ecx + lea ebp,DWORD PTR 1518500249[edx*1+ebp] + add ebp,edi + ; 00_15 14 + mov edx,eax + mov edi,ebp + rol ebp,5 + xor edx,ebx + add ebp,ecx + mov ecx,DWORD PTR 56[esp] + and edx,esi + ror esi,2 + xor edx,ebx + lea ebp,DWORD PTR 1518500249[ecx*1+ebp] + add ebp,edx + ; 00_15 15 + mov ecx,esi + mov edx,ebp + rol ebp,5 + xor ecx,eax + add ebp,ebx + mov ebx,DWORD PTR 60[esp] + and ecx,edi + ror edi,2 + xor ecx,eax + lea ebp,DWORD PTR 1518500249[ebx*1+ebp] + mov ebx,DWORD PTR [esp] + add ecx,ebp + ; 16_19 16 + mov ebp,edi + xor ebx,DWORD PTR 8[esp] + xor ebp,esi + xor ebx,DWORD PTR 32[esp] + and ebp,edx + xor ebx,DWORD PTR 52[esp] + rol ebx,1 + xor ebp,esi + add eax,ebp + mov ebp,ecx + ror edx,2 + mov DWORD PTR [esp],ebx + rol ebp,5 + lea ebx,DWORD PTR 1518500249[eax*1+ebx] + mov eax,DWORD PTR 4[esp] + add ebx,ebp + ; 16_19 17 + mov ebp,edx + xor eax,DWORD PTR 12[esp] + xor ebp,edi + xor eax,DWORD PTR 36[esp] + and ebp,ecx + xor eax,DWORD PTR 56[esp] + rol eax,1 + xor ebp,edi + add esi,ebp + mov ebp,ebx + ror ecx,2 + mov DWORD PTR 4[esp],eax + rol ebp,5 + lea eax,DWORD PTR 1518500249[esi*1+eax] + mov esi,DWORD PTR 8[esp] + add eax,ebp + ; 16_19 18 + mov ebp,ecx + xor esi,DWORD PTR 16[esp] + xor ebp,edx + xor esi,DWORD PTR 40[esp] + and ebp,ebx + xor esi,DWORD PTR 60[esp] + rol esi,1 + xor ebp,edx + add edi,ebp + mov ebp,eax + ror ebx,2 + mov DWORD PTR 8[esp],esi + rol ebp,5 + lea esi,DWORD PTR 1518500249[edi*1+esi] + mov edi,DWORD PTR 12[esp] + add esi,ebp + ; 16_19 19 + mov ebp,ebx + xor edi,DWORD PTR 20[esp] + xor ebp,ecx + xor edi,DWORD PTR 44[esp] + and ebp,eax + xor edi,DWORD PTR [esp] + rol edi,1 + xor ebp,ecx + add edx,ebp + mov ebp,esi + ror eax,2 + mov DWORD PTR 12[esp],edi + rol ebp,5 + lea edi,DWORD PTR 1518500249[edx*1+edi] + mov edx,DWORD PTR 16[esp] + add edi,ebp + ; 20_39 20 + mov ebp,esi + xor edx,DWORD PTR 24[esp] + xor ebp,eax + xor edx,DWORD PTR 48[esp] + xor ebp,ebx + xor edx,DWORD PTR 4[esp] + rol edx,1 + add ecx,ebp + ror esi,2 + mov ebp,edi + rol ebp,5 + mov DWORD PTR 16[esp],edx + lea edx,DWORD PTR 1859775393[ecx*1+edx] + mov ecx,DWORD PTR 20[esp] + add edx,ebp + ; 20_39 21 + mov ebp,edi + xor ecx,DWORD PTR 28[esp] + xor ebp,esi + xor ecx,DWORD PTR 52[esp] + xor ebp,eax + xor ecx,DWORD PTR 8[esp] + rol ecx,1 + add ebx,ebp + ror edi,2 + mov ebp,edx + rol ebp,5 + mov DWORD PTR 20[esp],ecx + lea ecx,DWORD PTR 1859775393[ebx*1+ecx] + mov ebx,DWORD PTR 24[esp] + add ecx,ebp + ; 20_39 22 + mov ebp,edx + xor ebx,DWORD PTR 32[esp] + xor ebp,edi + xor ebx,DWORD PTR 56[esp] + xor ebp,esi + xor ebx,DWORD PTR 12[esp] + rol ebx,1 + add eax,ebp + ror edx,2 + mov ebp,ecx + rol ebp,5 + mov DWORD PTR 24[esp],ebx + lea ebx,DWORD PTR 1859775393[eax*1+ebx] + mov eax,DWORD PTR 28[esp] + add ebx,ebp + ; 20_39 23 + mov ebp,ecx + xor eax,DWORD PTR 36[esp] + xor ebp,edx + xor eax,DWORD PTR 60[esp] + xor ebp,edi + xor eax,DWORD PTR 16[esp] + rol eax,1 + add esi,ebp + ror ecx,2 + mov ebp,ebx + rol ebp,5 + mov DWORD PTR 28[esp],eax + lea eax,DWORD PTR 1859775393[esi*1+eax] + mov esi,DWORD PTR 32[esp] + add eax,ebp + ; 20_39 24 + mov ebp,ebx + xor esi,DWORD PTR 40[esp] + xor ebp,ecx + xor esi,DWORD PTR [esp] + xor ebp,edx + xor esi,DWORD PTR 20[esp] + rol esi,1 + add edi,ebp + ror ebx,2 + mov ebp,eax + rol ebp,5 + mov DWORD PTR 32[esp],esi + lea esi,DWORD PTR 1859775393[edi*1+esi] + mov edi,DWORD PTR 36[esp] + add esi,ebp + ; 20_39 25 + mov ebp,eax + xor edi,DWORD PTR 44[esp] + xor ebp,ebx + xor edi,DWORD PTR 4[esp] + xor ebp,ecx + xor edi,DWORD PTR 24[esp] + rol edi,1 + add edx,ebp + ror eax,2 + mov ebp,esi + rol ebp,5 + mov DWORD PTR 36[esp],edi + lea edi,DWORD PTR 1859775393[edx*1+edi] + mov edx,DWORD PTR 40[esp] + add edi,ebp + ; 20_39 26 + mov ebp,esi + xor edx,DWORD PTR 48[esp] + xor ebp,eax + xor edx,DWORD PTR 8[esp] + xor ebp,ebx + xor edx,DWORD PTR 28[esp] + rol edx,1 + add ecx,ebp + ror esi,2 + mov ebp,edi + rol ebp,5 + mov DWORD PTR 40[esp],edx + lea edx,DWORD PTR 1859775393[ecx*1+edx] + mov ecx,DWORD PTR 44[esp] + add edx,ebp + ; 20_39 27 + mov ebp,edi + xor ecx,DWORD PTR 52[esp] + xor ebp,esi + xor ecx,DWORD PTR 12[esp] + xor ebp,eax + xor ecx,DWORD PTR 32[esp] + rol ecx,1 + add ebx,ebp + ror edi,2 + mov ebp,edx + rol ebp,5 + mov DWORD PTR 44[esp],ecx + lea ecx,DWORD PTR 1859775393[ebx*1+ecx] + mov ebx,DWORD PTR 48[esp] + add ecx,ebp + ; 20_39 28 + mov ebp,edx + xor ebx,DWORD PTR 56[esp] + xor ebp,edi + xor ebx,DWORD PTR 16[esp] + xor ebp,esi + xor ebx,DWORD PTR 36[esp] + rol ebx,1 + add eax,ebp + ror edx,2 + mov ebp,ecx + rol ebp,5 + mov DWORD PTR 48[esp],ebx + lea ebx,DWORD PTR 1859775393[eax*1+ebx] + mov eax,DWORD PTR 52[esp] + add ebx,ebp + ; 20_39 29 + mov ebp,ecx + xor eax,DWORD PTR 60[esp] + xor ebp,edx + xor eax,DWORD PTR 20[esp] + xor ebp,edi + xor eax,DWORD PTR 40[esp] + rol eax,1 + add esi,ebp + ror ecx,2 + mov ebp,ebx + rol ebp,5 + mov DWORD PTR 52[esp],eax + lea eax,DWORD PTR 1859775393[esi*1+eax] + mov esi,DWORD PTR 56[esp] + add eax,ebp + ; 20_39 30 + mov ebp,ebx + xor esi,DWORD PTR [esp] + xor ebp,ecx + xor esi,DWORD PTR 24[esp] + xor ebp,edx + xor esi,DWORD PTR 44[esp] + rol esi,1 + add edi,ebp + ror ebx,2 + mov ebp,eax + rol ebp,5 + mov DWORD PTR 56[esp],esi + lea esi,DWORD PTR 1859775393[edi*1+esi] + mov edi,DWORD PTR 60[esp] + add esi,ebp + ; 20_39 31 + mov ebp,eax + xor edi,DWORD PTR 4[esp] + xor ebp,ebx + xor edi,DWORD PTR 28[esp] + xor ebp,ecx + xor edi,DWORD PTR 48[esp] + rol edi,1 + add edx,ebp + ror eax,2 + mov ebp,esi + rol ebp,5 + mov DWORD PTR 60[esp],edi + lea edi,DWORD PTR 1859775393[edx*1+edi] + mov edx,DWORD PTR [esp] + add edi,ebp + ; 20_39 32 + mov ebp,esi + xor edx,DWORD PTR 8[esp] + xor ebp,eax + xor edx,DWORD PTR 32[esp] + xor ebp,ebx + xor edx,DWORD PTR 52[esp] + rol edx,1 + add ecx,ebp + ror esi,2 + mov ebp,edi + rol ebp,5 + mov DWORD PTR [esp],edx + lea edx,DWORD PTR 1859775393[ecx*1+edx] + mov ecx,DWORD PTR 4[esp] + add edx,ebp + ; 20_39 33 + mov ebp,edi + xor ecx,DWORD PTR 12[esp] + xor ebp,esi + xor ecx,DWORD PTR 36[esp] + xor ebp,eax + xor ecx,DWORD PTR 56[esp] + rol ecx,1 + add ebx,ebp + ror edi,2 + mov ebp,edx + rol ebp,5 + mov DWORD PTR 4[esp],ecx + lea ecx,DWORD PTR 1859775393[ebx*1+ecx] + mov ebx,DWORD PTR 8[esp] + add ecx,ebp + ; 20_39 34 + mov ebp,edx + xor ebx,DWORD PTR 16[esp] + xor ebp,edi + xor ebx,DWORD PTR 40[esp] + xor ebp,esi + xor ebx,DWORD PTR 60[esp] + rol ebx,1 + add eax,ebp + ror edx,2 + mov ebp,ecx + rol ebp,5 + mov DWORD PTR 8[esp],ebx + lea ebx,DWORD PTR 1859775393[eax*1+ebx] + mov eax,DWORD PTR 12[esp] + add ebx,ebp + ; 20_39 35 + mov ebp,ecx + xor eax,DWORD PTR 20[esp] + xor ebp,edx + xor eax,DWORD PTR 44[esp] + xor ebp,edi + xor eax,DWORD PTR [esp] + rol eax,1 + add esi,ebp + ror ecx,2 + mov ebp,ebx + rol ebp,5 + mov DWORD PTR 12[esp],eax + lea eax,DWORD PTR 1859775393[esi*1+eax] + mov esi,DWORD PTR 16[esp] + add eax,ebp + ; 20_39 36 + mov ebp,ebx + xor esi,DWORD PTR 24[esp] + xor ebp,ecx + xor esi,DWORD PTR 48[esp] + xor ebp,edx + xor esi,DWORD PTR 4[esp] + rol esi,1 + add edi,ebp + ror ebx,2 + mov ebp,eax + rol ebp,5 + mov DWORD PTR 16[esp],esi + lea esi,DWORD PTR 1859775393[edi*1+esi] + mov edi,DWORD PTR 20[esp] + add esi,ebp + ; 20_39 37 + mov ebp,eax + xor edi,DWORD PTR 28[esp] + xor ebp,ebx + xor edi,DWORD PTR 52[esp] + xor ebp,ecx + xor edi,DWORD PTR 8[esp] + rol edi,1 + add edx,ebp + ror eax,2 + mov ebp,esi + rol ebp,5 + mov DWORD PTR 20[esp],edi + lea edi,DWORD PTR 1859775393[edx*1+edi] + mov edx,DWORD PTR 24[esp] + add edi,ebp + ; 20_39 38 + mov ebp,esi + xor edx,DWORD PTR 32[esp] + xor ebp,eax + xor edx,DWORD PTR 56[esp] + xor ebp,ebx + xor edx,DWORD PTR 12[esp] + rol edx,1 + add ecx,ebp + ror esi,2 + mov ebp,edi + rol ebp,5 + mov DWORD PTR 24[esp],edx + lea edx,DWORD PTR 1859775393[ecx*1+edx] + mov ecx,DWORD PTR 28[esp] + add edx,ebp + ; 20_39 39 + mov ebp,edi + xor ecx,DWORD PTR 36[esp] + xor ebp,esi + xor ecx,DWORD PTR 60[esp] + xor ebp,eax + xor ecx,DWORD PTR 16[esp] + rol ecx,1 + add ebx,ebp + ror edi,2 + mov ebp,edx + rol ebp,5 + mov DWORD PTR 28[esp],ecx + lea ecx,DWORD PTR 1859775393[ebx*1+ecx] + mov ebx,DWORD PTR 32[esp] + add ecx,ebp + ; 40_59 40 + mov ebp,edi + xor ebx,DWORD PTR 40[esp] + xor ebp,esi + xor ebx,DWORD PTR [esp] + and ebp,edx + xor ebx,DWORD PTR 20[esp] + rol ebx,1 + add ebp,eax + ror edx,2 + mov eax,ecx + rol eax,5 + mov DWORD PTR 32[esp],ebx + lea ebx,DWORD PTR 2400959708[ebp*1+ebx] + mov ebp,edi + add ebx,eax + and ebp,esi + mov eax,DWORD PTR 36[esp] + add ebx,ebp + ; 40_59 41 + mov ebp,edx + xor eax,DWORD PTR 44[esp] + xor ebp,edi + xor eax,DWORD PTR 4[esp] + and ebp,ecx + xor eax,DWORD PTR 24[esp] + rol eax,1 + add ebp,esi + ror ecx,2 + mov esi,ebx + rol esi,5 + mov DWORD PTR 36[esp],eax + lea eax,DWORD PTR 2400959708[ebp*1+eax] + mov ebp,edx + add eax,esi + and ebp,edi + mov esi,DWORD PTR 40[esp] + add eax,ebp + ; 40_59 42 + mov ebp,ecx + xor esi,DWORD PTR 48[esp] + xor ebp,edx + xor esi,DWORD PTR 8[esp] + and ebp,ebx + xor esi,DWORD PTR 28[esp] + rol esi,1 + add ebp,edi + ror ebx,2 + mov edi,eax + rol edi,5 + mov DWORD PTR 40[esp],esi + lea esi,DWORD PTR 2400959708[ebp*1+esi] + mov ebp,ecx + add esi,edi + and ebp,edx + mov edi,DWORD PTR 44[esp] + add esi,ebp + ; 40_59 43 + mov ebp,ebx + xor edi,DWORD PTR 52[esp] + xor ebp,ecx + xor edi,DWORD PTR 12[esp] + and ebp,eax + xor edi,DWORD PTR 32[esp] + rol edi,1 + add ebp,edx + ror eax,2 + mov edx,esi + rol edx,5 + mov DWORD PTR 44[esp],edi + lea edi,DWORD PTR 2400959708[ebp*1+edi] + mov ebp,ebx + add edi,edx + and ebp,ecx + mov edx,DWORD PTR 48[esp] + add edi,ebp + ; 40_59 44 + mov ebp,eax + xor edx,DWORD PTR 56[esp] + xor ebp,ebx + xor edx,DWORD PTR 16[esp] + and ebp,esi + xor edx,DWORD PTR 36[esp] + rol edx,1 + add ebp,ecx + ror esi,2 + mov ecx,edi + rol ecx,5 + mov DWORD PTR 48[esp],edx + lea edx,DWORD PTR 2400959708[ebp*1+edx] + mov ebp,eax + add edx,ecx + and ebp,ebx + mov ecx,DWORD PTR 52[esp] + add edx,ebp + ; 40_59 45 + mov ebp,esi + xor ecx,DWORD PTR 60[esp] + xor ebp,eax + xor ecx,DWORD PTR 20[esp] + and ebp,edi + xor ecx,DWORD PTR 40[esp] + rol ecx,1 + add ebp,ebx + ror edi,2 + mov ebx,edx + rol ebx,5 + mov DWORD PTR 52[esp],ecx + lea ecx,DWORD PTR 2400959708[ebp*1+ecx] + mov ebp,esi + add ecx,ebx + and ebp,eax + mov ebx,DWORD PTR 56[esp] + add ecx,ebp + ; 40_59 46 + mov ebp,edi + xor ebx,DWORD PTR [esp] + xor ebp,esi + xor ebx,DWORD PTR 24[esp] + and ebp,edx + xor ebx,DWORD PTR 44[esp] + rol ebx,1 + add ebp,eax + ror edx,2 + mov eax,ecx + rol eax,5 + mov DWORD PTR 56[esp],ebx + lea ebx,DWORD PTR 2400959708[ebp*1+ebx] + mov ebp,edi + add ebx,eax + and ebp,esi + mov eax,DWORD PTR 60[esp] + add ebx,ebp + ; 40_59 47 + mov ebp,edx + xor eax,DWORD PTR 4[esp] + xor ebp,edi + xor eax,DWORD PTR 28[esp] + and ebp,ecx + xor eax,DWORD PTR 48[esp] + rol eax,1 + add ebp,esi + ror ecx,2 + mov esi,ebx + rol esi,5 + mov DWORD PTR 60[esp],eax + lea eax,DWORD PTR 2400959708[ebp*1+eax] + mov ebp,edx + add eax,esi + and ebp,edi + mov esi,DWORD PTR [esp] + add eax,ebp + ; 40_59 48 + mov ebp,ecx + xor esi,DWORD PTR 8[esp] + xor ebp,edx + xor esi,DWORD PTR 32[esp] + and ebp,ebx + xor esi,DWORD PTR 52[esp] + rol esi,1 + add ebp,edi + ror ebx,2 + mov edi,eax + rol edi,5 + mov DWORD PTR [esp],esi + lea esi,DWORD PTR 2400959708[ebp*1+esi] + mov ebp,ecx + add esi,edi + and ebp,edx + mov edi,DWORD PTR 4[esp] + add esi,ebp + ; 40_59 49 + mov ebp,ebx + xor edi,DWORD PTR 12[esp] + xor ebp,ecx + xor edi,DWORD PTR 36[esp] + and ebp,eax + xor edi,DWORD PTR 56[esp] + rol edi,1 + add ebp,edx + ror eax,2 + mov edx,esi + rol edx,5 + mov DWORD PTR 4[esp],edi + lea edi,DWORD PTR 2400959708[ebp*1+edi] + mov ebp,ebx + add edi,edx + and ebp,ecx + mov edx,DWORD PTR 8[esp] + add edi,ebp + ; 40_59 50 + mov ebp,eax + xor edx,DWORD PTR 16[esp] + xor ebp,ebx + xor edx,DWORD PTR 40[esp] + and ebp,esi + xor edx,DWORD PTR 60[esp] + rol edx,1 + add ebp,ecx + ror esi,2 + mov ecx,edi + rol ecx,5 + mov DWORD PTR 8[esp],edx + lea edx,DWORD PTR 2400959708[ebp*1+edx] + mov ebp,eax + add edx,ecx + and ebp,ebx + mov ecx,DWORD PTR 12[esp] + add edx,ebp + ; 40_59 51 + mov ebp,esi + xor ecx,DWORD PTR 20[esp] + xor ebp,eax + xor ecx,DWORD PTR 44[esp] + and ebp,edi + xor ecx,DWORD PTR [esp] + rol ecx,1 + add ebp,ebx + ror edi,2 + mov ebx,edx + rol ebx,5 + mov DWORD PTR 12[esp],ecx + lea ecx,DWORD PTR 2400959708[ebp*1+ecx] + mov ebp,esi + add ecx,ebx + and ebp,eax + mov ebx,DWORD PTR 16[esp] + add ecx,ebp + ; 40_59 52 + mov ebp,edi + xor ebx,DWORD PTR 24[esp] + xor ebp,esi + xor ebx,DWORD PTR 48[esp] + and ebp,edx + xor ebx,DWORD PTR 4[esp] + rol ebx,1 + add ebp,eax + ror edx,2 + mov eax,ecx + rol eax,5 + mov DWORD PTR 16[esp],ebx + lea ebx,DWORD PTR 2400959708[ebp*1+ebx] + mov ebp,edi + add ebx,eax + and ebp,esi + mov eax,DWORD PTR 20[esp] + add ebx,ebp + ; 40_59 53 + mov ebp,edx + xor eax,DWORD PTR 28[esp] + xor ebp,edi + xor eax,DWORD PTR 52[esp] + and ebp,ecx + xor eax,DWORD PTR 8[esp] + rol eax,1 + add ebp,esi + ror ecx,2 + mov esi,ebx + rol esi,5 + mov DWORD PTR 20[esp],eax + lea eax,DWORD PTR 2400959708[ebp*1+eax] + mov ebp,edx + add eax,esi + and ebp,edi + mov esi,DWORD PTR 24[esp] + add eax,ebp + ; 40_59 54 + mov ebp,ecx + xor esi,DWORD PTR 32[esp] + xor ebp,edx + xor esi,DWORD PTR 56[esp] + and ebp,ebx + xor esi,DWORD PTR 12[esp] + rol esi,1 + add ebp,edi + ror ebx,2 + mov edi,eax + rol edi,5 + mov DWORD PTR 24[esp],esi + lea esi,DWORD PTR 2400959708[ebp*1+esi] + mov ebp,ecx + add esi,edi + and ebp,edx + mov edi,DWORD PTR 28[esp] + add esi,ebp + ; 40_59 55 + mov ebp,ebx + xor edi,DWORD PTR 36[esp] + xor ebp,ecx + xor edi,DWORD PTR 60[esp] + and ebp,eax + xor edi,DWORD PTR 16[esp] + rol edi,1 + add ebp,edx + ror eax,2 + mov edx,esi + rol edx,5 + mov DWORD PTR 28[esp],edi + lea edi,DWORD PTR 2400959708[ebp*1+edi] + mov ebp,ebx + add edi,edx + and ebp,ecx + mov edx,DWORD PTR 32[esp] + add edi,ebp + ; 40_59 56 + mov ebp,eax + xor edx,DWORD PTR 40[esp] + xor ebp,ebx + xor edx,DWORD PTR [esp] + and ebp,esi + xor edx,DWORD PTR 20[esp] + rol edx,1 + add ebp,ecx + ror esi,2 + mov ecx,edi + rol ecx,5 + mov DWORD PTR 32[esp],edx + lea edx,DWORD PTR 2400959708[ebp*1+edx] + mov ebp,eax + add edx,ecx + and ebp,ebx + mov ecx,DWORD PTR 36[esp] + add edx,ebp + ; 40_59 57 + mov ebp,esi + xor ecx,DWORD PTR 44[esp] + xor ebp,eax + xor ecx,DWORD PTR 4[esp] + and ebp,edi + xor ecx,DWORD PTR 24[esp] + rol ecx,1 + add ebp,ebx + ror edi,2 + mov ebx,edx + rol ebx,5 + mov DWORD PTR 36[esp],ecx + lea ecx,DWORD PTR 2400959708[ebp*1+ecx] + mov ebp,esi + add ecx,ebx + and ebp,eax + mov ebx,DWORD PTR 40[esp] + add ecx,ebp + ; 40_59 58 + mov ebp,edi + xor ebx,DWORD PTR 48[esp] + xor ebp,esi + xor ebx,DWORD PTR 8[esp] + and ebp,edx + xor ebx,DWORD PTR 28[esp] + rol ebx,1 + add ebp,eax + ror edx,2 + mov eax,ecx + rol eax,5 + mov DWORD PTR 40[esp],ebx + lea ebx,DWORD PTR 2400959708[ebp*1+ebx] + mov ebp,edi + add ebx,eax + and ebp,esi + mov eax,DWORD PTR 44[esp] + add ebx,ebp + ; 40_59 59 + mov ebp,edx + xor eax,DWORD PTR 52[esp] + xor ebp,edi + xor eax,DWORD PTR 12[esp] + and ebp,ecx + xor eax,DWORD PTR 32[esp] + rol eax,1 + add ebp,esi + ror ecx,2 + mov esi,ebx + rol esi,5 + mov DWORD PTR 44[esp],eax + lea eax,DWORD PTR 2400959708[ebp*1+eax] + mov ebp,edx + add eax,esi + and ebp,edi + mov esi,DWORD PTR 48[esp] + add eax,ebp + ; 20_39 60 + mov ebp,ebx + xor esi,DWORD PTR 56[esp] + xor ebp,ecx + xor esi,DWORD PTR 16[esp] + xor ebp,edx + xor esi,DWORD PTR 36[esp] + rol esi,1 + add edi,ebp + ror ebx,2 + mov ebp,eax + rol ebp,5 + mov DWORD PTR 48[esp],esi + lea esi,DWORD PTR 3395469782[edi*1+esi] + mov edi,DWORD PTR 52[esp] + add esi,ebp + ; 20_39 61 + mov ebp,eax + xor edi,DWORD PTR 60[esp] + xor ebp,ebx + xor edi,DWORD PTR 20[esp] + xor ebp,ecx + xor edi,DWORD PTR 40[esp] + rol edi,1 + add edx,ebp + ror eax,2 + mov ebp,esi + rol ebp,5 + mov DWORD PTR 52[esp],edi + lea edi,DWORD PTR 3395469782[edx*1+edi] + mov edx,DWORD PTR 56[esp] + add edi,ebp + ; 20_39 62 + mov ebp,esi + xor edx,DWORD PTR [esp] + xor ebp,eax + xor edx,DWORD PTR 24[esp] + xor ebp,ebx + xor edx,DWORD PTR 44[esp] + rol edx,1 + add ecx,ebp + ror esi,2 + mov ebp,edi + rol ebp,5 + mov DWORD PTR 56[esp],edx + lea edx,DWORD PTR 3395469782[ecx*1+edx] + mov ecx,DWORD PTR 60[esp] + add edx,ebp + ; 20_39 63 + mov ebp,edi + xor ecx,DWORD PTR 4[esp] + xor ebp,esi + xor ecx,DWORD PTR 28[esp] + xor ebp,eax + xor ecx,DWORD PTR 48[esp] + rol ecx,1 + add ebx,ebp + ror edi,2 + mov ebp,edx + rol ebp,5 + mov DWORD PTR 60[esp],ecx + lea ecx,DWORD PTR 3395469782[ebx*1+ecx] + mov ebx,DWORD PTR [esp] + add ecx,ebp + ; 20_39 64 + mov ebp,edx + xor ebx,DWORD PTR 8[esp] + xor ebp,edi + xor ebx,DWORD PTR 32[esp] + xor ebp,esi + xor ebx,DWORD PTR 52[esp] + rol ebx,1 + add eax,ebp + ror edx,2 + mov ebp,ecx + rol ebp,5 + mov DWORD PTR [esp],ebx + lea ebx,DWORD PTR 3395469782[eax*1+ebx] + mov eax,DWORD PTR 4[esp] + add ebx,ebp + ; 20_39 65 + mov ebp,ecx + xor eax,DWORD PTR 12[esp] + xor ebp,edx + xor eax,DWORD PTR 36[esp] + xor ebp,edi + xor eax,DWORD PTR 56[esp] + rol eax,1 + add esi,ebp + ror ecx,2 + mov ebp,ebx + rol ebp,5 + mov DWORD PTR 4[esp],eax + lea eax,DWORD PTR 3395469782[esi*1+eax] + mov esi,DWORD PTR 8[esp] + add eax,ebp + ; 20_39 66 + mov ebp,ebx + xor esi,DWORD PTR 16[esp] + xor ebp,ecx + xor esi,DWORD PTR 40[esp] + xor ebp,edx + xor esi,DWORD PTR 60[esp] + rol esi,1 + add edi,ebp + ror ebx,2 + mov ebp,eax + rol ebp,5 + mov DWORD PTR 8[esp],esi + lea esi,DWORD PTR 3395469782[edi*1+esi] + mov edi,DWORD PTR 12[esp] + add esi,ebp + ; 20_39 67 + mov ebp,eax + xor edi,DWORD PTR 20[esp] + xor ebp,ebx + xor edi,DWORD PTR 44[esp] + xor ebp,ecx + xor edi,DWORD PTR [esp] + rol edi,1 + add edx,ebp + ror eax,2 + mov ebp,esi + rol ebp,5 + mov DWORD PTR 12[esp],edi + lea edi,DWORD PTR 3395469782[edx*1+edi] + mov edx,DWORD PTR 16[esp] + add edi,ebp + ; 20_39 68 + mov ebp,esi + xor edx,DWORD PTR 24[esp] + xor ebp,eax + xor edx,DWORD PTR 48[esp] + xor ebp,ebx + xor edx,DWORD PTR 4[esp] + rol edx,1 + add ecx,ebp + ror esi,2 + mov ebp,edi + rol ebp,5 + mov DWORD PTR 16[esp],edx + lea edx,DWORD PTR 3395469782[ecx*1+edx] + mov ecx,DWORD PTR 20[esp] + add edx,ebp + ; 20_39 69 + mov ebp,edi + xor ecx,DWORD PTR 28[esp] + xor ebp,esi + xor ecx,DWORD PTR 52[esp] + xor ebp,eax + xor ecx,DWORD PTR 8[esp] + rol ecx,1 + add ebx,ebp + ror edi,2 + mov ebp,edx + rol ebp,5 + mov DWORD PTR 20[esp],ecx + lea ecx,DWORD PTR 3395469782[ebx*1+ecx] + mov ebx,DWORD PTR 24[esp] + add ecx,ebp + ; 20_39 70 + mov ebp,edx + xor ebx,DWORD PTR 32[esp] + xor ebp,edi + xor ebx,DWORD PTR 56[esp] + xor ebp,esi + xor ebx,DWORD PTR 12[esp] + rol ebx,1 + add eax,ebp + ror edx,2 + mov ebp,ecx + rol ebp,5 + mov DWORD PTR 24[esp],ebx + lea ebx,DWORD PTR 3395469782[eax*1+ebx] + mov eax,DWORD PTR 28[esp] + add ebx,ebp + ; 20_39 71 + mov ebp,ecx + xor eax,DWORD PTR 36[esp] + xor ebp,edx + xor eax,DWORD PTR 60[esp] + xor ebp,edi + xor eax,DWORD PTR 16[esp] + rol eax,1 + add esi,ebp + ror ecx,2 + mov ebp,ebx + rol ebp,5 + mov DWORD PTR 28[esp],eax + lea eax,DWORD PTR 3395469782[esi*1+eax] + mov esi,DWORD PTR 32[esp] + add eax,ebp + ; 20_39 72 + mov ebp,ebx + xor esi,DWORD PTR 40[esp] + xor ebp,ecx + xor esi,DWORD PTR [esp] + xor ebp,edx + xor esi,DWORD PTR 20[esp] + rol esi,1 + add edi,ebp + ror ebx,2 + mov ebp,eax + rol ebp,5 + mov DWORD PTR 32[esp],esi + lea esi,DWORD PTR 3395469782[edi*1+esi] + mov edi,DWORD PTR 36[esp] + add esi,ebp + ; 20_39 73 + mov ebp,eax + xor edi,DWORD PTR 44[esp] + xor ebp,ebx + xor edi,DWORD PTR 4[esp] + xor ebp,ecx + xor edi,DWORD PTR 24[esp] + rol edi,1 + add edx,ebp + ror eax,2 + mov ebp,esi + rol ebp,5 + mov DWORD PTR 36[esp],edi + lea edi,DWORD PTR 3395469782[edx*1+edi] + mov edx,DWORD PTR 40[esp] + add edi,ebp + ; 20_39 74 + mov ebp,esi + xor edx,DWORD PTR 48[esp] + xor ebp,eax + xor edx,DWORD PTR 8[esp] + xor ebp,ebx + xor edx,DWORD PTR 28[esp] + rol edx,1 + add ecx,ebp + ror esi,2 + mov ebp,edi + rol ebp,5 + mov DWORD PTR 40[esp],edx + lea edx,DWORD PTR 3395469782[ecx*1+edx] + mov ecx,DWORD PTR 44[esp] + add edx,ebp + ; 20_39 75 + mov ebp,edi + xor ecx,DWORD PTR 52[esp] + xor ebp,esi + xor ecx,DWORD PTR 12[esp] + xor ebp,eax + xor ecx,DWORD PTR 32[esp] + rol ecx,1 + add ebx,ebp + ror edi,2 + mov ebp,edx + rol ebp,5 + mov DWORD PTR 44[esp],ecx + lea ecx,DWORD PTR 3395469782[ebx*1+ecx] + mov ebx,DWORD PTR 48[esp] + add ecx,ebp + ; 20_39 76 + mov ebp,edx + xor ebx,DWORD PTR 56[esp] + xor ebp,edi + xor ebx,DWORD PTR 16[esp] + xor ebp,esi + xor ebx,DWORD PTR 36[esp] + rol ebx,1 + add eax,ebp + ror edx,2 + mov ebp,ecx + rol ebp,5 + mov DWORD PTR 48[esp],ebx + lea ebx,DWORD PTR 3395469782[eax*1+ebx] + mov eax,DWORD PTR 52[esp] + add ebx,ebp + ; 20_39 77 + mov ebp,ecx + xor eax,DWORD PTR 60[esp] + xor ebp,edx + xor eax,DWORD PTR 20[esp] + xor ebp,edi + xor eax,DWORD PTR 40[esp] + rol eax,1 + add esi,ebp + ror ecx,2 + mov ebp,ebx + rol ebp,5 + lea eax,DWORD PTR 3395469782[esi*1+eax] + mov esi,DWORD PTR 56[esp] + add eax,ebp + ; 20_39 78 + mov ebp,ebx + xor esi,DWORD PTR [esp] + xor ebp,ecx + xor esi,DWORD PTR 24[esp] + xor ebp,edx + xor esi,DWORD PTR 44[esp] + rol esi,1 + add edi,ebp + ror ebx,2 + mov ebp,eax + rol ebp,5 + lea esi,DWORD PTR 3395469782[edi*1+esi] + mov edi,DWORD PTR 60[esp] + add esi,ebp + ; 20_39 79 + mov ebp,eax + xor edi,DWORD PTR 4[esp] + xor ebp,ebx + xor edi,DWORD PTR 28[esp] + xor ebp,ecx + xor edi,DWORD PTR 48[esp] + rol edi,1 + add edx,ebp + ror eax,2 + mov ebp,esi + rol ebp,5 + lea edi,DWORD PTR 3395469782[edx*1+edi] + add edi,ebp + mov ebp,DWORD PTR 96[esp] + mov edx,DWORD PTR 100[esp] + add edi,DWORD PTR [ebp] + add esi,DWORD PTR 4[ebp] + add eax,DWORD PTR 8[ebp] + add ebx,DWORD PTR 12[ebp] + add ecx,DWORD PTR 16[ebp] + mov DWORD PTR [ebp],edi + add edx,64 + mov DWORD PTR 4[ebp],esi + cmp edx,DWORD PTR 104[esp] + mov DWORD PTR 8[ebp],eax + mov edi,ecx + mov DWORD PTR 12[ebp],ebx + mov esi,edx + mov DWORD PTR 16[ebp],ecx + jb $L002loop + add esp,76 + pop edi + pop esi + pop ebx + pop ebp + ret +_sha1_block_data_order ENDP +ALIGN 16 +__sha1_block_data_order_shaext PROC PRIVATE + push ebp + push ebx + push esi + push edi + call $L003pic_point +$L003pic_point: + pop ebp + lea ebp,DWORD PTR ($LK_XX_XX-$L003pic_point)[ebp] +$Lshaext_shortcut:: + mov edi,DWORD PTR 20[esp] + mov ebx,esp + mov esi,DWORD PTR 24[esp] + mov ecx,DWORD PTR 28[esp] + sub esp,32 + movdqu xmm0,XMMWORD PTR [edi] + movd xmm1,DWORD PTR 16[edi] + and esp,-32 + movdqa xmm3,XMMWORD PTR 80[ebp] + movdqu xmm4,XMMWORD PTR [esi] + pshufd xmm0,xmm0,27 + movdqu xmm5,XMMWORD PTR 16[esi] + pshufd xmm1,xmm1,27 + movdqu xmm6,XMMWORD PTR 32[esi] +DB 102,15,56,0,227 + movdqu xmm7,XMMWORD PTR 48[esi] +DB 102,15,56,0,235 +DB 102,15,56,0,243 +DB 102,15,56,0,251 + jmp $L004loop_shaext +ALIGN 16 +$L004loop_shaext: + dec ecx + lea eax,DWORD PTR 64[esi] + movdqa XMMWORD PTR [esp],xmm1 + paddd xmm1,xmm4 + cmovne esi,eax + movdqa XMMWORD PTR 16[esp],xmm0 +DB 15,56,201,229 + movdqa xmm2,xmm0 +DB 15,58,204,193,0 +DB 15,56,200,213 + pxor xmm4,xmm6 +DB 15,56,201,238 +DB 15,56,202,231 + movdqa xmm1,xmm0 +DB 15,58,204,194,0 +DB 15,56,200,206 + pxor xmm5,xmm7 +DB 15,56,202,236 +DB 15,56,201,247 + movdqa xmm2,xmm0 +DB 15,58,204,193,0 +DB 15,56,200,215 + pxor xmm6,xmm4 +DB 15,56,201,252 +DB 15,56,202,245 + movdqa xmm1,xmm0 +DB 15,58,204,194,0 +DB 15,56,200,204 + pxor xmm7,xmm5 +DB 15,56,202,254 +DB 15,56,201,229 + movdqa xmm2,xmm0 +DB 15,58,204,193,0 +DB 15,56,200,213 + pxor xmm4,xmm6 +DB 15,56,201,238 +DB 15,56,202,231 + movdqa xmm1,xmm0 +DB 15,58,204,194,1 +DB 15,56,200,206 + pxor xmm5,xmm7 +DB 15,56,202,236 +DB 15,56,201,247 + movdqa xmm2,xmm0 +DB 15,58,204,193,1 +DB 15,56,200,215 + pxor xmm6,xmm4 +DB 15,56,201,252 +DB 15,56,202,245 + movdqa xmm1,xmm0 +DB 15,58,204,194,1 +DB 15,56,200,204 + pxor xmm7,xmm5 +DB 15,56,202,254 +DB 15,56,201,229 + movdqa xmm2,xmm0 +DB 15,58,204,193,1 +DB 15,56,200,213 + pxor xmm4,xmm6 +DB 15,56,201,238 +DB 15,56,202,231 + movdqa xmm1,xmm0 +DB 15,58,204,194,1 +DB 15,56,200,206 + pxor xmm5,xmm7 +DB 15,56,202,236 +DB 15,56,201,247 + movdqa xmm2,xmm0 +DB 15,58,204,193,2 +DB 15,56,200,215 + pxor xmm6,xmm4 +DB 15,56,201,252 +DB 15,56,202,245 + movdqa xmm1,xmm0 +DB 15,58,204,194,2 +DB 15,56,200,204 + pxor xmm7,xmm5 +DB 15,56,202,254 +DB 15,56,201,229 + movdqa xmm2,xmm0 +DB 15,58,204,193,2 +DB 15,56,200,213 + pxor xmm4,xmm6 +DB 15,56,201,238 +DB 15,56,202,231 + movdqa xmm1,xmm0 +DB 15,58,204,194,2 +DB 15,56,200,206 + pxor xmm5,xmm7 +DB 15,56,202,236 +DB 15,56,201,247 + movdqa xmm2,xmm0 +DB 15,58,204,193,2 +DB 15,56,200,215 + pxor xmm6,xmm4 +DB 15,56,201,252 +DB 15,56,202,245 + movdqa xmm1,xmm0 +DB 15,58,204,194,3 +DB 15,56,200,204 + pxor xmm7,xmm5 +DB 15,56,202,254 + movdqu xmm4,XMMWORD PTR [esi] + movdqa xmm2,xmm0 +DB 15,58,204,193,3 +DB 15,56,200,213 + movdqu xmm5,XMMWORD PTR 16[esi] +DB 102,15,56,0,227 + movdqa xmm1,xmm0 +DB 15,58,204,194,3 +DB 15,56,200,206 + movdqu xmm6,XMMWORD PTR 32[esi] +DB 102,15,56,0,235 + movdqa xmm2,xmm0 +DB 15,58,204,193,3 +DB 15,56,200,215 + movdqu xmm7,XMMWORD PTR 48[esi] +DB 102,15,56,0,243 + movdqa xmm1,xmm0 +DB 15,58,204,194,3 + movdqa xmm2,XMMWORD PTR [esp] +DB 102,15,56,0,251 +DB 15,56,200,202 + paddd xmm0,XMMWORD PTR 16[esp] + jnz $L004loop_shaext + pshufd xmm0,xmm0,27 + pshufd xmm1,xmm1,27 + movdqu XMMWORD PTR [edi],xmm0 + movd DWORD PTR 16[edi],xmm1 + mov esp,ebx + pop edi + pop esi + pop ebx + pop ebp + ret +__sha1_block_data_order_shaext ENDP +ALIGN 16 +__sha1_block_data_order_ssse3 PROC PRIVATE + push ebp + push ebx + push esi + push edi + call $L005pic_point +$L005pic_point: + pop ebp + lea ebp,DWORD PTR ($LK_XX_XX-$L005pic_point)[ebp] +$Lssse3_shortcut:: + movdqa xmm7,XMMWORD PTR [ebp] + movdqa xmm0,XMMWORD PTR 16[ebp] + movdqa xmm1,XMMWORD PTR 32[ebp] + movdqa xmm2,XMMWORD PTR 48[ebp] + movdqa xmm6,XMMWORD PTR 64[ebp] + mov edi,DWORD PTR 20[esp] + mov ebp,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov esi,esp + sub esp,208 + and esp,-64 + movdqa XMMWORD PTR 112[esp],xmm0 + movdqa XMMWORD PTR 128[esp],xmm1 + movdqa XMMWORD PTR 144[esp],xmm2 + shl edx,6 + movdqa XMMWORD PTR 160[esp],xmm7 + add edx,ebp + movdqa XMMWORD PTR 176[esp],xmm6 + add ebp,64 + mov DWORD PTR 192[esp],edi + mov DWORD PTR 196[esp],ebp + mov DWORD PTR 200[esp],edx + mov DWORD PTR 204[esp],esi + mov eax,DWORD PTR [edi] + mov ebx,DWORD PTR 4[edi] + mov ecx,DWORD PTR 8[edi] + mov edx,DWORD PTR 12[edi] + mov edi,DWORD PTR 16[edi] + mov esi,ebx + movdqu xmm0,XMMWORD PTR [ebp-64] + movdqu xmm1,XMMWORD PTR [ebp-48] + movdqu xmm2,XMMWORD PTR [ebp-32] + movdqu xmm3,XMMWORD PTR [ebp-16] +DB 102,15,56,0,198 +DB 102,15,56,0,206 +DB 102,15,56,0,214 + movdqa XMMWORD PTR 96[esp],xmm7 +DB 102,15,56,0,222 + paddd xmm0,xmm7 + paddd xmm1,xmm7 + paddd xmm2,xmm7 + movdqa XMMWORD PTR [esp],xmm0 + psubd xmm0,xmm7 + movdqa XMMWORD PTR 16[esp],xmm1 + psubd xmm1,xmm7 + movdqa XMMWORD PTR 32[esp],xmm2 + mov ebp,ecx + psubd xmm2,xmm7 + xor ebp,edx + pshufd xmm4,xmm0,238 + and esi,ebp + jmp $L006loop +ALIGN 16 +$L006loop: + ror ebx,2 + xor esi,edx + mov ebp,eax + punpcklqdq xmm4,xmm1 + movdqa xmm6,xmm3 + add edi,DWORD PTR [esp] + xor ebx,ecx + paddd xmm7,xmm3 + movdqa XMMWORD PTR 64[esp],xmm0 + rol eax,5 + add edi,esi + psrldq xmm6,4 + and ebp,ebx + xor ebx,ecx + pxor xmm4,xmm0 + add edi,eax + ror eax,7 + pxor xmm6,xmm2 + xor ebp,ecx + mov esi,edi + add edx,DWORD PTR 4[esp] + pxor xmm4,xmm6 + xor eax,ebx + rol edi,5 + movdqa XMMWORD PTR 48[esp],xmm7 + add edx,ebp + and esi,eax + movdqa xmm0,xmm4 + xor eax,ebx + add edx,edi + ror edi,7 + movdqa xmm6,xmm4 + xor esi,ebx + pslldq xmm0,12 + paddd xmm4,xmm4 + mov ebp,edx + add ecx,DWORD PTR 8[esp] + psrld xmm6,31 + xor edi,eax + rol edx,5 + movdqa xmm7,xmm0 + add ecx,esi + and ebp,edi + xor edi,eax + psrld xmm0,30 + add ecx,edx + ror edx,7 + por xmm4,xmm6 + xor ebp,eax + mov esi,ecx + add ebx,DWORD PTR 12[esp] + pslld xmm7,2 + xor edx,edi + rol ecx,5 + pxor xmm4,xmm0 + movdqa xmm0,XMMWORD PTR 96[esp] + add ebx,ebp + and esi,edx + pxor xmm4,xmm7 + pshufd xmm5,xmm1,238 + xor edx,edi + add ebx,ecx + ror ecx,7 + xor esi,edi + mov ebp,ebx + punpcklqdq xmm5,xmm2 + movdqa xmm7,xmm4 + add eax,DWORD PTR 16[esp] + xor ecx,edx + paddd xmm0,xmm4 + movdqa XMMWORD PTR 80[esp],xmm1 + rol ebx,5 + add eax,esi + psrldq xmm7,4 + and ebp,ecx + xor ecx,edx + pxor xmm5,xmm1 + add eax,ebx + ror ebx,7 + pxor xmm7,xmm3 + xor ebp,edx + mov esi,eax + add edi,DWORD PTR 20[esp] + pxor xmm5,xmm7 + xor ebx,ecx + rol eax,5 + movdqa XMMWORD PTR [esp],xmm0 + add edi,ebp + and esi,ebx + movdqa xmm1,xmm5 + xor ebx,ecx + add edi,eax + ror eax,7 + movdqa xmm7,xmm5 + xor esi,ecx + pslldq xmm1,12 + paddd xmm5,xmm5 + mov ebp,edi + add edx,DWORD PTR 24[esp] + psrld xmm7,31 + xor eax,ebx + rol edi,5 + movdqa xmm0,xmm1 + add edx,esi + and ebp,eax + xor eax,ebx + psrld xmm1,30 + add edx,edi + ror edi,7 + por xmm5,xmm7 + xor ebp,ebx + mov esi,edx + add ecx,DWORD PTR 28[esp] + pslld xmm0,2 + xor edi,eax + rol edx,5 + pxor xmm5,xmm1 + movdqa xmm1,XMMWORD PTR 112[esp] + add ecx,ebp + and esi,edi + pxor xmm5,xmm0 + pshufd xmm6,xmm2,238 + xor edi,eax + add ecx,edx + ror edx,7 + xor esi,eax + mov ebp,ecx + punpcklqdq xmm6,xmm3 + movdqa xmm0,xmm5 + add ebx,DWORD PTR 32[esp] + xor edx,edi + paddd xmm1,xmm5 + movdqa XMMWORD PTR 96[esp],xmm2 + rol ecx,5 + add ebx,esi + psrldq xmm0,4 + and ebp,edx + xor edx,edi + pxor xmm6,xmm2 + add ebx,ecx + ror ecx,7 + pxor xmm0,xmm4 + xor ebp,edi + mov esi,ebx + add eax,DWORD PTR 36[esp] + pxor xmm6,xmm0 + xor ecx,edx + rol ebx,5 + movdqa XMMWORD PTR 16[esp],xmm1 + add eax,ebp + and esi,ecx + movdqa xmm2,xmm6 + xor ecx,edx + add eax,ebx + ror ebx,7 + movdqa xmm0,xmm6 + xor esi,edx + pslldq xmm2,12 + paddd xmm6,xmm6 + mov ebp,eax + add edi,DWORD PTR 40[esp] + psrld xmm0,31 + xor ebx,ecx + rol eax,5 + movdqa xmm1,xmm2 + add edi,esi + and ebp,ebx + xor ebx,ecx + psrld xmm2,30 + add edi,eax + ror eax,7 + por xmm6,xmm0 + xor ebp,ecx + movdqa xmm0,XMMWORD PTR 64[esp] + mov esi,edi + add edx,DWORD PTR 44[esp] + pslld xmm1,2 + xor eax,ebx + rol edi,5 + pxor xmm6,xmm2 + movdqa xmm2,XMMWORD PTR 112[esp] + add edx,ebp + and esi,eax + pxor xmm6,xmm1 + pshufd xmm7,xmm3,238 + xor eax,ebx + add edx,edi + ror edi,7 + xor esi,ebx + mov ebp,edx + punpcklqdq xmm7,xmm4 + movdqa xmm1,xmm6 + add ecx,DWORD PTR 48[esp] + xor edi,eax + paddd xmm2,xmm6 + movdqa XMMWORD PTR 64[esp],xmm3 + rol edx,5 + add ecx,esi + psrldq xmm1,4 + and ebp,edi + xor edi,eax + pxor xmm7,xmm3 + add ecx,edx + ror edx,7 + pxor xmm1,xmm5 + xor ebp,eax + mov esi,ecx + add ebx,DWORD PTR 52[esp] + pxor xmm7,xmm1 + xor edx,edi + rol ecx,5 + movdqa XMMWORD PTR 32[esp],xmm2 + add ebx,ebp + and esi,edx + movdqa xmm3,xmm7 + xor edx,edi + add ebx,ecx + ror ecx,7 + movdqa xmm1,xmm7 + xor esi,edi + pslldq xmm3,12 + paddd xmm7,xmm7 + mov ebp,ebx + add eax,DWORD PTR 56[esp] + psrld xmm1,31 + xor ecx,edx + rol ebx,5 + movdqa xmm2,xmm3 + add eax,esi + and ebp,ecx + xor ecx,edx + psrld xmm3,30 + add eax,ebx + ror ebx,7 + por xmm7,xmm1 + xor ebp,edx + movdqa xmm1,XMMWORD PTR 80[esp] + mov esi,eax + add edi,DWORD PTR 60[esp] + pslld xmm2,2 + xor ebx,ecx + rol eax,5 + pxor xmm7,xmm3 + movdqa xmm3,XMMWORD PTR 112[esp] + add edi,ebp + and esi,ebx + pxor xmm7,xmm2 + pshufd xmm2,xmm6,238 + xor ebx,ecx + add edi,eax + ror eax,7 + pxor xmm0,xmm4 + punpcklqdq xmm2,xmm7 + xor esi,ecx + mov ebp,edi + add edx,DWORD PTR [esp] + pxor xmm0,xmm1 + movdqa XMMWORD PTR 80[esp],xmm4 + xor eax,ebx + rol edi,5 + movdqa xmm4,xmm3 + add edx,esi + paddd xmm3,xmm7 + and ebp,eax + pxor xmm0,xmm2 + xor eax,ebx + add edx,edi + ror edi,7 + xor ebp,ebx + movdqa xmm2,xmm0 + movdqa XMMWORD PTR 48[esp],xmm3 + mov esi,edx + add ecx,DWORD PTR 4[esp] + xor edi,eax + rol edx,5 + pslld xmm0,2 + add ecx,ebp + and esi,edi + psrld xmm2,30 + xor edi,eax + add ecx,edx + ror edx,7 + xor esi,eax + mov ebp,ecx + add ebx,DWORD PTR 8[esp] + xor edx,edi + rol ecx,5 + por xmm0,xmm2 + add ebx,esi + and ebp,edx + movdqa xmm2,XMMWORD PTR 96[esp] + xor edx,edi + add ebx,ecx + add eax,DWORD PTR 12[esp] + xor ebp,edi + mov esi,ebx + pshufd xmm3,xmm7,238 + rol ebx,5 + add eax,ebp + xor esi,edx + ror ecx,7 + add eax,ebx + add edi,DWORD PTR 16[esp] + pxor xmm1,xmm5 + punpcklqdq xmm3,xmm0 + xor esi,ecx + mov ebp,eax + rol eax,5 + pxor xmm1,xmm2 + movdqa XMMWORD PTR 96[esp],xmm5 + add edi,esi + xor ebp,ecx + movdqa xmm5,xmm4 + ror ebx,7 + paddd xmm4,xmm0 + add edi,eax + pxor xmm1,xmm3 + add edx,DWORD PTR 20[esp] + xor ebp,ebx + mov esi,edi + rol edi,5 + movdqa xmm3,xmm1 + movdqa XMMWORD PTR [esp],xmm4 + add edx,ebp + xor esi,ebx + ror eax,7 + add edx,edi + pslld xmm1,2 + add ecx,DWORD PTR 24[esp] + xor esi,eax + psrld xmm3,30 + mov ebp,edx + rol edx,5 + add ecx,esi + xor ebp,eax + ror edi,7 + add ecx,edx + por xmm1,xmm3 + add ebx,DWORD PTR 28[esp] + xor ebp,edi + movdqa xmm3,XMMWORD PTR 64[esp] + mov esi,ecx + rol ecx,5 + add ebx,ebp + xor esi,edi + ror edx,7 + pshufd xmm4,xmm0,238 + add ebx,ecx + add eax,DWORD PTR 32[esp] + pxor xmm2,xmm6 + punpcklqdq xmm4,xmm1 + xor esi,edx + mov ebp,ebx + rol ebx,5 + pxor xmm2,xmm3 + movdqa XMMWORD PTR 64[esp],xmm6 + add eax,esi + xor ebp,edx + movdqa xmm6,XMMWORD PTR 128[esp] + ror ecx,7 + paddd xmm5,xmm1 + add eax,ebx + pxor xmm2,xmm4 + add edi,DWORD PTR 36[esp] + xor ebp,ecx + mov esi,eax + rol eax,5 + movdqa xmm4,xmm2 + movdqa XMMWORD PTR 16[esp],xmm5 + add edi,ebp + xor esi,ecx + ror ebx,7 + add edi,eax + pslld xmm2,2 + add edx,DWORD PTR 40[esp] + xor esi,ebx + psrld xmm4,30 + mov ebp,edi + rol edi,5 + add edx,esi + xor ebp,ebx + ror eax,7 + add edx,edi + por xmm2,xmm4 + add ecx,DWORD PTR 44[esp] + xor ebp,eax + movdqa xmm4,XMMWORD PTR 80[esp] + mov esi,edx + rol edx,5 + add ecx,ebp + xor esi,eax + ror edi,7 + pshufd xmm5,xmm1,238 + add ecx,edx + add ebx,DWORD PTR 48[esp] + pxor xmm3,xmm7 + punpcklqdq xmm5,xmm2 + xor esi,edi + mov ebp,ecx + rol ecx,5 + pxor xmm3,xmm4 + movdqa XMMWORD PTR 80[esp],xmm7 + add ebx,esi + xor ebp,edi + movdqa xmm7,xmm6 + ror edx,7 + paddd xmm6,xmm2 + add ebx,ecx + pxor xmm3,xmm5 + add eax,DWORD PTR 52[esp] + xor ebp,edx + mov esi,ebx + rol ebx,5 + movdqa xmm5,xmm3 + movdqa XMMWORD PTR 32[esp],xmm6 + add eax,ebp + xor esi,edx + ror ecx,7 + add eax,ebx + pslld xmm3,2 + add edi,DWORD PTR 56[esp] + xor esi,ecx + psrld xmm5,30 + mov ebp,eax + rol eax,5 + add edi,esi + xor ebp,ecx + ror ebx,7 + add edi,eax + por xmm3,xmm5 + add edx,DWORD PTR 60[esp] + xor ebp,ebx + movdqa xmm5,XMMWORD PTR 96[esp] + mov esi,edi + rol edi,5 + add edx,ebp + xor esi,ebx + ror eax,7 + pshufd xmm6,xmm2,238 + add edx,edi + add ecx,DWORD PTR [esp] + pxor xmm4,xmm0 + punpcklqdq xmm6,xmm3 + xor esi,eax + mov ebp,edx + rol edx,5 + pxor xmm4,xmm5 + movdqa XMMWORD PTR 96[esp],xmm0 + add ecx,esi + xor ebp,eax + movdqa xmm0,xmm7 + ror edi,7 + paddd xmm7,xmm3 + add ecx,edx + pxor xmm4,xmm6 + add ebx,DWORD PTR 4[esp] + xor ebp,edi + mov esi,ecx + rol ecx,5 + movdqa xmm6,xmm4 + movdqa XMMWORD PTR 48[esp],xmm7 + add ebx,ebp + xor esi,edi + ror edx,7 + add ebx,ecx + pslld xmm4,2 + add eax,DWORD PTR 8[esp] + xor esi,edx + psrld xmm6,30 + mov ebp,ebx + rol ebx,5 + add eax,esi + xor ebp,edx + ror ecx,7 + add eax,ebx + por xmm4,xmm6 + add edi,DWORD PTR 12[esp] + xor ebp,ecx + movdqa xmm6,XMMWORD PTR 64[esp] + mov esi,eax + rol eax,5 + add edi,ebp + xor esi,ecx + ror ebx,7 + pshufd xmm7,xmm3,238 + add edi,eax + add edx,DWORD PTR 16[esp] + pxor xmm5,xmm1 + punpcklqdq xmm7,xmm4 + xor esi,ebx + mov ebp,edi + rol edi,5 + pxor xmm5,xmm6 + movdqa XMMWORD PTR 64[esp],xmm1 + add edx,esi + xor ebp,ebx + movdqa xmm1,xmm0 + ror eax,7 + paddd xmm0,xmm4 + add edx,edi + pxor xmm5,xmm7 + add ecx,DWORD PTR 20[esp] + xor ebp,eax + mov esi,edx + rol edx,5 + movdqa xmm7,xmm5 + movdqa XMMWORD PTR [esp],xmm0 + add ecx,ebp + xor esi,eax + ror edi,7 + add ecx,edx + pslld xmm5,2 + add ebx,DWORD PTR 24[esp] + xor esi,edi + psrld xmm7,30 + mov ebp,ecx + rol ecx,5 + add ebx,esi + xor ebp,edi + ror edx,7 + add ebx,ecx + por xmm5,xmm7 + add eax,DWORD PTR 28[esp] + movdqa xmm7,XMMWORD PTR 80[esp] + ror ecx,7 + mov esi,ebx + xor ebp,edx + rol ebx,5 + pshufd xmm0,xmm4,238 + add eax,ebp + xor esi,ecx + xor ecx,edx + add eax,ebx + add edi,DWORD PTR 32[esp] + pxor xmm6,xmm2 + punpcklqdq xmm0,xmm5 + and esi,ecx + xor ecx,edx + ror ebx,7 + pxor xmm6,xmm7 + movdqa XMMWORD PTR 80[esp],xmm2 + mov ebp,eax + xor esi,ecx + rol eax,5 + movdqa xmm2,xmm1 + add edi,esi + paddd xmm1,xmm5 + xor ebp,ebx + pxor xmm6,xmm0 + xor ebx,ecx + add edi,eax + add edx,DWORD PTR 36[esp] + and ebp,ebx + movdqa xmm0,xmm6 + movdqa XMMWORD PTR 16[esp],xmm1 + xor ebx,ecx + ror eax,7 + mov esi,edi + xor ebp,ebx + rol edi,5 + pslld xmm6,2 + add edx,ebp + xor esi,eax + psrld xmm0,30 + xor eax,ebx + add edx,edi + add ecx,DWORD PTR 40[esp] + and esi,eax + xor eax,ebx + ror edi,7 + por xmm6,xmm0 + mov ebp,edx + xor esi,eax + movdqa xmm0,XMMWORD PTR 96[esp] + rol edx,5 + add ecx,esi + xor ebp,edi + xor edi,eax + add ecx,edx + pshufd xmm1,xmm5,238 + add ebx,DWORD PTR 44[esp] + and ebp,edi + xor edi,eax + ror edx,7 + mov esi,ecx + xor ebp,edi + rol ecx,5 + add ebx,ebp + xor esi,edx + xor edx,edi + add ebx,ecx + add eax,DWORD PTR 48[esp] + pxor xmm7,xmm3 + punpcklqdq xmm1,xmm6 + and esi,edx + xor edx,edi + ror ecx,7 + pxor xmm7,xmm0 + movdqa XMMWORD PTR 96[esp],xmm3 + mov ebp,ebx + xor esi,edx + rol ebx,5 + movdqa xmm3,XMMWORD PTR 144[esp] + add eax,esi + paddd xmm2,xmm6 + xor ebp,ecx + pxor xmm7,xmm1 + xor ecx,edx + add eax,ebx + add edi,DWORD PTR 52[esp] + and ebp,ecx + movdqa xmm1,xmm7 + movdqa XMMWORD PTR 32[esp],xmm2 + xor ecx,edx + ror ebx,7 + mov esi,eax + xor ebp,ecx + rol eax,5 + pslld xmm7,2 + add edi,ebp + xor esi,ebx + psrld xmm1,30 + xor ebx,ecx + add edi,eax + add edx,DWORD PTR 56[esp] + and esi,ebx + xor ebx,ecx + ror eax,7 + por xmm7,xmm1 + mov ebp,edi + xor esi,ebx + movdqa xmm1,XMMWORD PTR 64[esp] + rol edi,5 + add edx,esi + xor ebp,eax + xor eax,ebx + add edx,edi + pshufd xmm2,xmm6,238 + add ecx,DWORD PTR 60[esp] + and ebp,eax + xor eax,ebx + ror edi,7 + mov esi,edx + xor ebp,eax + rol edx,5 + add ecx,ebp + xor esi,edi + xor edi,eax + add ecx,edx + add ebx,DWORD PTR [esp] + pxor xmm0,xmm4 + punpcklqdq xmm2,xmm7 + and esi,edi + xor edi,eax + ror edx,7 + pxor xmm0,xmm1 + movdqa XMMWORD PTR 64[esp],xmm4 + mov ebp,ecx + xor esi,edi + rol ecx,5 + movdqa xmm4,xmm3 + add ebx,esi + paddd xmm3,xmm7 + xor ebp,edx + pxor xmm0,xmm2 + xor edx,edi + add ebx,ecx + add eax,DWORD PTR 4[esp] + and ebp,edx + movdqa xmm2,xmm0 + movdqa XMMWORD PTR 48[esp],xmm3 + xor edx,edi + ror ecx,7 + mov esi,ebx + xor ebp,edx + rol ebx,5 + pslld xmm0,2 + add eax,ebp + xor esi,ecx + psrld xmm2,30 + xor ecx,edx + add eax,ebx + add edi,DWORD PTR 8[esp] + and esi,ecx + xor ecx,edx + ror ebx,7 + por xmm0,xmm2 + mov ebp,eax + xor esi,ecx + movdqa xmm2,XMMWORD PTR 80[esp] + rol eax,5 + add edi,esi + xor ebp,ebx + xor ebx,ecx + add edi,eax + pshufd xmm3,xmm7,238 + add edx,DWORD PTR 12[esp] + and ebp,ebx + xor ebx,ecx + ror eax,7 + mov esi,edi + xor ebp,ebx + rol edi,5 + add edx,ebp + xor esi,eax + xor eax,ebx + add edx,edi + add ecx,DWORD PTR 16[esp] + pxor xmm1,xmm5 + punpcklqdq xmm3,xmm0 + and esi,eax + xor eax,ebx + ror edi,7 + pxor xmm1,xmm2 + movdqa XMMWORD PTR 80[esp],xmm5 + mov ebp,edx + xor esi,eax + rol edx,5 + movdqa xmm5,xmm4 + add ecx,esi + paddd xmm4,xmm0 + xor ebp,edi + pxor xmm1,xmm3 + xor edi,eax + add ecx,edx + add ebx,DWORD PTR 20[esp] + and ebp,edi + movdqa xmm3,xmm1 + movdqa XMMWORD PTR [esp],xmm4 + xor edi,eax + ror edx,7 + mov esi,ecx + xor ebp,edi + rol ecx,5 + pslld xmm1,2 + add ebx,ebp + xor esi,edx + psrld xmm3,30 + xor edx,edi + add ebx,ecx + add eax,DWORD PTR 24[esp] + and esi,edx + xor edx,edi + ror ecx,7 + por xmm1,xmm3 + mov ebp,ebx + xor esi,edx + movdqa xmm3,XMMWORD PTR 96[esp] + rol ebx,5 + add eax,esi + xor ebp,ecx + xor ecx,edx + add eax,ebx + pshufd xmm4,xmm0,238 + add edi,DWORD PTR 28[esp] + and ebp,ecx + xor ecx,edx + ror ebx,7 + mov esi,eax + xor ebp,ecx + rol eax,5 + add edi,ebp + xor esi,ebx + xor ebx,ecx + add edi,eax + add edx,DWORD PTR 32[esp] + pxor xmm2,xmm6 + punpcklqdq xmm4,xmm1 + and esi,ebx + xor ebx,ecx + ror eax,7 + pxor xmm2,xmm3 + movdqa XMMWORD PTR 96[esp],xmm6 + mov ebp,edi + xor esi,ebx + rol edi,5 + movdqa xmm6,xmm5 + add edx,esi + paddd xmm5,xmm1 + xor ebp,eax + pxor xmm2,xmm4 + xor eax,ebx + add edx,edi + add ecx,DWORD PTR 36[esp] + and ebp,eax + movdqa xmm4,xmm2 + movdqa XMMWORD PTR 16[esp],xmm5 + xor eax,ebx + ror edi,7 + mov esi,edx + xor ebp,eax + rol edx,5 + pslld xmm2,2 + add ecx,ebp + xor esi,edi + psrld xmm4,30 + xor edi,eax + add ecx,edx + add ebx,DWORD PTR 40[esp] + and esi,edi + xor edi,eax + ror edx,7 + por xmm2,xmm4 + mov ebp,ecx + xor esi,edi + movdqa xmm4,XMMWORD PTR 64[esp] + rol ecx,5 + add ebx,esi + xor ebp,edx + xor edx,edi + add ebx,ecx + pshufd xmm5,xmm1,238 + add eax,DWORD PTR 44[esp] + and ebp,edx + xor edx,edi + ror ecx,7 + mov esi,ebx + xor ebp,edx + rol ebx,5 + add eax,ebp + xor esi,edx + add eax,ebx + add edi,DWORD PTR 48[esp] + pxor xmm3,xmm7 + punpcklqdq xmm5,xmm2 + xor esi,ecx + mov ebp,eax + rol eax,5 + pxor xmm3,xmm4 + movdqa XMMWORD PTR 64[esp],xmm7 + add edi,esi + xor ebp,ecx + movdqa xmm7,xmm6 + ror ebx,7 + paddd xmm6,xmm2 + add edi,eax + pxor xmm3,xmm5 + add edx,DWORD PTR 52[esp] + xor ebp,ebx + mov esi,edi + rol edi,5 + movdqa xmm5,xmm3 + movdqa XMMWORD PTR 32[esp],xmm6 + add edx,ebp + xor esi,ebx + ror eax,7 + add edx,edi + pslld xmm3,2 + add ecx,DWORD PTR 56[esp] + xor esi,eax + psrld xmm5,30 + mov ebp,edx + rol edx,5 + add ecx,esi + xor ebp,eax + ror edi,7 + add ecx,edx + por xmm3,xmm5 + add ebx,DWORD PTR 60[esp] + xor ebp,edi + mov esi,ecx + rol ecx,5 + add ebx,ebp + xor esi,edi + ror edx,7 + add ebx,ecx + add eax,DWORD PTR [esp] + xor esi,edx + mov ebp,ebx + rol ebx,5 + add eax,esi + xor ebp,edx + ror ecx,7 + paddd xmm7,xmm3 + add eax,ebx + add edi,DWORD PTR 4[esp] + xor ebp,ecx + mov esi,eax + movdqa XMMWORD PTR 48[esp],xmm7 + rol eax,5 + add edi,ebp + xor esi,ecx + ror ebx,7 + add edi,eax + add edx,DWORD PTR 8[esp] + xor esi,ebx + mov ebp,edi + rol edi,5 + add edx,esi + xor ebp,ebx + ror eax,7 + add edx,edi + add ecx,DWORD PTR 12[esp] + xor ebp,eax + mov esi,edx + rol edx,5 + add ecx,ebp + xor esi,eax + ror edi,7 + add ecx,edx + mov ebp,DWORD PTR 196[esp] + cmp ebp,DWORD PTR 200[esp] + je $L007done + movdqa xmm7,XMMWORD PTR 160[esp] + movdqa xmm6,XMMWORD PTR 176[esp] + movdqu xmm0,XMMWORD PTR [ebp] + movdqu xmm1,XMMWORD PTR 16[ebp] + movdqu xmm2,XMMWORD PTR 32[ebp] + movdqu xmm3,XMMWORD PTR 48[ebp] + add ebp,64 +DB 102,15,56,0,198 + mov DWORD PTR 196[esp],ebp + movdqa XMMWORD PTR 96[esp],xmm7 + add ebx,DWORD PTR 16[esp] + xor esi,edi + mov ebp,ecx + rol ecx,5 + add ebx,esi + xor ebp,edi + ror edx,7 +DB 102,15,56,0,206 + add ebx,ecx + add eax,DWORD PTR 20[esp] + xor ebp,edx + mov esi,ebx + paddd xmm0,xmm7 + rol ebx,5 + add eax,ebp + xor esi,edx + ror ecx,7 + movdqa XMMWORD PTR [esp],xmm0 + add eax,ebx + add edi,DWORD PTR 24[esp] + xor esi,ecx + mov ebp,eax + psubd xmm0,xmm7 + rol eax,5 + add edi,esi + xor ebp,ecx + ror ebx,7 + add edi,eax + add edx,DWORD PTR 28[esp] + xor ebp,ebx + mov esi,edi + rol edi,5 + add edx,ebp + xor esi,ebx + ror eax,7 + add edx,edi + add ecx,DWORD PTR 32[esp] + xor esi,eax + mov ebp,edx + rol edx,5 + add ecx,esi + xor ebp,eax + ror edi,7 +DB 102,15,56,0,214 + add ecx,edx + add ebx,DWORD PTR 36[esp] + xor ebp,edi + mov esi,ecx + paddd xmm1,xmm7 + rol ecx,5 + add ebx,ebp + xor esi,edi + ror edx,7 + movdqa XMMWORD PTR 16[esp],xmm1 + add ebx,ecx + add eax,DWORD PTR 40[esp] + xor esi,edx + mov ebp,ebx + psubd xmm1,xmm7 + rol ebx,5 + add eax,esi + xor ebp,edx + ror ecx,7 + add eax,ebx + add edi,DWORD PTR 44[esp] + xor ebp,ecx + mov esi,eax + rol eax,5 + add edi,ebp + xor esi,ecx + ror ebx,7 + add edi,eax + add edx,DWORD PTR 48[esp] + xor esi,ebx + mov ebp,edi + rol edi,5 + add edx,esi + xor ebp,ebx + ror eax,7 +DB 102,15,56,0,222 + add edx,edi + add ecx,DWORD PTR 52[esp] + xor ebp,eax + mov esi,edx + paddd xmm2,xmm7 + rol edx,5 + add ecx,ebp + xor esi,eax + ror edi,7 + movdqa XMMWORD PTR 32[esp],xmm2 + add ecx,edx + add ebx,DWORD PTR 56[esp] + xor esi,edi + mov ebp,ecx + psubd xmm2,xmm7 + rol ecx,5 + add ebx,esi + xor ebp,edi + ror edx,7 + add ebx,ecx + add eax,DWORD PTR 60[esp] + xor ebp,edx + mov esi,ebx + rol ebx,5 + add eax,ebp + ror ecx,7 + add eax,ebx + mov ebp,DWORD PTR 192[esp] + add eax,DWORD PTR [ebp] + add esi,DWORD PTR 4[ebp] + add ecx,DWORD PTR 8[ebp] + mov DWORD PTR [ebp],eax + add edx,DWORD PTR 12[ebp] + mov DWORD PTR 4[ebp],esi + add edi,DWORD PTR 16[ebp] + mov DWORD PTR 8[ebp],ecx + mov ebx,ecx + mov DWORD PTR 12[ebp],edx + xor ebx,edx + mov DWORD PTR 16[ebp],edi + mov ebp,esi + pshufd xmm4,xmm0,238 + and esi,ebx + mov ebx,ebp + jmp $L006loop +ALIGN 16 +$L007done: + add ebx,DWORD PTR 16[esp] + xor esi,edi + mov ebp,ecx + rol ecx,5 + add ebx,esi + xor ebp,edi + ror edx,7 + add ebx,ecx + add eax,DWORD PTR 20[esp] + xor ebp,edx + mov esi,ebx + rol ebx,5 + add eax,ebp + xor esi,edx + ror ecx,7 + add eax,ebx + add edi,DWORD PTR 24[esp] + xor esi,ecx + mov ebp,eax + rol eax,5 + add edi,esi + xor ebp,ecx + ror ebx,7 + add edi,eax + add edx,DWORD PTR 28[esp] + xor ebp,ebx + mov esi,edi + rol edi,5 + add edx,ebp + xor esi,ebx + ror eax,7 + add edx,edi + add ecx,DWORD PTR 32[esp] + xor esi,eax + mov ebp,edx + rol edx,5 + add ecx,esi + xor ebp,eax + ror edi,7 + add ecx,edx + add ebx,DWORD PTR 36[esp] + xor ebp,edi + mov esi,ecx + rol ecx,5 + add ebx,ebp + xor esi,edi + ror edx,7 + add ebx,ecx + add eax,DWORD PTR 40[esp] + xor esi,edx + mov ebp,ebx + rol ebx,5 + add eax,esi + xor ebp,edx + ror ecx,7 + add eax,ebx + add edi,DWORD PTR 44[esp] + xor ebp,ecx + mov esi,eax + rol eax,5 + add edi,ebp + xor esi,ecx + ror ebx,7 + add edi,eax + add edx,DWORD PTR 48[esp] + xor esi,ebx + mov ebp,edi + rol edi,5 + add edx,esi + xor ebp,ebx + ror eax,7 + add edx,edi + add ecx,DWORD PTR 52[esp] + xor ebp,eax + mov esi,edx + rol edx,5 + add ecx,ebp + xor esi,eax + ror edi,7 + add ecx,edx + add ebx,DWORD PTR 56[esp] + xor esi,edi + mov ebp,ecx + rol ecx,5 + add ebx,esi + xor ebp,edi + ror edx,7 + add ebx,ecx + add eax,DWORD PTR 60[esp] + xor ebp,edx + mov esi,ebx + rol ebx,5 + add eax,ebp + ror ecx,7 + add eax,ebx + mov ebp,DWORD PTR 192[esp] + add eax,DWORD PTR [ebp] + mov esp,DWORD PTR 204[esp] + add esi,DWORD PTR 4[ebp] + add ecx,DWORD PTR 8[ebp] + mov DWORD PTR [ebp],eax + add edx,DWORD PTR 12[ebp] + mov DWORD PTR 4[ebp],esi + add edi,DWORD PTR 16[ebp] + mov DWORD PTR 8[ebp],ecx + mov DWORD PTR 12[ebp],edx + mov DWORD PTR 16[ebp],edi + pop edi + pop esi + pop ebx + pop ebp + ret +__sha1_block_data_order_ssse3 ENDP +ALIGN 16 +__sha1_block_data_order_avx PROC PRIVATE + push ebp + push ebx + push esi + push edi + call $L008pic_point +$L008pic_point: + pop ebp + lea ebp,DWORD PTR ($LK_XX_XX-$L008pic_point)[ebp] +$Lavx_shortcut:: + vzeroall + vmovdqa xmm7,XMMWORD PTR [ebp] + vmovdqa xmm0,XMMWORD PTR 16[ebp] + vmovdqa xmm1,XMMWORD PTR 32[ebp] + vmovdqa xmm2,XMMWORD PTR 48[ebp] + vmovdqa xmm6,XMMWORD PTR 64[ebp] + mov edi,DWORD PTR 20[esp] + mov ebp,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov esi,esp + sub esp,208 + and esp,-64 + vmovdqa XMMWORD PTR 112[esp],xmm0 + vmovdqa XMMWORD PTR 128[esp],xmm1 + vmovdqa XMMWORD PTR 144[esp],xmm2 + shl edx,6 + vmovdqa XMMWORD PTR 160[esp],xmm7 + add edx,ebp + vmovdqa XMMWORD PTR 176[esp],xmm6 + add ebp,64 + mov DWORD PTR 192[esp],edi + mov DWORD PTR 196[esp],ebp + mov DWORD PTR 200[esp],edx + mov DWORD PTR 204[esp],esi + mov eax,DWORD PTR [edi] + mov ebx,DWORD PTR 4[edi] + mov ecx,DWORD PTR 8[edi] + mov edx,DWORD PTR 12[edi] + mov edi,DWORD PTR 16[edi] + mov esi,ebx + vmovdqu xmm0,XMMWORD PTR [ebp-64] + vmovdqu xmm1,XMMWORD PTR [ebp-48] + vmovdqu xmm2,XMMWORD PTR [ebp-32] + vmovdqu xmm3,XMMWORD PTR [ebp-16] + vpshufb xmm0,xmm0,xmm6 + vpshufb xmm1,xmm1,xmm6 + vpshufb xmm2,xmm2,xmm6 + vmovdqa XMMWORD PTR 96[esp],xmm7 + vpshufb xmm3,xmm3,xmm6 + vpaddd xmm4,xmm0,xmm7 + vpaddd xmm5,xmm1,xmm7 + vpaddd xmm6,xmm2,xmm7 + vmovdqa XMMWORD PTR [esp],xmm4 + mov ebp,ecx + vmovdqa XMMWORD PTR 16[esp],xmm5 + xor ebp,edx + vmovdqa XMMWORD PTR 32[esp],xmm6 + and esi,ebp + jmp $L009loop +ALIGN 16 +$L009loop: + shrd ebx,ebx,2 + xor esi,edx + vpalignr xmm4,xmm1,xmm0,8 + mov ebp,eax + add edi,DWORD PTR [esp] + vpaddd xmm7,xmm7,xmm3 + vmovdqa XMMWORD PTR 64[esp],xmm0 + xor ebx,ecx + shld eax,eax,5 + vpsrldq xmm6,xmm3,4 + add edi,esi + and ebp,ebx + vpxor xmm4,xmm4,xmm0 + xor ebx,ecx + add edi,eax + vpxor xmm6,xmm6,xmm2 + shrd eax,eax,7 + xor ebp,ecx + vmovdqa XMMWORD PTR 48[esp],xmm7 + mov esi,edi + add edx,DWORD PTR 4[esp] + vpxor xmm4,xmm4,xmm6 + xor eax,ebx + shld edi,edi,5 + add edx,ebp + and esi,eax + vpsrld xmm6,xmm4,31 + xor eax,ebx + add edx,edi + shrd edi,edi,7 + xor esi,ebx + vpslldq xmm0,xmm4,12 + vpaddd xmm4,xmm4,xmm4 + mov ebp,edx + add ecx,DWORD PTR 8[esp] + xor edi,eax + shld edx,edx,5 + vpsrld xmm7,xmm0,30 + vpor xmm4,xmm4,xmm6 + add ecx,esi + and ebp,edi + xor edi,eax + add ecx,edx + vpslld xmm0,xmm0,2 + shrd edx,edx,7 + xor ebp,eax + vpxor xmm4,xmm4,xmm7 + mov esi,ecx + add ebx,DWORD PTR 12[esp] + xor edx,edi + shld ecx,ecx,5 + vpxor xmm4,xmm4,xmm0 + add ebx,ebp + and esi,edx + vmovdqa xmm0,XMMWORD PTR 96[esp] + xor edx,edi + add ebx,ecx + shrd ecx,ecx,7 + xor esi,edi + vpalignr xmm5,xmm2,xmm1,8 + mov ebp,ebx + add eax,DWORD PTR 16[esp] + vpaddd xmm0,xmm0,xmm4 + vmovdqa XMMWORD PTR 80[esp],xmm1 + xor ecx,edx + shld ebx,ebx,5 + vpsrldq xmm7,xmm4,4 + add eax,esi + and ebp,ecx + vpxor xmm5,xmm5,xmm1 + xor ecx,edx + add eax,ebx + vpxor xmm7,xmm7,xmm3 + shrd ebx,ebx,7 + xor ebp,edx + vmovdqa XMMWORD PTR [esp],xmm0 + mov esi,eax + add edi,DWORD PTR 20[esp] + vpxor xmm5,xmm5,xmm7 + xor ebx,ecx + shld eax,eax,5 + add edi,ebp + and esi,ebx + vpsrld xmm7,xmm5,31 + xor ebx,ecx + add edi,eax + shrd eax,eax,7 + xor esi,ecx + vpslldq xmm1,xmm5,12 + vpaddd xmm5,xmm5,xmm5 + mov ebp,edi + add edx,DWORD PTR 24[esp] + xor eax,ebx + shld edi,edi,5 + vpsrld xmm0,xmm1,30 + vpor xmm5,xmm5,xmm7 + add edx,esi + and ebp,eax + xor eax,ebx + add edx,edi + vpslld xmm1,xmm1,2 + shrd edi,edi,7 + xor ebp,ebx + vpxor xmm5,xmm5,xmm0 + mov esi,edx + add ecx,DWORD PTR 28[esp] + xor edi,eax + shld edx,edx,5 + vpxor xmm5,xmm5,xmm1 + add ecx,ebp + and esi,edi + vmovdqa xmm1,XMMWORD PTR 112[esp] + xor edi,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + vpalignr xmm6,xmm3,xmm2,8 + mov ebp,ecx + add ebx,DWORD PTR 32[esp] + vpaddd xmm1,xmm1,xmm5 + vmovdqa XMMWORD PTR 96[esp],xmm2 + xor edx,edi + shld ecx,ecx,5 + vpsrldq xmm0,xmm5,4 + add ebx,esi + and ebp,edx + vpxor xmm6,xmm6,xmm2 + xor edx,edi + add ebx,ecx + vpxor xmm0,xmm0,xmm4 + shrd ecx,ecx,7 + xor ebp,edi + vmovdqa XMMWORD PTR 16[esp],xmm1 + mov esi,ebx + add eax,DWORD PTR 36[esp] + vpxor xmm6,xmm6,xmm0 + xor ecx,edx + shld ebx,ebx,5 + add eax,ebp + and esi,ecx + vpsrld xmm0,xmm6,31 + xor ecx,edx + add eax,ebx + shrd ebx,ebx,7 + xor esi,edx + vpslldq xmm2,xmm6,12 + vpaddd xmm6,xmm6,xmm6 + mov ebp,eax + add edi,DWORD PTR 40[esp] + xor ebx,ecx + shld eax,eax,5 + vpsrld xmm1,xmm2,30 + vpor xmm6,xmm6,xmm0 + add edi,esi + and ebp,ebx + xor ebx,ecx + add edi,eax + vpslld xmm2,xmm2,2 + vmovdqa xmm0,XMMWORD PTR 64[esp] + shrd eax,eax,7 + xor ebp,ecx + vpxor xmm6,xmm6,xmm1 + mov esi,edi + add edx,DWORD PTR 44[esp] + xor eax,ebx + shld edi,edi,5 + vpxor xmm6,xmm6,xmm2 + add edx,ebp + and esi,eax + vmovdqa xmm2,XMMWORD PTR 112[esp] + xor eax,ebx + add edx,edi + shrd edi,edi,7 + xor esi,ebx + vpalignr xmm7,xmm4,xmm3,8 + mov ebp,edx + add ecx,DWORD PTR 48[esp] + vpaddd xmm2,xmm2,xmm6 + vmovdqa XMMWORD PTR 64[esp],xmm3 + xor edi,eax + shld edx,edx,5 + vpsrldq xmm1,xmm6,4 + add ecx,esi + and ebp,edi + vpxor xmm7,xmm7,xmm3 + xor edi,eax + add ecx,edx + vpxor xmm1,xmm1,xmm5 + shrd edx,edx,7 + xor ebp,eax + vmovdqa XMMWORD PTR 32[esp],xmm2 + mov esi,ecx + add ebx,DWORD PTR 52[esp] + vpxor xmm7,xmm7,xmm1 + xor edx,edi + shld ecx,ecx,5 + add ebx,ebp + and esi,edx + vpsrld xmm1,xmm7,31 + xor edx,edi + add ebx,ecx + shrd ecx,ecx,7 + xor esi,edi + vpslldq xmm3,xmm7,12 + vpaddd xmm7,xmm7,xmm7 + mov ebp,ebx + add eax,DWORD PTR 56[esp] + xor ecx,edx + shld ebx,ebx,5 + vpsrld xmm2,xmm3,30 + vpor xmm7,xmm7,xmm1 + add eax,esi + and ebp,ecx + xor ecx,edx + add eax,ebx + vpslld xmm3,xmm3,2 + vmovdqa xmm1,XMMWORD PTR 80[esp] + shrd ebx,ebx,7 + xor ebp,edx + vpxor xmm7,xmm7,xmm2 + mov esi,eax + add edi,DWORD PTR 60[esp] + xor ebx,ecx + shld eax,eax,5 + vpxor xmm7,xmm7,xmm3 + add edi,ebp + and esi,ebx + vmovdqa xmm3,XMMWORD PTR 112[esp] + xor ebx,ecx + add edi,eax + vpalignr xmm2,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + shrd eax,eax,7 + xor esi,ecx + mov ebp,edi + add edx,DWORD PTR [esp] + vpxor xmm0,xmm0,xmm1 + vmovdqa XMMWORD PTR 80[esp],xmm4 + xor eax,ebx + shld edi,edi,5 + vmovdqa xmm4,xmm3 + vpaddd xmm3,xmm3,xmm7 + add edx,esi + and ebp,eax + vpxor xmm0,xmm0,xmm2 + xor eax,ebx + add edx,edi + shrd edi,edi,7 + xor ebp,ebx + vpsrld xmm2,xmm0,30 + vmovdqa XMMWORD PTR 48[esp],xmm3 + mov esi,edx + add ecx,DWORD PTR 4[esp] + xor edi,eax + shld edx,edx,5 + vpslld xmm0,xmm0,2 + add ecx,ebp + and esi,edi + xor edi,eax + add ecx,edx + shrd edx,edx,7 + xor esi,eax + mov ebp,ecx + add ebx,DWORD PTR 8[esp] + vpor xmm0,xmm0,xmm2 + xor edx,edi + shld ecx,ecx,5 + vmovdqa xmm2,XMMWORD PTR 96[esp] + add ebx,esi + and ebp,edx + xor edx,edi + add ebx,ecx + add eax,DWORD PTR 12[esp] + xor ebp,edi + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpalignr xmm3,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add edi,DWORD PTR 16[esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + vpxor xmm1,xmm1,xmm2 + vmovdqa XMMWORD PTR 96[esp],xmm5 + add edi,esi + xor ebp,ecx + vmovdqa xmm5,xmm4 + vpaddd xmm4,xmm4,xmm0 + shrd ebx,ebx,7 + add edi,eax + vpxor xmm1,xmm1,xmm3 + add edx,DWORD PTR 20[esp] + xor ebp,ebx + mov esi,edi + shld edi,edi,5 + vpsrld xmm3,xmm1,30 + vmovdqa XMMWORD PTR [esp],xmm4 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + vpslld xmm1,xmm1,2 + add ecx,DWORD PTR 24[esp] + xor esi,eax + mov ebp,edx + shld edx,edx,5 + add ecx,esi + xor ebp,eax + shrd edi,edi,7 + add ecx,edx + vpor xmm1,xmm1,xmm3 + add ebx,DWORD PTR 28[esp] + xor ebp,edi + vmovdqa xmm3,XMMWORD PTR 64[esp] + mov esi,ecx + shld ecx,ecx,5 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + vpalignr xmm4,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add eax,DWORD PTR 32[esp] + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + vpxor xmm2,xmm2,xmm3 + vmovdqa XMMWORD PTR 64[esp],xmm6 + add eax,esi + xor ebp,edx + vmovdqa xmm6,XMMWORD PTR 128[esp] + vpaddd xmm5,xmm5,xmm1 + shrd ecx,ecx,7 + add eax,ebx + vpxor xmm2,xmm2,xmm4 + add edi,DWORD PTR 36[esp] + xor ebp,ecx + mov esi,eax + shld eax,eax,5 + vpsrld xmm4,xmm2,30 + vmovdqa XMMWORD PTR 16[esp],xmm5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + vpslld xmm2,xmm2,2 + add edx,DWORD PTR 40[esp] + xor esi,ebx + mov ebp,edi + shld edi,edi,5 + add edx,esi + xor ebp,ebx + shrd eax,eax,7 + add edx,edi + vpor xmm2,xmm2,xmm4 + add ecx,DWORD PTR 44[esp] + xor ebp,eax + vmovdqa xmm4,XMMWORD PTR 80[esp] + mov esi,edx + shld edx,edx,5 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + vpalignr xmm5,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add ebx,DWORD PTR 48[esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + vpxor xmm3,xmm3,xmm4 + vmovdqa XMMWORD PTR 80[esp],xmm7 + add ebx,esi + xor ebp,edi + vmovdqa xmm7,xmm6 + vpaddd xmm6,xmm6,xmm2 + shrd edx,edx,7 + add ebx,ecx + vpxor xmm3,xmm3,xmm5 + add eax,DWORD PTR 52[esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + vpsrld xmm5,xmm3,30 + vmovdqa XMMWORD PTR 32[esp],xmm6 + add eax,ebp + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + vpslld xmm3,xmm3,2 + add edi,DWORD PTR 56[esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + add edi,esi + xor ebp,ecx + shrd ebx,ebx,7 + add edi,eax + vpor xmm3,xmm3,xmm5 + add edx,DWORD PTR 60[esp] + xor ebp,ebx + vmovdqa xmm5,XMMWORD PTR 96[esp] + mov esi,edi + shld edi,edi,5 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + vpalignr xmm6,xmm3,xmm2,8 + vpxor xmm4,xmm4,xmm0 + add ecx,DWORD PTR [esp] + xor esi,eax + mov ebp,edx + shld edx,edx,5 + vpxor xmm4,xmm4,xmm5 + vmovdqa XMMWORD PTR 96[esp],xmm0 + add ecx,esi + xor ebp,eax + vmovdqa xmm0,xmm7 + vpaddd xmm7,xmm7,xmm3 + shrd edi,edi,7 + add ecx,edx + vpxor xmm4,xmm4,xmm6 + add ebx,DWORD PTR 4[esp] + xor ebp,edi + mov esi,ecx + shld ecx,ecx,5 + vpsrld xmm6,xmm4,30 + vmovdqa XMMWORD PTR 48[esp],xmm7 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + vpslld xmm4,xmm4,2 + add eax,DWORD PTR 8[esp] + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + add eax,esi + xor ebp,edx + shrd ecx,ecx,7 + add eax,ebx + vpor xmm4,xmm4,xmm6 + add edi,DWORD PTR 12[esp] + xor ebp,ecx + vmovdqa xmm6,XMMWORD PTR 64[esp] + mov esi,eax + shld eax,eax,5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + vpalignr xmm7,xmm4,xmm3,8 + vpxor xmm5,xmm5,xmm1 + add edx,DWORD PTR 16[esp] + xor esi,ebx + mov ebp,edi + shld edi,edi,5 + vpxor xmm5,xmm5,xmm6 + vmovdqa XMMWORD PTR 64[esp],xmm1 + add edx,esi + xor ebp,ebx + vmovdqa xmm1,xmm0 + vpaddd xmm0,xmm0,xmm4 + shrd eax,eax,7 + add edx,edi + vpxor xmm5,xmm5,xmm7 + add ecx,DWORD PTR 20[esp] + xor ebp,eax + mov esi,edx + shld edx,edx,5 + vpsrld xmm7,xmm5,30 + vmovdqa XMMWORD PTR [esp],xmm0 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + vpslld xmm5,xmm5,2 + add ebx,DWORD PTR 24[esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + vpor xmm5,xmm5,xmm7 + add eax,DWORD PTR 28[esp] + vmovdqa xmm7,XMMWORD PTR 80[esp] + shrd ecx,ecx,7 + mov esi,ebx + xor ebp,edx + shld ebx,ebx,5 + add eax,ebp + xor esi,ecx + xor ecx,edx + add eax,ebx + vpalignr xmm0,xmm5,xmm4,8 + vpxor xmm6,xmm6,xmm2 + add edi,DWORD PTR 32[esp] + and esi,ecx + xor ecx,edx + shrd ebx,ebx,7 + vpxor xmm6,xmm6,xmm7 + vmovdqa XMMWORD PTR 80[esp],xmm2 + mov ebp,eax + xor esi,ecx + vmovdqa xmm2,xmm1 + vpaddd xmm1,xmm1,xmm5 + shld eax,eax,5 + add edi,esi + vpxor xmm6,xmm6,xmm0 + xor ebp,ebx + xor ebx,ecx + add edi,eax + add edx,DWORD PTR 36[esp] + vpsrld xmm0,xmm6,30 + vmovdqa XMMWORD PTR 16[esp],xmm1 + and ebp,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,edi + vpslld xmm6,xmm6,2 + xor ebp,ebx + shld edi,edi,5 + add edx,ebp + xor esi,eax + xor eax,ebx + add edx,edi + add ecx,DWORD PTR 40[esp] + and esi,eax + vpor xmm6,xmm6,xmm0 + xor eax,ebx + shrd edi,edi,7 + vmovdqa xmm0,XMMWORD PTR 96[esp] + mov ebp,edx + xor esi,eax + shld edx,edx,5 + add ecx,esi + xor ebp,edi + xor edi,eax + add ecx,edx + add ebx,DWORD PTR 44[esp] + and ebp,edi + xor edi,eax + shrd edx,edx,7 + mov esi,ecx + xor ebp,edi + shld ecx,ecx,5 + add ebx,ebp + xor esi,edx + xor edx,edi + add ebx,ecx + vpalignr xmm1,xmm6,xmm5,8 + vpxor xmm7,xmm7,xmm3 + add eax,DWORD PTR 48[esp] + and esi,edx + xor edx,edi + shrd ecx,ecx,7 + vpxor xmm7,xmm7,xmm0 + vmovdqa XMMWORD PTR 96[esp],xmm3 + mov ebp,ebx + xor esi,edx + vmovdqa xmm3,XMMWORD PTR 144[esp] + vpaddd xmm2,xmm2,xmm6 + shld ebx,ebx,5 + add eax,esi + vpxor xmm7,xmm7,xmm1 + xor ebp,ecx + xor ecx,edx + add eax,ebx + add edi,DWORD PTR 52[esp] + vpsrld xmm1,xmm7,30 + vmovdqa XMMWORD PTR 32[esp],xmm2 + and ebp,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + vpslld xmm7,xmm7,2 + xor ebp,ecx + shld eax,eax,5 + add edi,ebp + xor esi,ebx + xor ebx,ecx + add edi,eax + add edx,DWORD PTR 56[esp] + and esi,ebx + vpor xmm7,xmm7,xmm1 + xor ebx,ecx + shrd eax,eax,7 + vmovdqa xmm1,XMMWORD PTR 64[esp] + mov ebp,edi + xor esi,ebx + shld edi,edi,5 + add edx,esi + xor ebp,eax + xor eax,ebx + add edx,edi + add ecx,DWORD PTR 60[esp] + and ebp,eax + xor eax,ebx + shrd edi,edi,7 + mov esi,edx + xor ebp,eax + shld edx,edx,5 + add ecx,ebp + xor esi,edi + xor edi,eax + add ecx,edx + vpalignr xmm2,xmm7,xmm6,8 + vpxor xmm0,xmm0,xmm4 + add ebx,DWORD PTR [esp] + and esi,edi + xor edi,eax + shrd edx,edx,7 + vpxor xmm0,xmm0,xmm1 + vmovdqa XMMWORD PTR 64[esp],xmm4 + mov ebp,ecx + xor esi,edi + vmovdqa xmm4,xmm3 + vpaddd xmm3,xmm3,xmm7 + shld ecx,ecx,5 + add ebx,esi + vpxor xmm0,xmm0,xmm2 + xor ebp,edx + xor edx,edi + add ebx,ecx + add eax,DWORD PTR 4[esp] + vpsrld xmm2,xmm0,30 + vmovdqa XMMWORD PTR 48[esp],xmm3 + and ebp,edx + xor edx,edi + shrd ecx,ecx,7 + mov esi,ebx + vpslld xmm0,xmm0,2 + xor ebp,edx + shld ebx,ebx,5 + add eax,ebp + xor esi,ecx + xor ecx,edx + add eax,ebx + add edi,DWORD PTR 8[esp] + and esi,ecx + vpor xmm0,xmm0,xmm2 + xor ecx,edx + shrd ebx,ebx,7 + vmovdqa xmm2,XMMWORD PTR 80[esp] + mov ebp,eax + xor esi,ecx + shld eax,eax,5 + add edi,esi + xor ebp,ebx + xor ebx,ecx + add edi,eax + add edx,DWORD PTR 12[esp] + and ebp,ebx + xor ebx,ecx + shrd eax,eax,7 + mov esi,edi + xor ebp,ebx + shld edi,edi,5 + add edx,ebp + xor esi,eax + xor eax,ebx + add edx,edi + vpalignr xmm3,xmm0,xmm7,8 + vpxor xmm1,xmm1,xmm5 + add ecx,DWORD PTR 16[esp] + and esi,eax + xor eax,ebx + shrd edi,edi,7 + vpxor xmm1,xmm1,xmm2 + vmovdqa XMMWORD PTR 80[esp],xmm5 + mov ebp,edx + xor esi,eax + vmovdqa xmm5,xmm4 + vpaddd xmm4,xmm4,xmm0 + shld edx,edx,5 + add ecx,esi + vpxor xmm1,xmm1,xmm3 + xor ebp,edi + xor edi,eax + add ecx,edx + add ebx,DWORD PTR 20[esp] + vpsrld xmm3,xmm1,30 + vmovdqa XMMWORD PTR [esp],xmm4 + and ebp,edi + xor edi,eax + shrd edx,edx,7 + mov esi,ecx + vpslld xmm1,xmm1,2 + xor ebp,edi + shld ecx,ecx,5 + add ebx,ebp + xor esi,edx + xor edx,edi + add ebx,ecx + add eax,DWORD PTR 24[esp] + and esi,edx + vpor xmm1,xmm1,xmm3 + xor edx,edi + shrd ecx,ecx,7 + vmovdqa xmm3,XMMWORD PTR 96[esp] + mov ebp,ebx + xor esi,edx + shld ebx,ebx,5 + add eax,esi + xor ebp,ecx + xor ecx,edx + add eax,ebx + add edi,DWORD PTR 28[esp] + and ebp,ecx + xor ecx,edx + shrd ebx,ebx,7 + mov esi,eax + xor ebp,ecx + shld eax,eax,5 + add edi,ebp + xor esi,ebx + xor ebx,ecx + add edi,eax + vpalignr xmm4,xmm1,xmm0,8 + vpxor xmm2,xmm2,xmm6 + add edx,DWORD PTR 32[esp] + and esi,ebx + xor ebx,ecx + shrd eax,eax,7 + vpxor xmm2,xmm2,xmm3 + vmovdqa XMMWORD PTR 96[esp],xmm6 + mov ebp,edi + xor esi,ebx + vmovdqa xmm6,xmm5 + vpaddd xmm5,xmm5,xmm1 + shld edi,edi,5 + add edx,esi + vpxor xmm2,xmm2,xmm4 + xor ebp,eax + xor eax,ebx + add edx,edi + add ecx,DWORD PTR 36[esp] + vpsrld xmm4,xmm2,30 + vmovdqa XMMWORD PTR 16[esp],xmm5 + and ebp,eax + xor eax,ebx + shrd edi,edi,7 + mov esi,edx + vpslld xmm2,xmm2,2 + xor ebp,eax + shld edx,edx,5 + add ecx,ebp + xor esi,edi + xor edi,eax + add ecx,edx + add ebx,DWORD PTR 40[esp] + and esi,edi + vpor xmm2,xmm2,xmm4 + xor edi,eax + shrd edx,edx,7 + vmovdqa xmm4,XMMWORD PTR 64[esp] + mov ebp,ecx + xor esi,edi + shld ecx,ecx,5 + add ebx,esi + xor ebp,edx + xor edx,edi + add ebx,ecx + add eax,DWORD PTR 44[esp] + and ebp,edx + xor edx,edi + shrd ecx,ecx,7 + mov esi,ebx + xor ebp,edx + shld ebx,ebx,5 + add eax,ebp + xor esi,edx + add eax,ebx + vpalignr xmm5,xmm2,xmm1,8 + vpxor xmm3,xmm3,xmm7 + add edi,DWORD PTR 48[esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + vpxor xmm3,xmm3,xmm4 + vmovdqa XMMWORD PTR 64[esp],xmm7 + add edi,esi + xor ebp,ecx + vmovdqa xmm7,xmm6 + vpaddd xmm6,xmm6,xmm2 + shrd ebx,ebx,7 + add edi,eax + vpxor xmm3,xmm3,xmm5 + add edx,DWORD PTR 52[esp] + xor ebp,ebx + mov esi,edi + shld edi,edi,5 + vpsrld xmm5,xmm3,30 + vmovdqa XMMWORD PTR 32[esp],xmm6 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + vpslld xmm3,xmm3,2 + add ecx,DWORD PTR 56[esp] + xor esi,eax + mov ebp,edx + shld edx,edx,5 + add ecx,esi + xor ebp,eax + shrd edi,edi,7 + add ecx,edx + vpor xmm3,xmm3,xmm5 + add ebx,DWORD PTR 60[esp] + xor ebp,edi + mov esi,ecx + shld ecx,ecx,5 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD PTR [esp] + vpaddd xmm7,xmm7,xmm3 + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + add eax,esi + vmovdqa XMMWORD PTR 48[esp],xmm7 + xor ebp,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD PTR 4[esp] + xor ebp,ecx + mov esi,eax + shld eax,eax,5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD PTR 8[esp] + xor esi,ebx + mov ebp,edi + shld edi,edi,5 + add edx,esi + xor ebp,ebx + shrd eax,eax,7 + add edx,edi + add ecx,DWORD PTR 12[esp] + xor ebp,eax + mov esi,edx + shld edx,edx,5 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + mov ebp,DWORD PTR 196[esp] + cmp ebp,DWORD PTR 200[esp] + je $L010done + vmovdqa xmm7,XMMWORD PTR 160[esp] + vmovdqa xmm6,XMMWORD PTR 176[esp] + vmovdqu xmm0,XMMWORD PTR [ebp] + vmovdqu xmm1,XMMWORD PTR 16[ebp] + vmovdqu xmm2,XMMWORD PTR 32[ebp] + vmovdqu xmm3,XMMWORD PTR 48[ebp] + add ebp,64 + vpshufb xmm0,xmm0,xmm6 + mov DWORD PTR 196[esp],ebp + vmovdqa XMMWORD PTR 96[esp],xmm7 + add ebx,DWORD PTR 16[esp] + xor esi,edi + vpshufb xmm1,xmm1,xmm6 + mov ebp,ecx + shld ecx,ecx,5 + vpaddd xmm4,xmm0,xmm7 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + vmovdqa XMMWORD PTR [esp],xmm4 + add eax,DWORD PTR 20[esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD PTR 24[esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + add edi,esi + xor ebp,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD PTR 28[esp] + xor ebp,ebx + mov esi,edi + shld edi,edi,5 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + add ecx,DWORD PTR 32[esp] + xor esi,eax + vpshufb xmm2,xmm2,xmm6 + mov ebp,edx + shld edx,edx,5 + vpaddd xmm5,xmm1,xmm7 + add ecx,esi + xor ebp,eax + shrd edi,edi,7 + add ecx,edx + vmovdqa XMMWORD PTR 16[esp],xmm5 + add ebx,DWORD PTR 36[esp] + xor ebp,edi + mov esi,ecx + shld ecx,ecx,5 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD PTR 40[esp] + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + add eax,esi + xor ebp,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD PTR 44[esp] + xor ebp,ecx + mov esi,eax + shld eax,eax,5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD PTR 48[esp] + xor esi,ebx + vpshufb xmm3,xmm3,xmm6 + mov ebp,edi + shld edi,edi,5 + vpaddd xmm6,xmm2,xmm7 + add edx,esi + xor ebp,ebx + shrd eax,eax,7 + add edx,edi + vmovdqa XMMWORD PTR 32[esp],xmm6 + add ecx,DWORD PTR 52[esp] + xor ebp,eax + mov esi,edx + shld edx,edx,5 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + add ebx,DWORD PTR 56[esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD PTR 60[esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + shrd ecx,ecx,7 + add eax,ebx + mov ebp,DWORD PTR 192[esp] + add eax,DWORD PTR [ebp] + add esi,DWORD PTR 4[ebp] + add ecx,DWORD PTR 8[ebp] + mov DWORD PTR [ebp],eax + add edx,DWORD PTR 12[ebp] + mov DWORD PTR 4[ebp],esi + add edi,DWORD PTR 16[ebp] + mov ebx,ecx + mov DWORD PTR 8[ebp],ecx + xor ebx,edx + mov DWORD PTR 12[ebp],edx + mov DWORD PTR 16[ebp],edi + mov ebp,esi + and esi,ebx + mov ebx,ebp + jmp $L009loop +ALIGN 16 +$L010done: + add ebx,DWORD PTR 16[esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD PTR 20[esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + xor esi,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD PTR 24[esp] + xor esi,ecx + mov ebp,eax + shld eax,eax,5 + add edi,esi + xor ebp,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD PTR 28[esp] + xor ebp,ebx + mov esi,edi + shld edi,edi,5 + add edx,ebp + xor esi,ebx + shrd eax,eax,7 + add edx,edi + add ecx,DWORD PTR 32[esp] + xor esi,eax + mov ebp,edx + shld edx,edx,5 + add ecx,esi + xor ebp,eax + shrd edi,edi,7 + add ecx,edx + add ebx,DWORD PTR 36[esp] + xor ebp,edi + mov esi,ecx + shld ecx,ecx,5 + add ebx,ebp + xor esi,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD PTR 40[esp] + xor esi,edx + mov ebp,ebx + shld ebx,ebx,5 + add eax,esi + xor ebp,edx + shrd ecx,ecx,7 + add eax,ebx + add edi,DWORD PTR 44[esp] + xor ebp,ecx + mov esi,eax + shld eax,eax,5 + add edi,ebp + xor esi,ecx + shrd ebx,ebx,7 + add edi,eax + add edx,DWORD PTR 48[esp] + xor esi,ebx + mov ebp,edi + shld edi,edi,5 + add edx,esi + xor ebp,ebx + shrd eax,eax,7 + add edx,edi + add ecx,DWORD PTR 52[esp] + xor ebp,eax + mov esi,edx + shld edx,edx,5 + add ecx,ebp + xor esi,eax + shrd edi,edi,7 + add ecx,edx + add ebx,DWORD PTR 56[esp] + xor esi,edi + mov ebp,ecx + shld ecx,ecx,5 + add ebx,esi + xor ebp,edi + shrd edx,edx,7 + add ebx,ecx + add eax,DWORD PTR 60[esp] + xor ebp,edx + mov esi,ebx + shld ebx,ebx,5 + add eax,ebp + shrd ecx,ecx,7 + add eax,ebx + vzeroall + mov ebp,DWORD PTR 192[esp] + add eax,DWORD PTR [ebp] + mov esp,DWORD PTR 204[esp] + add esi,DWORD PTR 4[ebp] + add ecx,DWORD PTR 8[ebp] + mov DWORD PTR [ebp],eax + add edx,DWORD PTR 12[ebp] + mov DWORD PTR 4[ebp],esi + add edi,DWORD PTR 16[ebp] + mov DWORD PTR 8[ebp],ecx + mov DWORD PTR 12[ebp],edx + mov DWORD PTR 16[ebp],edi + pop edi + pop esi + pop ebx + pop ebp + ret +__sha1_block_data_order_avx ENDP +ALIGN 64 +$LK_XX_XX:: +DD 1518500249,1518500249,1518500249,1518500249 +DD 1859775393,1859775393,1859775393,1859775393 +DD 2400959708,2400959708,2400959708,2400959708 +DD 3395469782,3395469782,3395469782,3395469782 +DD 66051,67438087,134810123,202182159 +DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115 +DB 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82 +DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112 +DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/sha/sha256-586.masm b/contrib/libs/openssl/asm/windows/crypto/sha/sha256-586.masm index 8f166befb1..a83eef4f2a 100644 --- a/contrib/libs/openssl/asm/windows/crypto/sha/sha256-586.masm +++ b/contrib/libs/openssl/asm/windows/crypto/sha/sha256-586.masm @@ -1,6817 +1,6817 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -;EXTERN _OPENSSL_ia32cap_P:NEAR -ALIGN 16 -_sha256_block_data_order PROC PUBLIC -$L_sha256_block_data_order_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov ebx,esp - call $L000pic_point -$L000pic_point: - pop ebp - lea ebp,DWORD PTR ($L001K256-$L000pic_point)[ebp] - sub esp,16 - and esp,-64 - shl eax,6 - add eax,edi - mov DWORD PTR [esp],esi - mov DWORD PTR 4[esp],edi - mov DWORD PTR 8[esp],eax - mov DWORD PTR 12[esp],ebx - lea edx,DWORD PTR _OPENSSL_ia32cap_P - mov ecx,DWORD PTR [edx] - mov ebx,DWORD PTR 4[edx] - test ecx,1048576 - jnz $L002loop - mov edx,DWORD PTR 8[edx] - test ecx,16777216 - jz $L003no_xmm - and ecx,1073741824 - and ebx,268435968 - test edx,536870912 - jnz $L004shaext - or ecx,ebx - and ecx,1342177280 - cmp ecx,1342177280 - je $L005AVX - test ebx,512 - jnz $L006SSSE3 -$L003no_xmm: - sub eax,edi - cmp eax,256 - jae $L007unrolled - jmp $L002loop -ALIGN 16 -$L002loop: - mov eax,DWORD PTR [edi] - mov ebx,DWORD PTR 4[edi] - mov ecx,DWORD PTR 8[edi] - bswap eax - mov edx,DWORD PTR 12[edi] - bswap ebx - push eax - bswap ecx - push ebx - bswap edx - push ecx - push edx - mov eax,DWORD PTR 16[edi] - mov ebx,DWORD PTR 20[edi] - mov ecx,DWORD PTR 24[edi] - bswap eax - mov edx,DWORD PTR 28[edi] - bswap ebx - push eax - bswap ecx - push ebx - bswap edx - push ecx - push edx - mov eax,DWORD PTR 32[edi] - mov ebx,DWORD PTR 36[edi] - mov ecx,DWORD PTR 40[edi] - bswap eax - mov edx,DWORD PTR 44[edi] - bswap ebx - push eax - bswap ecx - push ebx - bswap edx - push ecx - push edx - mov eax,DWORD PTR 48[edi] - mov ebx,DWORD PTR 52[edi] - mov ecx,DWORD PTR 56[edi] - bswap eax - mov edx,DWORD PTR 60[edi] - bswap ebx - push eax - bswap ecx - push ebx - bswap edx - push ecx - push edx - add edi,64 - lea esp,DWORD PTR [esp-36] - mov DWORD PTR 104[esp],edi - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edi,DWORD PTR 12[esi] - mov DWORD PTR 8[esp],ebx - xor ebx,ecx - mov DWORD PTR 12[esp],ecx - mov DWORD PTR 16[esp],edi - mov DWORD PTR [esp],ebx - mov edx,DWORD PTR 16[esi] - mov ebx,DWORD PTR 20[esi] - mov ecx,DWORD PTR 24[esi] - mov edi,DWORD PTR 28[esi] - mov DWORD PTR 24[esp],ebx - mov DWORD PTR 28[esp],ecx - mov DWORD PTR 32[esp],edi -ALIGN 16 -$L00800_15: - mov ecx,edx - mov esi,DWORD PTR 24[esp] - ror ecx,14 - mov edi,DWORD PTR 28[esp] - xor ecx,edx - xor esi,edi - mov ebx,DWORD PTR 96[esp] - ror ecx,5 - and esi,edx - mov DWORD PTR 20[esp],edx - xor edx,ecx - add ebx,DWORD PTR 32[esp] - xor esi,edi - ror edx,6 - mov ecx,eax - add ebx,esi - ror ecx,9 - add ebx,edx - mov edi,DWORD PTR 8[esp] - xor ecx,eax - mov DWORD PTR 4[esp],eax - lea esp,DWORD PTR [esp-4] - ror ecx,11 - mov esi,DWORD PTR [ebp] - xor ecx,eax - mov edx,DWORD PTR 20[esp] - xor eax,edi - ror ecx,2 - add ebx,esi - mov DWORD PTR [esp],eax - add edx,ebx - and eax,DWORD PTR 4[esp] - add ebx,ecx - xor eax,edi - add ebp,4 - add eax,ebx - cmp esi,3248222580 - jne $L00800_15 - mov ecx,DWORD PTR 156[esp] - jmp $L00916_63 -ALIGN 16 -$L00916_63: - mov ebx,ecx - mov esi,DWORD PTR 104[esp] - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 160[esp] - shr edi,10 - add ebx,DWORD PTR 124[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 24[esp] - ror ecx,14 - add ebx,edi - mov edi,DWORD PTR 28[esp] - xor ecx,edx - xor esi,edi - mov DWORD PTR 96[esp],ebx - ror ecx,5 - and esi,edx - mov DWORD PTR 20[esp],edx - xor edx,ecx - add ebx,DWORD PTR 32[esp] - xor esi,edi - ror edx,6 - mov ecx,eax - add ebx,esi - ror ecx,9 - add ebx,edx - mov edi,DWORD PTR 8[esp] - xor ecx,eax - mov DWORD PTR 4[esp],eax - lea esp,DWORD PTR [esp-4] - ror ecx,11 - mov esi,DWORD PTR [ebp] - xor ecx,eax - mov edx,DWORD PTR 20[esp] - xor eax,edi - ror ecx,2 - add ebx,esi - mov DWORD PTR [esp],eax - add edx,ebx - and eax,DWORD PTR 4[esp] - add ebx,ecx - xor eax,edi - mov ecx,DWORD PTR 156[esp] - add ebp,4 - add eax,ebx - cmp esi,3329325298 - jne $L00916_63 - mov esi,DWORD PTR 356[esp] - mov ebx,DWORD PTR 8[esp] - mov ecx,DWORD PTR 16[esp] - add eax,DWORD PTR [esi] - add ebx,DWORD PTR 4[esi] - add edi,DWORD PTR 8[esi] - add ecx,DWORD PTR 12[esi] - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],edi - mov DWORD PTR 12[esi],ecx - mov eax,DWORD PTR 24[esp] - mov ebx,DWORD PTR 28[esp] - mov ecx,DWORD PTR 32[esp] - mov edi,DWORD PTR 360[esp] - add edx,DWORD PTR 16[esi] - add eax,DWORD PTR 20[esi] - add ebx,DWORD PTR 24[esi] - add ecx,DWORD PTR 28[esi] - mov DWORD PTR 16[esi],edx - mov DWORD PTR 20[esi],eax - mov DWORD PTR 24[esi],ebx - mov DWORD PTR 28[esi],ecx - lea esp,DWORD PTR 356[esp] - sub ebp,256 - cmp edi,DWORD PTR 8[esp] - jb $L002loop - mov esp,DWORD PTR 12[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -ALIGN 64 -$L001K256: -DD 1116352408,1899447441,3049323471,3921009573 -DD 961987163,1508970993,2453635748,2870763221 -DD 3624381080,310598401,607225278,1426881987 -DD 1925078388,2162078206,2614888103,3248222580 -DD 3835390401,4022224774,264347078,604807628 -DD 770255983,1249150122,1555081692,1996064986 -DD 2554220882,2821834349,2952996808,3210313671 -DD 3336571891,3584528711,113926993,338241895 -DD 666307205,773529912,1294757372,1396182291 -DD 1695183700,1986661051,2177026350,2456956037 -DD 2730485921,2820302411,3259730800,3345764771 -DD 3516065817,3600352804,4094571909,275423344 -DD 430227734,506948616,659060556,883997877 -DD 958139571,1322822218,1537002063,1747873779 -DD 1955562222,2024104815,2227730452,2361852424 -DD 2428436474,2756734187,3204031479,3329325298 -DD 66051,67438087,134810123,202182159 -DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97 -DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32 -DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 -DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 -DB 62,0 -ALIGN 16 -$L007unrolled: - lea esp,DWORD PTR [esp-96] - mov eax,DWORD PTR [esi] - mov ebp,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov ebx,DWORD PTR 12[esi] - mov DWORD PTR 4[esp],ebp - xor ebp,ecx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],ebx - mov edx,DWORD PTR 16[esi] - mov ebx,DWORD PTR 20[esi] - mov ecx,DWORD PTR 24[esi] - mov esi,DWORD PTR 28[esi] - mov DWORD PTR 20[esp],ebx - mov DWORD PTR 24[esp],ecx - mov DWORD PTR 28[esp],esi - jmp $L010grand_loop -ALIGN 16 -$L010grand_loop: - mov ebx,DWORD PTR [edi] - mov ecx,DWORD PTR 4[edi] - bswap ebx - mov esi,DWORD PTR 8[edi] - bswap ecx - mov DWORD PTR 32[esp],ebx - bswap esi - mov DWORD PTR 36[esp],ecx - mov DWORD PTR 40[esp],esi - mov ebx,DWORD PTR 12[edi] - mov ecx,DWORD PTR 16[edi] - bswap ebx - mov esi,DWORD PTR 20[edi] - bswap ecx - mov DWORD PTR 44[esp],ebx - bswap esi - mov DWORD PTR 48[esp],ecx - mov DWORD PTR 52[esp],esi - mov ebx,DWORD PTR 24[edi] - mov ecx,DWORD PTR 28[edi] - bswap ebx - mov esi,DWORD PTR 32[edi] - bswap ecx - mov DWORD PTR 56[esp],ebx - bswap esi - mov DWORD PTR 60[esp],ecx - mov DWORD PTR 64[esp],esi - mov ebx,DWORD PTR 36[edi] - mov ecx,DWORD PTR 40[edi] - bswap ebx - mov esi,DWORD PTR 44[edi] - bswap ecx - mov DWORD PTR 68[esp],ebx - bswap esi - mov DWORD PTR 72[esp],ecx - mov DWORD PTR 76[esp],esi - mov ebx,DWORD PTR 48[edi] - mov ecx,DWORD PTR 52[edi] - bswap ebx - mov esi,DWORD PTR 56[edi] - bswap ecx - mov DWORD PTR 80[esp],ebx - bswap esi - mov DWORD PTR 84[esp],ecx - mov DWORD PTR 88[esp],esi - mov ebx,DWORD PTR 60[edi] - add edi,64 - bswap ebx - mov DWORD PTR 100[esp],edi - mov DWORD PTR 92[esp],ebx - mov ecx,edx - mov esi,DWORD PTR 20[esp] - ror edx,14 - mov edi,DWORD PTR 24[esp] - xor edx,ecx - mov ebx,DWORD PTR 32[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 28[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 4[esp] - xor ecx,eax - mov DWORD PTR [esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 1116352408[edx*1+ebx] - xor ecx,esi - xor ebp,edi - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 12[esp] - add ebp,ecx - mov esi,edx - mov ecx,DWORD PTR 16[esp] - ror edx,14 - mov edi,DWORD PTR 20[esp] - xor edx,esi - mov ebx,DWORD PTR 36[esp] - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 12[esp],esi - xor edx,esi - add ebx,DWORD PTR 24[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR [esp] - xor esi,ebp - mov DWORD PTR 28[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 1899447441[edx*1+ebx] - xor esi,ecx - xor eax,edi - ror esi,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,esi - mov ecx,edx - mov esi,DWORD PTR 12[esp] - ror edx,14 - mov edi,DWORD PTR 16[esp] - xor edx,ecx - mov ebx,DWORD PTR 40[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 20[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 28[esp] - xor ecx,eax - mov DWORD PTR 24[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 3049323471[edx*1+ebx] - xor ecx,esi - xor ebp,edi - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 4[esp] - add ebp,ecx - mov esi,edx - mov ecx,DWORD PTR 8[esp] - ror edx,14 - mov edi,DWORD PTR 12[esp] - xor edx,esi - mov ebx,DWORD PTR 44[esp] - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 4[esp],esi - xor edx,esi - add ebx,DWORD PTR 16[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 24[esp] - xor esi,ebp - mov DWORD PTR 20[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 3921009573[edx*1+ebx] - xor esi,ecx - xor eax,edi - ror esi,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,esi - mov ecx,edx - mov esi,DWORD PTR 4[esp] - ror edx,14 - mov edi,DWORD PTR 8[esp] - xor edx,ecx - mov ebx,DWORD PTR 48[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - add ebx,DWORD PTR 12[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 20[esp] - xor ecx,eax - mov DWORD PTR 16[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 961987163[edx*1+ebx] - xor ecx,esi - xor ebp,edi - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 28[esp] - add ebp,ecx - mov esi,edx - mov ecx,DWORD PTR [esp] - ror edx,14 - mov edi,DWORD PTR 4[esp] - xor edx,esi - mov ebx,DWORD PTR 52[esp] - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 28[esp],esi - xor edx,esi - add ebx,DWORD PTR 8[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 16[esp] - xor esi,ebp - mov DWORD PTR 12[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 1508970993[edx*1+ebx] - xor esi,ecx - xor eax,edi - ror esi,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,esi - mov ecx,edx - mov esi,DWORD PTR 28[esp] - ror edx,14 - mov edi,DWORD PTR [esp] - xor edx,ecx - mov ebx,DWORD PTR 56[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 4[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 12[esp] - xor ecx,eax - mov DWORD PTR 8[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 2453635748[edx*1+ebx] - xor ecx,esi - xor ebp,edi - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 20[esp] - add ebp,ecx - mov esi,edx - mov ecx,DWORD PTR 24[esp] - ror edx,14 - mov edi,DWORD PTR 28[esp] - xor edx,esi - mov ebx,DWORD PTR 60[esp] - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 20[esp],esi - xor edx,esi - add ebx,DWORD PTR [esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 8[esp] - xor esi,ebp - mov DWORD PTR 4[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 2870763221[edx*1+ebx] - xor esi,ecx - xor eax,edi - ror esi,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,esi - mov ecx,edx - mov esi,DWORD PTR 20[esp] - ror edx,14 - mov edi,DWORD PTR 24[esp] - xor edx,ecx - mov ebx,DWORD PTR 64[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 28[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 4[esp] - xor ecx,eax - mov DWORD PTR [esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 3624381080[edx*1+ebx] - xor ecx,esi - xor ebp,edi - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 12[esp] - add ebp,ecx - mov esi,edx - mov ecx,DWORD PTR 16[esp] - ror edx,14 - mov edi,DWORD PTR 20[esp] - xor edx,esi - mov ebx,DWORD PTR 68[esp] - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 12[esp],esi - xor edx,esi - add ebx,DWORD PTR 24[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR [esp] - xor esi,ebp - mov DWORD PTR 28[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 310598401[edx*1+ebx] - xor esi,ecx - xor eax,edi - ror esi,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,esi - mov ecx,edx - mov esi,DWORD PTR 12[esp] - ror edx,14 - mov edi,DWORD PTR 16[esp] - xor edx,ecx - mov ebx,DWORD PTR 72[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 20[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 28[esp] - xor ecx,eax - mov DWORD PTR 24[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 607225278[edx*1+ebx] - xor ecx,esi - xor ebp,edi - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 4[esp] - add ebp,ecx - mov esi,edx - mov ecx,DWORD PTR 8[esp] - ror edx,14 - mov edi,DWORD PTR 12[esp] - xor edx,esi - mov ebx,DWORD PTR 76[esp] - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 4[esp],esi - xor edx,esi - add ebx,DWORD PTR 16[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 24[esp] - xor esi,ebp - mov DWORD PTR 20[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 1426881987[edx*1+ebx] - xor esi,ecx - xor eax,edi - ror esi,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,esi - mov ecx,edx - mov esi,DWORD PTR 4[esp] - ror edx,14 - mov edi,DWORD PTR 8[esp] - xor edx,ecx - mov ebx,DWORD PTR 80[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - add ebx,DWORD PTR 12[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 20[esp] - xor ecx,eax - mov DWORD PTR 16[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 1925078388[edx*1+ebx] - xor ecx,esi - xor ebp,edi - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 28[esp] - add ebp,ecx - mov esi,edx - mov ecx,DWORD PTR [esp] - ror edx,14 - mov edi,DWORD PTR 4[esp] - xor edx,esi - mov ebx,DWORD PTR 84[esp] - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 28[esp],esi - xor edx,esi - add ebx,DWORD PTR 8[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 16[esp] - xor esi,ebp - mov DWORD PTR 12[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 2162078206[edx*1+ebx] - xor esi,ecx - xor eax,edi - ror esi,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,esi - mov ecx,edx - mov esi,DWORD PTR 28[esp] - ror edx,14 - mov edi,DWORD PTR [esp] - xor edx,ecx - mov ebx,DWORD PTR 88[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 4[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 12[esp] - xor ecx,eax - mov DWORD PTR 8[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 2614888103[edx*1+ebx] - xor ecx,esi - xor ebp,edi - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 20[esp] - add ebp,ecx - mov esi,edx - mov ecx,DWORD PTR 24[esp] - ror edx,14 - mov edi,DWORD PTR 28[esp] - xor edx,esi - mov ebx,DWORD PTR 92[esp] - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 20[esp],esi - xor edx,esi - add ebx,DWORD PTR [esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 8[esp] - xor esi,ebp - mov DWORD PTR 4[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 3248222580[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 36[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,esi - mov esi,DWORD PTR 88[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 32[esp] - shr edi,10 - add ebx,DWORD PTR 68[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 20[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 24[esp] - xor edx,ecx - mov DWORD PTR 32[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 28[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 4[esp] - xor ecx,eax - mov DWORD PTR [esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 3835390401[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 40[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 12[esp] - add ebp,ecx - mov ecx,DWORD PTR 92[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 36[esp] - shr edi,10 - add ebx,DWORD PTR 72[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 16[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 20[esp] - xor edx,esi - mov DWORD PTR 36[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 12[esp],esi - xor edx,esi - add ebx,DWORD PTR 24[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR [esp] - xor esi,ebp - mov DWORD PTR 28[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 4022224774[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 44[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,esi - mov esi,DWORD PTR 32[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 40[esp] - shr edi,10 - add ebx,DWORD PTR 76[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 12[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 16[esp] - xor edx,ecx - mov DWORD PTR 40[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 20[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 28[esp] - xor ecx,eax - mov DWORD PTR 24[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 264347078[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 48[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 4[esp] - add ebp,ecx - mov ecx,DWORD PTR 36[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 44[esp] - shr edi,10 - add ebx,DWORD PTR 80[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 8[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 12[esp] - xor edx,esi - mov DWORD PTR 44[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 4[esp],esi - xor edx,esi - add ebx,DWORD PTR 16[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 24[esp] - xor esi,ebp - mov DWORD PTR 20[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 604807628[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 52[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,esi - mov esi,DWORD PTR 40[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 48[esp] - shr edi,10 - add ebx,DWORD PTR 84[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 4[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 8[esp] - xor edx,ecx - mov DWORD PTR 48[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - add ebx,DWORD PTR 12[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 20[esp] - xor ecx,eax - mov DWORD PTR 16[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 770255983[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 56[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 28[esp] - add ebp,ecx - mov ecx,DWORD PTR 44[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 52[esp] - shr edi,10 - add ebx,DWORD PTR 88[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR [esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 4[esp] - xor edx,esi - mov DWORD PTR 52[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 28[esp],esi - xor edx,esi - add ebx,DWORD PTR 8[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 16[esp] - xor esi,ebp - mov DWORD PTR 12[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 1249150122[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 60[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,esi - mov esi,DWORD PTR 48[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 56[esp] - shr edi,10 - add ebx,DWORD PTR 92[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 28[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR [esp] - xor edx,ecx - mov DWORD PTR 56[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 4[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 12[esp] - xor ecx,eax - mov DWORD PTR 8[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 1555081692[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 64[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 20[esp] - add ebp,ecx - mov ecx,DWORD PTR 52[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 60[esp] - shr edi,10 - add ebx,DWORD PTR 32[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 24[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 28[esp] - xor edx,esi - mov DWORD PTR 60[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 20[esp],esi - xor edx,esi - add ebx,DWORD PTR [esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 8[esp] - xor esi,ebp - mov DWORD PTR 4[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 1996064986[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 68[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,esi - mov esi,DWORD PTR 56[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 64[esp] - shr edi,10 - add ebx,DWORD PTR 36[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 20[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 24[esp] - xor edx,ecx - mov DWORD PTR 64[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 28[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 4[esp] - xor ecx,eax - mov DWORD PTR [esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 2554220882[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 72[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 12[esp] - add ebp,ecx - mov ecx,DWORD PTR 60[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 68[esp] - shr edi,10 - add ebx,DWORD PTR 40[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 16[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 20[esp] - xor edx,esi - mov DWORD PTR 68[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 12[esp],esi - xor edx,esi - add ebx,DWORD PTR 24[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR [esp] - xor esi,ebp - mov DWORD PTR 28[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 2821834349[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 76[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,esi - mov esi,DWORD PTR 64[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 72[esp] - shr edi,10 - add ebx,DWORD PTR 44[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 12[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 16[esp] - xor edx,ecx - mov DWORD PTR 72[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 20[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 28[esp] - xor ecx,eax - mov DWORD PTR 24[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 2952996808[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 80[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 4[esp] - add ebp,ecx - mov ecx,DWORD PTR 68[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 76[esp] - shr edi,10 - add ebx,DWORD PTR 48[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 8[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 12[esp] - xor edx,esi - mov DWORD PTR 76[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 4[esp],esi - xor edx,esi - add ebx,DWORD PTR 16[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 24[esp] - xor esi,ebp - mov DWORD PTR 20[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 3210313671[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 84[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,esi - mov esi,DWORD PTR 72[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 80[esp] - shr edi,10 - add ebx,DWORD PTR 52[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 4[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 8[esp] - xor edx,ecx - mov DWORD PTR 80[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - add ebx,DWORD PTR 12[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 20[esp] - xor ecx,eax - mov DWORD PTR 16[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 3336571891[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 88[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 28[esp] - add ebp,ecx - mov ecx,DWORD PTR 76[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 84[esp] - shr edi,10 - add ebx,DWORD PTR 56[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR [esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 4[esp] - xor edx,esi - mov DWORD PTR 84[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 28[esp],esi - xor edx,esi - add ebx,DWORD PTR 8[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 16[esp] - xor esi,ebp - mov DWORD PTR 12[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 3584528711[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 92[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,esi - mov esi,DWORD PTR 80[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 88[esp] - shr edi,10 - add ebx,DWORD PTR 60[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 28[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR [esp] - xor edx,ecx - mov DWORD PTR 88[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 4[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 12[esp] - xor ecx,eax - mov DWORD PTR 8[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 113926993[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 32[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 20[esp] - add ebp,ecx - mov ecx,DWORD PTR 84[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 92[esp] - shr edi,10 - add ebx,DWORD PTR 64[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 24[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 28[esp] - xor edx,esi - mov DWORD PTR 92[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 20[esp],esi - xor edx,esi - add ebx,DWORD PTR [esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 8[esp] - xor esi,ebp - mov DWORD PTR 4[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 338241895[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 36[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,esi - mov esi,DWORD PTR 88[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 32[esp] - shr edi,10 - add ebx,DWORD PTR 68[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 20[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 24[esp] - xor edx,ecx - mov DWORD PTR 32[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 28[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 4[esp] - xor ecx,eax - mov DWORD PTR [esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 666307205[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 40[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 12[esp] - add ebp,ecx - mov ecx,DWORD PTR 92[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 36[esp] - shr edi,10 - add ebx,DWORD PTR 72[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 16[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 20[esp] - xor edx,esi - mov DWORD PTR 36[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 12[esp],esi - xor edx,esi - add ebx,DWORD PTR 24[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR [esp] - xor esi,ebp - mov DWORD PTR 28[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 773529912[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 44[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,esi - mov esi,DWORD PTR 32[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 40[esp] - shr edi,10 - add ebx,DWORD PTR 76[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 12[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 16[esp] - xor edx,ecx - mov DWORD PTR 40[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 20[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 28[esp] - xor ecx,eax - mov DWORD PTR 24[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 1294757372[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 48[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 4[esp] - add ebp,ecx - mov ecx,DWORD PTR 36[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 44[esp] - shr edi,10 - add ebx,DWORD PTR 80[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 8[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 12[esp] - xor edx,esi - mov DWORD PTR 44[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 4[esp],esi - xor edx,esi - add ebx,DWORD PTR 16[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 24[esp] - xor esi,ebp - mov DWORD PTR 20[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 1396182291[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 52[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,esi - mov esi,DWORD PTR 40[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 48[esp] - shr edi,10 - add ebx,DWORD PTR 84[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 4[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 8[esp] - xor edx,ecx - mov DWORD PTR 48[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - add ebx,DWORD PTR 12[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 20[esp] - xor ecx,eax - mov DWORD PTR 16[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 1695183700[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 56[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 28[esp] - add ebp,ecx - mov ecx,DWORD PTR 44[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 52[esp] - shr edi,10 - add ebx,DWORD PTR 88[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR [esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 4[esp] - xor edx,esi - mov DWORD PTR 52[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 28[esp],esi - xor edx,esi - add ebx,DWORD PTR 8[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 16[esp] - xor esi,ebp - mov DWORD PTR 12[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 1986661051[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 60[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,esi - mov esi,DWORD PTR 48[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 56[esp] - shr edi,10 - add ebx,DWORD PTR 92[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 28[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR [esp] - xor edx,ecx - mov DWORD PTR 56[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 4[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 12[esp] - xor ecx,eax - mov DWORD PTR 8[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 2177026350[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 64[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 20[esp] - add ebp,ecx - mov ecx,DWORD PTR 52[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 60[esp] - shr edi,10 - add ebx,DWORD PTR 32[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 24[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 28[esp] - xor edx,esi - mov DWORD PTR 60[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 20[esp],esi - xor edx,esi - add ebx,DWORD PTR [esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 8[esp] - xor esi,ebp - mov DWORD PTR 4[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 2456956037[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 68[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,esi - mov esi,DWORD PTR 56[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 64[esp] - shr edi,10 - add ebx,DWORD PTR 36[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 20[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 24[esp] - xor edx,ecx - mov DWORD PTR 64[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 28[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 4[esp] - xor ecx,eax - mov DWORD PTR [esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 2730485921[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 72[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 12[esp] - add ebp,ecx - mov ecx,DWORD PTR 60[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 68[esp] - shr edi,10 - add ebx,DWORD PTR 40[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 16[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 20[esp] - xor edx,esi - mov DWORD PTR 68[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 12[esp],esi - xor edx,esi - add ebx,DWORD PTR 24[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR [esp] - xor esi,ebp - mov DWORD PTR 28[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 2820302411[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 76[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,esi - mov esi,DWORD PTR 64[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 72[esp] - shr edi,10 - add ebx,DWORD PTR 44[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 12[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 16[esp] - xor edx,ecx - mov DWORD PTR 72[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 20[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 28[esp] - xor ecx,eax - mov DWORD PTR 24[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 3259730800[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 80[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 4[esp] - add ebp,ecx - mov ecx,DWORD PTR 68[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 76[esp] - shr edi,10 - add ebx,DWORD PTR 48[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 8[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 12[esp] - xor edx,esi - mov DWORD PTR 76[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 4[esp],esi - xor edx,esi - add ebx,DWORD PTR 16[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 24[esp] - xor esi,ebp - mov DWORD PTR 20[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 3345764771[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 84[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,esi - mov esi,DWORD PTR 72[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 80[esp] - shr edi,10 - add ebx,DWORD PTR 52[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 4[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 8[esp] - xor edx,ecx - mov DWORD PTR 80[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - add ebx,DWORD PTR 12[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 20[esp] - xor ecx,eax - mov DWORD PTR 16[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 3516065817[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 88[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 28[esp] - add ebp,ecx - mov ecx,DWORD PTR 76[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 84[esp] - shr edi,10 - add ebx,DWORD PTR 56[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR [esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 4[esp] - xor edx,esi - mov DWORD PTR 84[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 28[esp],esi - xor edx,esi - add ebx,DWORD PTR 8[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 16[esp] - xor esi,ebp - mov DWORD PTR 12[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 3600352804[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 92[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,esi - mov esi,DWORD PTR 80[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 88[esp] - shr edi,10 - add ebx,DWORD PTR 60[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 28[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR [esp] - xor edx,ecx - mov DWORD PTR 88[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 4[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 12[esp] - xor ecx,eax - mov DWORD PTR 8[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 4094571909[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 32[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 20[esp] - add ebp,ecx - mov ecx,DWORD PTR 84[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 92[esp] - shr edi,10 - add ebx,DWORD PTR 64[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 24[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 28[esp] - xor edx,esi - mov DWORD PTR 92[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 20[esp],esi - xor edx,esi - add ebx,DWORD PTR [esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 8[esp] - xor esi,ebp - mov DWORD PTR 4[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 275423344[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 36[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,esi - mov esi,DWORD PTR 88[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 32[esp] - shr edi,10 - add ebx,DWORD PTR 68[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 20[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 24[esp] - xor edx,ecx - mov DWORD PTR 32[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 28[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 4[esp] - xor ecx,eax - mov DWORD PTR [esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 430227734[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 40[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 12[esp] - add ebp,ecx - mov ecx,DWORD PTR 92[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 36[esp] - shr edi,10 - add ebx,DWORD PTR 72[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 16[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 20[esp] - xor edx,esi - mov DWORD PTR 36[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 12[esp],esi - xor edx,esi - add ebx,DWORD PTR 24[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR [esp] - xor esi,ebp - mov DWORD PTR 28[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 506948616[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 44[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,esi - mov esi,DWORD PTR 32[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 40[esp] - shr edi,10 - add ebx,DWORD PTR 76[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 12[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 16[esp] - xor edx,ecx - mov DWORD PTR 40[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 20[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 28[esp] - xor ecx,eax - mov DWORD PTR 24[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 659060556[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 48[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 4[esp] - add ebp,ecx - mov ecx,DWORD PTR 36[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 44[esp] - shr edi,10 - add ebx,DWORD PTR 80[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 8[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 12[esp] - xor edx,esi - mov DWORD PTR 44[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 4[esp],esi - xor edx,esi - add ebx,DWORD PTR 16[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 24[esp] - xor esi,ebp - mov DWORD PTR 20[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 883997877[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 52[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,esi - mov esi,DWORD PTR 40[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 48[esp] - shr edi,10 - add ebx,DWORD PTR 84[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 4[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 8[esp] - xor edx,ecx - mov DWORD PTR 48[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - add ebx,DWORD PTR 12[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 20[esp] - xor ecx,eax - mov DWORD PTR 16[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 958139571[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 56[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 28[esp] - add ebp,ecx - mov ecx,DWORD PTR 44[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 52[esp] - shr edi,10 - add ebx,DWORD PTR 88[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR [esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 4[esp] - xor edx,esi - mov DWORD PTR 52[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 28[esp],esi - xor edx,esi - add ebx,DWORD PTR 8[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 16[esp] - xor esi,ebp - mov DWORD PTR 12[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 1322822218[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 60[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,esi - mov esi,DWORD PTR 48[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 56[esp] - shr edi,10 - add ebx,DWORD PTR 92[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 28[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR [esp] - xor edx,ecx - mov DWORD PTR 56[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 4[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 12[esp] - xor ecx,eax - mov DWORD PTR 8[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 1537002063[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 64[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 20[esp] - add ebp,ecx - mov ecx,DWORD PTR 52[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 60[esp] - shr edi,10 - add ebx,DWORD PTR 32[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 24[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 28[esp] - xor edx,esi - mov DWORD PTR 60[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 20[esp],esi - xor edx,esi - add ebx,DWORD PTR [esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 8[esp] - xor esi,ebp - mov DWORD PTR 4[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 1747873779[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 68[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,esi - mov esi,DWORD PTR 56[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 64[esp] - shr edi,10 - add ebx,DWORD PTR 36[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 20[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 24[esp] - xor edx,ecx - mov DWORD PTR 64[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 28[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 4[esp] - xor ecx,eax - mov DWORD PTR [esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 1955562222[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 72[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 12[esp] - add ebp,ecx - mov ecx,DWORD PTR 60[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 68[esp] - shr edi,10 - add ebx,DWORD PTR 40[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 16[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 20[esp] - xor edx,esi - mov DWORD PTR 68[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 12[esp],esi - xor edx,esi - add ebx,DWORD PTR 24[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR [esp] - xor esi,ebp - mov DWORD PTR 28[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 2024104815[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 76[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,esi - mov esi,DWORD PTR 64[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 72[esp] - shr edi,10 - add ebx,DWORD PTR 44[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 12[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 16[esp] - xor edx,ecx - mov DWORD PTR 72[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 20[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 28[esp] - xor ecx,eax - mov DWORD PTR 24[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 2227730452[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 80[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 4[esp] - add ebp,ecx - mov ecx,DWORD PTR 68[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 76[esp] - shr edi,10 - add ebx,DWORD PTR 48[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 8[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 12[esp] - xor edx,esi - mov DWORD PTR 76[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 4[esp],esi - xor edx,esi - add ebx,DWORD PTR 16[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 24[esp] - xor esi,ebp - mov DWORD PTR 20[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 2361852424[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 84[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,esi - mov esi,DWORD PTR 72[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 80[esp] - shr edi,10 - add ebx,DWORD PTR 52[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 4[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 8[esp] - xor edx,ecx - mov DWORD PTR 80[esp],ebx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - add ebx,DWORD PTR 12[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 20[esp] - xor ecx,eax - mov DWORD PTR 16[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 2428436474[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 88[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 28[esp] - add ebp,ecx - mov ecx,DWORD PTR 76[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 84[esp] - shr edi,10 - add ebx,DWORD PTR 56[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR [esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 4[esp] - xor edx,esi - mov DWORD PTR 84[esp],ebx - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 28[esp],esi - xor edx,esi - add ebx,DWORD PTR 8[esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 16[esp] - xor esi,ebp - mov DWORD PTR 12[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 2756734187[edx*1+ebx] - xor esi,ecx - xor eax,edi - mov ecx,DWORD PTR 92[esp] - ror esi,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,esi - mov esi,DWORD PTR 80[esp] - mov ebx,ecx - ror ecx,11 - mov edi,esi - ror esi,2 - xor ecx,ebx - shr ebx,3 - ror ecx,7 - xor esi,edi - xor ebx,ecx - ror esi,17 - add ebx,DWORD PTR 88[esp] - shr edi,10 - add ebx,DWORD PTR 60[esp] - mov ecx,edx - xor edi,esi - mov esi,DWORD PTR 28[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR [esp] - xor edx,ecx - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - add ebx,DWORD PTR 4[esp] - xor edi,esi - ror edx,6 - mov ecx,eax - add ebx,edi - ror ecx,9 - mov esi,eax - mov edi,DWORD PTR 12[esp] - xor ecx,eax - mov DWORD PTR 8[esp],eax - xor eax,edi - ror ecx,11 - and ebp,eax - lea edx,DWORD PTR 3204031479[edx*1+ebx] - xor ecx,esi - xor ebp,edi - mov esi,DWORD PTR 32[esp] - ror ecx,2 - add ebp,edx - add edx,DWORD PTR 20[esp] - add ebp,ecx - mov ecx,DWORD PTR 84[esp] - mov ebx,esi - ror esi,11 - mov edi,ecx - ror ecx,2 - xor esi,ebx - shr ebx,3 - ror esi,7 - xor ecx,edi - xor ebx,esi - ror ecx,17 - add ebx,DWORD PTR 92[esp] - shr edi,10 - add ebx,DWORD PTR 64[esp] - mov esi,edx - xor edi,ecx - mov ecx,DWORD PTR 24[esp] - ror edx,14 - add ebx,edi - mov edi,DWORD PTR 28[esp] - xor edx,esi - xor ecx,edi - ror edx,5 - and ecx,esi - mov DWORD PTR 20[esp],esi - xor edx,esi - add ebx,DWORD PTR [esp] - xor edi,ecx - ror edx,6 - mov esi,ebp - add ebx,edi - ror esi,9 - mov ecx,ebp - mov edi,DWORD PTR 8[esp] - xor esi,ebp - mov DWORD PTR 4[esp],ebp - xor ebp,edi - ror esi,11 - and eax,ebp - lea edx,DWORD PTR 3329325298[edx*1+ebx] - xor esi,ecx - xor eax,edi - ror esi,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,esi - mov esi,DWORD PTR 96[esp] - xor ebp,edi - mov ecx,DWORD PTR 12[esp] - add eax,DWORD PTR [esi] - add ebp,DWORD PTR 4[esi] - add edi,DWORD PTR 8[esi] - add ecx,DWORD PTR 12[esi] - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebp - mov DWORD PTR 8[esi],edi - mov DWORD PTR 12[esi],ecx - mov DWORD PTR 4[esp],ebp - xor ebp,edi - mov DWORD PTR 8[esp],edi - mov DWORD PTR 12[esp],ecx - mov edi,DWORD PTR 20[esp] - mov ebx,DWORD PTR 24[esp] - mov ecx,DWORD PTR 28[esp] - add edx,DWORD PTR 16[esi] - add edi,DWORD PTR 20[esi] - add ebx,DWORD PTR 24[esi] - add ecx,DWORD PTR 28[esi] - mov DWORD PTR 16[esi],edx - mov DWORD PTR 20[esi],edi - mov DWORD PTR 24[esi],ebx - mov DWORD PTR 28[esi],ecx - mov DWORD PTR 20[esp],edi - mov edi,DWORD PTR 100[esp] - mov DWORD PTR 24[esp],ebx - mov DWORD PTR 28[esp],ecx - cmp edi,DWORD PTR 104[esp] - jb $L010grand_loop - mov esp,DWORD PTR 108[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -ALIGN 32 -$L004shaext: - sub esp,32 - movdqu xmm1,XMMWORD PTR [esi] - lea ebp,DWORD PTR 128[ebp] - movdqu xmm2,XMMWORD PTR 16[esi] - movdqa xmm7,XMMWORD PTR 128[ebp] - pshufd xmm0,xmm1,27 - pshufd xmm1,xmm1,177 - pshufd xmm2,xmm2,27 -DB 102,15,58,15,202,8 - punpcklqdq xmm2,xmm0 - jmp $L011loop_shaext -ALIGN 16 -$L011loop_shaext: - movdqu xmm3,XMMWORD PTR [edi] - movdqu xmm4,XMMWORD PTR 16[edi] - movdqu xmm5,XMMWORD PTR 32[edi] -DB 102,15,56,0,223 - movdqu xmm6,XMMWORD PTR 48[edi] - movdqa XMMWORD PTR 16[esp],xmm2 - movdqa xmm0,XMMWORD PTR [ebp-128] - paddd xmm0,xmm3 -DB 102,15,56,0,231 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - nop - movdqa XMMWORD PTR [esp],xmm1 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR [ebp-112] - paddd xmm0,xmm4 -DB 102,15,56,0,239 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - lea edi,DWORD PTR 64[edi] -DB 15,56,204,220 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR [ebp-96] - paddd xmm0,xmm5 -DB 102,15,56,0,247 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm6 -DB 102,15,58,15,253,4 - nop - paddd xmm3,xmm7 -DB 15,56,204,229 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR [ebp-80] - paddd xmm0,xmm6 -DB 15,56,205,222 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm3 -DB 102,15,58,15,254,4 - nop - paddd xmm4,xmm7 -DB 15,56,204,238 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR [ebp-64] - paddd xmm0,xmm3 -DB 15,56,205,227 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm4 -DB 102,15,58,15,251,4 - nop - paddd xmm5,xmm7 -DB 15,56,204,243 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR [ebp-48] - paddd xmm0,xmm4 -DB 15,56,205,236 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm5 -DB 102,15,58,15,252,4 - nop - paddd xmm6,xmm7 -DB 15,56,204,220 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR [ebp-32] - paddd xmm0,xmm5 -DB 15,56,205,245 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm6 -DB 102,15,58,15,253,4 - nop - paddd xmm3,xmm7 -DB 15,56,204,229 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR [ebp-16] - paddd xmm0,xmm6 -DB 15,56,205,222 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm3 -DB 102,15,58,15,254,4 - nop - paddd xmm4,xmm7 -DB 15,56,204,238 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR [ebp] - paddd xmm0,xmm3 -DB 15,56,205,227 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm4 -DB 102,15,58,15,251,4 - nop - paddd xmm5,xmm7 -DB 15,56,204,243 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR 16[ebp] - paddd xmm0,xmm4 -DB 15,56,205,236 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm5 -DB 102,15,58,15,252,4 - nop - paddd xmm6,xmm7 -DB 15,56,204,220 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR 32[ebp] - paddd xmm0,xmm5 -DB 15,56,205,245 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm6 -DB 102,15,58,15,253,4 - nop - paddd xmm3,xmm7 -DB 15,56,204,229 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR 48[ebp] - paddd xmm0,xmm6 -DB 15,56,205,222 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm3 -DB 102,15,58,15,254,4 - nop - paddd xmm4,xmm7 -DB 15,56,204,238 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR 64[ebp] - paddd xmm0,xmm3 -DB 15,56,205,227 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm4 -DB 102,15,58,15,251,4 - nop - paddd xmm5,xmm7 -DB 15,56,204,243 -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR 80[ebp] - paddd xmm0,xmm4 -DB 15,56,205,236 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - movdqa xmm7,xmm5 -DB 102,15,58,15,252,4 -DB 15,56,203,202 - paddd xmm6,xmm7 - movdqa xmm0,XMMWORD PTR 96[ebp] - paddd xmm0,xmm5 -DB 15,56,203,209 - pshufd xmm0,xmm0,14 -DB 15,56,205,245 - movdqa xmm7,XMMWORD PTR 128[ebp] -DB 15,56,203,202 - movdqa xmm0,XMMWORD PTR 112[ebp] - paddd xmm0,xmm6 - nop -DB 15,56,203,209 - pshufd xmm0,xmm0,14 - cmp eax,edi - nop -DB 15,56,203,202 - paddd xmm2,XMMWORD PTR 16[esp] - paddd xmm1,XMMWORD PTR [esp] - jnz $L011loop_shaext - pshufd xmm2,xmm2,177 - pshufd xmm7,xmm1,27 - pshufd xmm1,xmm1,177 - punpckhqdq xmm1,xmm2 -DB 102,15,58,15,215,8 - mov esp,DWORD PTR 44[esp] - movdqu XMMWORD PTR [esi],xmm1 - movdqu XMMWORD PTR 16[esi],xmm2 - pop edi - pop esi - pop ebx - pop ebp - ret -ALIGN 32 -$L006SSSE3: - lea esp,DWORD PTR [esp-96] - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edi,DWORD PTR 12[esi] - mov DWORD PTR 4[esp],ebx - xor ebx,ecx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],edi - mov edx,DWORD PTR 16[esi] - mov edi,DWORD PTR 20[esi] - mov ecx,DWORD PTR 24[esi] - mov esi,DWORD PTR 28[esi] - mov DWORD PTR 20[esp],edi - mov edi,DWORD PTR 100[esp] - mov DWORD PTR 24[esp],ecx - mov DWORD PTR 28[esp],esi - movdqa xmm7,XMMWORD PTR 256[ebp] - jmp $L012grand_ssse3 -ALIGN 16 -$L012grand_ssse3: - movdqu xmm0,XMMWORD PTR [edi] - movdqu xmm1,XMMWORD PTR 16[edi] - movdqu xmm2,XMMWORD PTR 32[edi] - movdqu xmm3,XMMWORD PTR 48[edi] - add edi,64 -DB 102,15,56,0,199 - mov DWORD PTR 100[esp],edi -DB 102,15,56,0,207 - movdqa xmm4,XMMWORD PTR [ebp] -DB 102,15,56,0,215 - movdqa xmm5,XMMWORD PTR 16[ebp] - paddd xmm4,xmm0 -DB 102,15,56,0,223 - movdqa xmm6,XMMWORD PTR 32[ebp] - paddd xmm5,xmm1 - movdqa xmm7,XMMWORD PTR 48[ebp] - movdqa XMMWORD PTR 32[esp],xmm4 - paddd xmm6,xmm2 - movdqa XMMWORD PTR 48[esp],xmm5 - paddd xmm7,xmm3 - movdqa XMMWORD PTR 64[esp],xmm6 - movdqa XMMWORD PTR 80[esp],xmm7 - jmp $L013ssse3_00_47 -ALIGN 16 -$L013ssse3_00_47: - add ebp,64 - mov ecx,edx - movdqa xmm4,xmm1 - ror edx,14 - mov esi,DWORD PTR 20[esp] - movdqa xmm7,xmm3 - xor edx,ecx - mov edi,DWORD PTR 24[esp] -DB 102,15,58,15,224,4 - xor esi,edi - ror edx,5 - and esi,ecx -DB 102,15,58,15,250,4 - mov DWORD PTR 16[esp],ecx - xor edx,ecx - xor edi,esi - movdqa xmm5,xmm4 - ror edx,6 - mov ecx,eax - movdqa xmm6,xmm4 - add edx,edi - mov edi,DWORD PTR 4[esp] - psrld xmm4,3 - mov esi,eax - ror ecx,9 - paddd xmm0,xmm7 - mov DWORD PTR [esp],eax - xor ecx,eax - psrld xmm6,7 - xor eax,edi - add edx,DWORD PTR 28[esp] - ror ecx,11 - and ebx,eax - pshufd xmm7,xmm3,250 - xor ecx,esi - add edx,DWORD PTR 32[esp] - pslld xmm5,14 - xor ebx,edi - ror ecx,2 - pxor xmm4,xmm6 - add ebx,edx - add edx,DWORD PTR 12[esp] - psrld xmm6,11 - add ebx,ecx - mov ecx,edx - ror edx,14 - pxor xmm4,xmm5 - mov esi,DWORD PTR 16[esp] - xor edx,ecx - pslld xmm5,11 - mov edi,DWORD PTR 20[esp] - xor esi,edi - ror edx,5 - pxor xmm4,xmm6 - and esi,ecx - mov DWORD PTR 12[esp],ecx - movdqa xmm6,xmm7 - xor edx,ecx - xor edi,esi - ror edx,6 - pxor xmm4,xmm5 - mov ecx,ebx - add edx,edi - psrld xmm7,10 - mov edi,DWORD PTR [esp] - mov esi,ebx - ror ecx,9 - paddd xmm0,xmm4 - mov DWORD PTR 28[esp],ebx - xor ecx,ebx - psrlq xmm6,17 - xor ebx,edi - add edx,DWORD PTR 24[esp] - ror ecx,11 - pxor xmm7,xmm6 - and eax,ebx - xor ecx,esi - psrlq xmm6,2 - add edx,DWORD PTR 36[esp] - xor eax,edi - ror ecx,2 - pxor xmm7,xmm6 - add eax,edx - add edx,DWORD PTR 8[esp] - pshufd xmm7,xmm7,128 - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 12[esp] - xor edx,ecx - mov edi,DWORD PTR 16[esp] - xor esi,edi - ror edx,5 - and esi,ecx - psrldq xmm7,8 - mov DWORD PTR 8[esp],ecx - xor edx,ecx - xor edi,esi - paddd xmm0,xmm7 - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 28[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 24[esp],eax - pshufd xmm7,xmm0,80 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 20[esp] - movdqa xmm6,xmm7 - ror ecx,11 - psrld xmm7,10 - and ebx,eax - psrlq xmm6,17 - xor ecx,esi - add edx,DWORD PTR 40[esp] - xor ebx,edi - ror ecx,2 - pxor xmm7,xmm6 - add ebx,edx - add edx,DWORD PTR 4[esp] - psrlq xmm6,2 - add ebx,ecx - mov ecx,edx - ror edx,14 - pxor xmm7,xmm6 - mov esi,DWORD PTR 8[esp] - xor edx,ecx - mov edi,DWORD PTR 12[esp] - pshufd xmm7,xmm7,8 - xor esi,edi - ror edx,5 - movdqa xmm6,XMMWORD PTR [ebp] - and esi,ecx - mov DWORD PTR 4[esp],ecx - pslldq xmm7,8 - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 24[esp] - mov esi,ebx - ror ecx,9 - paddd xmm0,xmm7 - mov DWORD PTR 20[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 16[esp] - paddd xmm6,xmm0 - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 44[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,ecx - movdqa XMMWORD PTR 32[esp],xmm6 - mov ecx,edx - movdqa xmm4,xmm2 - ror edx,14 - mov esi,DWORD PTR 4[esp] - movdqa xmm7,xmm0 - xor edx,ecx - mov edi,DWORD PTR 8[esp] -DB 102,15,58,15,225,4 - xor esi,edi - ror edx,5 - and esi,ecx -DB 102,15,58,15,251,4 - mov DWORD PTR [esp],ecx - xor edx,ecx - xor edi,esi - movdqa xmm5,xmm4 - ror edx,6 - mov ecx,eax - movdqa xmm6,xmm4 - add edx,edi - mov edi,DWORD PTR 20[esp] - psrld xmm4,3 - mov esi,eax - ror ecx,9 - paddd xmm1,xmm7 - mov DWORD PTR 16[esp],eax - xor ecx,eax - psrld xmm6,7 - xor eax,edi - add edx,DWORD PTR 12[esp] - ror ecx,11 - and ebx,eax - pshufd xmm7,xmm0,250 - xor ecx,esi - add edx,DWORD PTR 48[esp] - pslld xmm5,14 - xor ebx,edi - ror ecx,2 - pxor xmm4,xmm6 - add ebx,edx - add edx,DWORD PTR 28[esp] - psrld xmm6,11 - add ebx,ecx - mov ecx,edx - ror edx,14 - pxor xmm4,xmm5 - mov esi,DWORD PTR [esp] - xor edx,ecx - pslld xmm5,11 - mov edi,DWORD PTR 4[esp] - xor esi,edi - ror edx,5 - pxor xmm4,xmm6 - and esi,ecx - mov DWORD PTR 28[esp],ecx - movdqa xmm6,xmm7 - xor edx,ecx - xor edi,esi - ror edx,6 - pxor xmm4,xmm5 - mov ecx,ebx - add edx,edi - psrld xmm7,10 - mov edi,DWORD PTR 16[esp] - mov esi,ebx - ror ecx,9 - paddd xmm1,xmm4 - mov DWORD PTR 12[esp],ebx - xor ecx,ebx - psrlq xmm6,17 - xor ebx,edi - add edx,DWORD PTR 8[esp] - ror ecx,11 - pxor xmm7,xmm6 - and eax,ebx - xor ecx,esi - psrlq xmm6,2 - add edx,DWORD PTR 52[esp] - xor eax,edi - ror ecx,2 - pxor xmm7,xmm6 - add eax,edx - add edx,DWORD PTR 24[esp] - pshufd xmm7,xmm7,128 - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 28[esp] - xor edx,ecx - mov edi,DWORD PTR [esp] - xor esi,edi - ror edx,5 - and esi,ecx - psrldq xmm7,8 - mov DWORD PTR 24[esp],ecx - xor edx,ecx - xor edi,esi - paddd xmm1,xmm7 - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 12[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 8[esp],eax - pshufd xmm7,xmm1,80 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 4[esp] - movdqa xmm6,xmm7 - ror ecx,11 - psrld xmm7,10 - and ebx,eax - psrlq xmm6,17 - xor ecx,esi - add edx,DWORD PTR 56[esp] - xor ebx,edi - ror ecx,2 - pxor xmm7,xmm6 - add ebx,edx - add edx,DWORD PTR 20[esp] - psrlq xmm6,2 - add ebx,ecx - mov ecx,edx - ror edx,14 - pxor xmm7,xmm6 - mov esi,DWORD PTR 24[esp] - xor edx,ecx - mov edi,DWORD PTR 28[esp] - pshufd xmm7,xmm7,8 - xor esi,edi - ror edx,5 - movdqa xmm6,XMMWORD PTR 16[ebp] - and esi,ecx - mov DWORD PTR 20[esp],ecx - pslldq xmm7,8 - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 8[esp] - mov esi,ebx - ror ecx,9 - paddd xmm1,xmm7 - mov DWORD PTR 4[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR [esp] - paddd xmm6,xmm1 - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 60[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,ecx - movdqa XMMWORD PTR 48[esp],xmm6 - mov ecx,edx - movdqa xmm4,xmm3 - ror edx,14 - mov esi,DWORD PTR 20[esp] - movdqa xmm7,xmm1 - xor edx,ecx - mov edi,DWORD PTR 24[esp] -DB 102,15,58,15,226,4 - xor esi,edi - ror edx,5 - and esi,ecx -DB 102,15,58,15,248,4 - mov DWORD PTR 16[esp],ecx - xor edx,ecx - xor edi,esi - movdqa xmm5,xmm4 - ror edx,6 - mov ecx,eax - movdqa xmm6,xmm4 - add edx,edi - mov edi,DWORD PTR 4[esp] - psrld xmm4,3 - mov esi,eax - ror ecx,9 - paddd xmm2,xmm7 - mov DWORD PTR [esp],eax - xor ecx,eax - psrld xmm6,7 - xor eax,edi - add edx,DWORD PTR 28[esp] - ror ecx,11 - and ebx,eax - pshufd xmm7,xmm1,250 - xor ecx,esi - add edx,DWORD PTR 64[esp] - pslld xmm5,14 - xor ebx,edi - ror ecx,2 - pxor xmm4,xmm6 - add ebx,edx - add edx,DWORD PTR 12[esp] - psrld xmm6,11 - add ebx,ecx - mov ecx,edx - ror edx,14 - pxor xmm4,xmm5 - mov esi,DWORD PTR 16[esp] - xor edx,ecx - pslld xmm5,11 - mov edi,DWORD PTR 20[esp] - xor esi,edi - ror edx,5 - pxor xmm4,xmm6 - and esi,ecx - mov DWORD PTR 12[esp],ecx - movdqa xmm6,xmm7 - xor edx,ecx - xor edi,esi - ror edx,6 - pxor xmm4,xmm5 - mov ecx,ebx - add edx,edi - psrld xmm7,10 - mov edi,DWORD PTR [esp] - mov esi,ebx - ror ecx,9 - paddd xmm2,xmm4 - mov DWORD PTR 28[esp],ebx - xor ecx,ebx - psrlq xmm6,17 - xor ebx,edi - add edx,DWORD PTR 24[esp] - ror ecx,11 - pxor xmm7,xmm6 - and eax,ebx - xor ecx,esi - psrlq xmm6,2 - add edx,DWORD PTR 68[esp] - xor eax,edi - ror ecx,2 - pxor xmm7,xmm6 - add eax,edx - add edx,DWORD PTR 8[esp] - pshufd xmm7,xmm7,128 - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 12[esp] - xor edx,ecx - mov edi,DWORD PTR 16[esp] - xor esi,edi - ror edx,5 - and esi,ecx - psrldq xmm7,8 - mov DWORD PTR 8[esp],ecx - xor edx,ecx - xor edi,esi - paddd xmm2,xmm7 - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 28[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 24[esp],eax - pshufd xmm7,xmm2,80 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 20[esp] - movdqa xmm6,xmm7 - ror ecx,11 - psrld xmm7,10 - and ebx,eax - psrlq xmm6,17 - xor ecx,esi - add edx,DWORD PTR 72[esp] - xor ebx,edi - ror ecx,2 - pxor xmm7,xmm6 - add ebx,edx - add edx,DWORD PTR 4[esp] - psrlq xmm6,2 - add ebx,ecx - mov ecx,edx - ror edx,14 - pxor xmm7,xmm6 - mov esi,DWORD PTR 8[esp] - xor edx,ecx - mov edi,DWORD PTR 12[esp] - pshufd xmm7,xmm7,8 - xor esi,edi - ror edx,5 - movdqa xmm6,XMMWORD PTR 32[ebp] - and esi,ecx - mov DWORD PTR 4[esp],ecx - pslldq xmm7,8 - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 24[esp] - mov esi,ebx - ror ecx,9 - paddd xmm2,xmm7 - mov DWORD PTR 20[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 16[esp] - paddd xmm6,xmm2 - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 76[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,ecx - movdqa XMMWORD PTR 64[esp],xmm6 - mov ecx,edx - movdqa xmm4,xmm0 - ror edx,14 - mov esi,DWORD PTR 4[esp] - movdqa xmm7,xmm2 - xor edx,ecx - mov edi,DWORD PTR 8[esp] -DB 102,15,58,15,227,4 - xor esi,edi - ror edx,5 - and esi,ecx -DB 102,15,58,15,249,4 - mov DWORD PTR [esp],ecx - xor edx,ecx - xor edi,esi - movdqa xmm5,xmm4 - ror edx,6 - mov ecx,eax - movdqa xmm6,xmm4 - add edx,edi - mov edi,DWORD PTR 20[esp] - psrld xmm4,3 - mov esi,eax - ror ecx,9 - paddd xmm3,xmm7 - mov DWORD PTR 16[esp],eax - xor ecx,eax - psrld xmm6,7 - xor eax,edi - add edx,DWORD PTR 12[esp] - ror ecx,11 - and ebx,eax - pshufd xmm7,xmm2,250 - xor ecx,esi - add edx,DWORD PTR 80[esp] - pslld xmm5,14 - xor ebx,edi - ror ecx,2 - pxor xmm4,xmm6 - add ebx,edx - add edx,DWORD PTR 28[esp] - psrld xmm6,11 - add ebx,ecx - mov ecx,edx - ror edx,14 - pxor xmm4,xmm5 - mov esi,DWORD PTR [esp] - xor edx,ecx - pslld xmm5,11 - mov edi,DWORD PTR 4[esp] - xor esi,edi - ror edx,5 - pxor xmm4,xmm6 - and esi,ecx - mov DWORD PTR 28[esp],ecx - movdqa xmm6,xmm7 - xor edx,ecx - xor edi,esi - ror edx,6 - pxor xmm4,xmm5 - mov ecx,ebx - add edx,edi - psrld xmm7,10 - mov edi,DWORD PTR 16[esp] - mov esi,ebx - ror ecx,9 - paddd xmm3,xmm4 - mov DWORD PTR 12[esp],ebx - xor ecx,ebx - psrlq xmm6,17 - xor ebx,edi - add edx,DWORD PTR 8[esp] - ror ecx,11 - pxor xmm7,xmm6 - and eax,ebx - xor ecx,esi - psrlq xmm6,2 - add edx,DWORD PTR 84[esp] - xor eax,edi - ror ecx,2 - pxor xmm7,xmm6 - add eax,edx - add edx,DWORD PTR 24[esp] - pshufd xmm7,xmm7,128 - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 28[esp] - xor edx,ecx - mov edi,DWORD PTR [esp] - xor esi,edi - ror edx,5 - and esi,ecx - psrldq xmm7,8 - mov DWORD PTR 24[esp],ecx - xor edx,ecx - xor edi,esi - paddd xmm3,xmm7 - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 12[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 8[esp],eax - pshufd xmm7,xmm3,80 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 4[esp] - movdqa xmm6,xmm7 - ror ecx,11 - psrld xmm7,10 - and ebx,eax - psrlq xmm6,17 - xor ecx,esi - add edx,DWORD PTR 88[esp] - xor ebx,edi - ror ecx,2 - pxor xmm7,xmm6 - add ebx,edx - add edx,DWORD PTR 20[esp] - psrlq xmm6,2 - add ebx,ecx - mov ecx,edx - ror edx,14 - pxor xmm7,xmm6 - mov esi,DWORD PTR 24[esp] - xor edx,ecx - mov edi,DWORD PTR 28[esp] - pshufd xmm7,xmm7,8 - xor esi,edi - ror edx,5 - movdqa xmm6,XMMWORD PTR 48[ebp] - and esi,ecx - mov DWORD PTR 20[esp],ecx - pslldq xmm7,8 - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 8[esp] - mov esi,ebx - ror ecx,9 - paddd xmm3,xmm7 - mov DWORD PTR 4[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR [esp] - paddd xmm6,xmm3 - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 92[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,ecx - movdqa XMMWORD PTR 80[esp],xmm6 - cmp DWORD PTR 64[ebp],66051 - jne $L013ssse3_00_47 - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 20[esp] - xor edx,ecx - mov edi,DWORD PTR 24[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 4[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR [esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 28[esp] - ror ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 32[esp] - xor ebx,edi - ror ecx,2 - add ebx,edx - add edx,DWORD PTR 12[esp] - add ebx,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 16[esp] - xor edx,ecx - mov edi,DWORD PTR 20[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 12[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR [esp] - mov esi,ebx - ror ecx,9 - mov DWORD PTR 28[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 24[esp] - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 36[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 12[esp] - xor edx,ecx - mov edi,DWORD PTR 16[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 28[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 24[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 20[esp] - ror ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 40[esp] - xor ebx,edi - ror ecx,2 - add ebx,edx - add edx,DWORD PTR 4[esp] - add ebx,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 8[esp] - xor edx,ecx - mov edi,DWORD PTR 12[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 4[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 24[esp] - mov esi,ebx - ror ecx,9 - mov DWORD PTR 20[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 16[esp] - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 44[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 4[esp] - xor edx,ecx - mov edi,DWORD PTR 8[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 20[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 16[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 12[esp] - ror ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 48[esp] - xor ebx,edi - ror ecx,2 - add ebx,edx - add edx,DWORD PTR 28[esp] - add ebx,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR [esp] - xor edx,ecx - mov edi,DWORD PTR 4[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 28[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 16[esp] - mov esi,ebx - ror ecx,9 - mov DWORD PTR 12[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 8[esp] - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 52[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 28[esp] - xor edx,ecx - mov edi,DWORD PTR [esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 12[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 8[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 4[esp] - ror ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 56[esp] - xor ebx,edi - ror ecx,2 - add ebx,edx - add edx,DWORD PTR 20[esp] - add ebx,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 24[esp] - xor edx,ecx - mov edi,DWORD PTR 28[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 20[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 8[esp] - mov esi,ebx - ror ecx,9 - mov DWORD PTR 4[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR [esp] - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 60[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 20[esp] - xor edx,ecx - mov edi,DWORD PTR 24[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 4[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR [esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 28[esp] - ror ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 64[esp] - xor ebx,edi - ror ecx,2 - add ebx,edx - add edx,DWORD PTR 12[esp] - add ebx,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 16[esp] - xor edx,ecx - mov edi,DWORD PTR 20[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 12[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR [esp] - mov esi,ebx - ror ecx,9 - mov DWORD PTR 28[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 24[esp] - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 68[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 12[esp] - xor edx,ecx - mov edi,DWORD PTR 16[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 28[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 24[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 20[esp] - ror ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 72[esp] - xor ebx,edi - ror ecx,2 - add ebx,edx - add edx,DWORD PTR 4[esp] - add ebx,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 8[esp] - xor edx,ecx - mov edi,DWORD PTR 12[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 4[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 24[esp] - mov esi,ebx - ror ecx,9 - mov DWORD PTR 20[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 16[esp] - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 76[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 4[esp] - xor edx,ecx - mov edi,DWORD PTR 8[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 20[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 16[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 12[esp] - ror ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 80[esp] - xor ebx,edi - ror ecx,2 - add ebx,edx - add edx,DWORD PTR 28[esp] - add ebx,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR [esp] - xor edx,ecx - mov edi,DWORD PTR 4[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 28[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 16[esp] - mov esi,ebx - ror ecx,9 - mov DWORD PTR 12[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 8[esp] - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 84[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 28[esp] - xor edx,ecx - mov edi,DWORD PTR [esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 12[esp] - mov esi,eax - ror ecx,9 - mov DWORD PTR 8[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 4[esp] - ror ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 88[esp] - xor ebx,edi - ror ecx,2 - add ebx,edx - add edx,DWORD PTR 20[esp] - add ebx,ecx - mov ecx,edx - ror edx,14 - mov esi,DWORD PTR 24[esp] - xor edx,ecx - mov edi,DWORD PTR 28[esp] - xor esi,edi - ror edx,5 - and esi,ecx - mov DWORD PTR 20[esp],ecx - xor edx,ecx - xor edi,esi - ror edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 8[esp] - mov esi,ebx - ror ecx,9 - mov DWORD PTR 4[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR [esp] - ror ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 92[esp] - xor eax,edi - ror ecx,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,ecx - mov esi,DWORD PTR 96[esp] - xor ebx,edi - mov ecx,DWORD PTR 12[esp] - add eax,DWORD PTR [esi] - add ebx,DWORD PTR 4[esi] - add edi,DWORD PTR 8[esi] - add ecx,DWORD PTR 12[esi] - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],edi - mov DWORD PTR 12[esi],ecx - mov DWORD PTR 4[esp],ebx - xor ebx,edi - mov DWORD PTR 8[esp],edi - mov DWORD PTR 12[esp],ecx - mov edi,DWORD PTR 20[esp] - mov ecx,DWORD PTR 24[esp] - add edx,DWORD PTR 16[esi] - add edi,DWORD PTR 20[esi] - add ecx,DWORD PTR 24[esi] - mov DWORD PTR 16[esi],edx - mov DWORD PTR 20[esi],edi - mov DWORD PTR 20[esp],edi - mov edi,DWORD PTR 28[esp] - mov DWORD PTR 24[esi],ecx - add edi,DWORD PTR 28[esi] - mov DWORD PTR 24[esp],ecx - mov DWORD PTR 28[esi],edi - mov DWORD PTR 28[esp],edi - mov edi,DWORD PTR 100[esp] - movdqa xmm7,XMMWORD PTR 64[ebp] - sub ebp,192 - cmp edi,DWORD PTR 104[esp] - jb $L012grand_ssse3 - mov esp,DWORD PTR 108[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -ALIGN 32 -$L005AVX: - and edx,264 - cmp edx,264 - je $L014AVX_BMI - lea esp,DWORD PTR [esp-96] - vzeroall - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edi,DWORD PTR 12[esi] - mov DWORD PTR 4[esp],ebx - xor ebx,ecx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],edi - mov edx,DWORD PTR 16[esi] - mov edi,DWORD PTR 20[esi] - mov ecx,DWORD PTR 24[esi] - mov esi,DWORD PTR 28[esi] - mov DWORD PTR 20[esp],edi - mov edi,DWORD PTR 100[esp] - mov DWORD PTR 24[esp],ecx - mov DWORD PTR 28[esp],esi - vmovdqa xmm7,XMMWORD PTR 256[ebp] - jmp $L015grand_avx -ALIGN 32 -$L015grand_avx: - vmovdqu xmm0,XMMWORD PTR [edi] - vmovdqu xmm1,XMMWORD PTR 16[edi] - vmovdqu xmm2,XMMWORD PTR 32[edi] - vmovdqu xmm3,XMMWORD PTR 48[edi] - add edi,64 - vpshufb xmm0,xmm0,xmm7 - mov DWORD PTR 100[esp],edi - vpshufb xmm1,xmm1,xmm7 - vpshufb xmm2,xmm2,xmm7 - vpaddd xmm4,xmm0,XMMWORD PTR [ebp] - vpshufb xmm3,xmm3,xmm7 - vpaddd xmm5,xmm1,XMMWORD PTR 16[ebp] - vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp] - vpaddd xmm7,xmm3,XMMWORD PTR 48[ebp] - vmovdqa XMMWORD PTR 32[esp],xmm4 - vmovdqa XMMWORD PTR 48[esp],xmm5 - vmovdqa XMMWORD PTR 64[esp],xmm6 - vmovdqa XMMWORD PTR 80[esp],xmm7 - jmp $L016avx_00_47 -ALIGN 16 -$L016avx_00_47: - add ebp,64 - vpalignr xmm4,xmm1,xmm0,4 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 20[esp] - vpalignr xmm7,xmm3,xmm2,4 - xor edx,ecx - mov edi,DWORD PTR 24[esp] - xor esi,edi - vpsrld xmm6,xmm4,7 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - vpaddd xmm0,xmm0,xmm7 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrld xmm7,xmm4,3 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 4[esp] - vpslld xmm5,xmm4,14 - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR [esp],eax - vpxor xmm4,xmm7,xmm6 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 28[esp] - vpshufd xmm7,xmm3,250 - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - vpsrld xmm6,xmm6,11 - add edx,DWORD PTR 32[esp] - xor ebx,edi - shrd ecx,ecx,2 - vpxor xmm4,xmm4,xmm5 - add ebx,edx - add edx,DWORD PTR 12[esp] - add ebx,ecx - vpslld xmm5,xmm5,11 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 16[esp] - vpxor xmm4,xmm4,xmm6 - xor edx,ecx - mov edi,DWORD PTR 20[esp] - xor esi,edi - vpsrld xmm6,xmm7,10 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 12[esp],ecx - vpxor xmm4,xmm4,xmm5 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrlq xmm5,xmm7,17 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR [esp] - vpaddd xmm0,xmm0,xmm4 - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 28[esp],ebx - vpxor xmm6,xmm6,xmm5 - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 24[esp] - vpsrlq xmm7,xmm7,19 - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - vpxor xmm6,xmm6,xmm7 - add edx,DWORD PTR 36[esp] - xor eax,edi - shrd ecx,ecx,2 - vpshufd xmm7,xmm6,132 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,ecx - vpsrldq xmm7,xmm7,8 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 12[esp] - vpaddd xmm0,xmm0,xmm7 - xor edx,ecx - mov edi,DWORD PTR 16[esp] - xor esi,edi - vpshufd xmm7,xmm0,80 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - vpsrld xmm6,xmm7,10 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrlq xmm5,xmm7,17 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 28[esp] - vpxor xmm6,xmm6,xmm5 - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 24[esp],eax - vpsrlq xmm7,xmm7,19 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 20[esp] - vpxor xmm6,xmm6,xmm7 - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - vpshufd xmm7,xmm6,232 - add edx,DWORD PTR 40[esp] - xor ebx,edi - shrd ecx,ecx,2 - vpslldq xmm7,xmm7,8 - add ebx,edx - add edx,DWORD PTR 4[esp] - add ebx,ecx - vpaddd xmm0,xmm0,xmm7 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 8[esp] - vpaddd xmm6,xmm0,XMMWORD PTR [ebp] - xor edx,ecx - mov edi,DWORD PTR 12[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 4[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 24[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 20[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 16[esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 44[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,ecx - vmovdqa XMMWORD PTR 32[esp],xmm6 - vpalignr xmm4,xmm2,xmm1,4 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 4[esp] - vpalignr xmm7,xmm0,xmm3,4 - xor edx,ecx - mov edi,DWORD PTR 8[esp] - xor esi,edi - vpsrld xmm6,xmm4,7 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - vpaddd xmm1,xmm1,xmm7 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrld xmm7,xmm4,3 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 20[esp] - vpslld xmm5,xmm4,14 - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 16[esp],eax - vpxor xmm4,xmm7,xmm6 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 12[esp] - vpshufd xmm7,xmm0,250 - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - vpsrld xmm6,xmm6,11 - add edx,DWORD PTR 48[esp] - xor ebx,edi - shrd ecx,ecx,2 - vpxor xmm4,xmm4,xmm5 - add ebx,edx - add edx,DWORD PTR 28[esp] - add ebx,ecx - vpslld xmm5,xmm5,11 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR [esp] - vpxor xmm4,xmm4,xmm6 - xor edx,ecx - mov edi,DWORD PTR 4[esp] - xor esi,edi - vpsrld xmm6,xmm7,10 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 28[esp],ecx - vpxor xmm4,xmm4,xmm5 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrlq xmm5,xmm7,17 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 16[esp] - vpaddd xmm1,xmm1,xmm4 - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 12[esp],ebx - vpxor xmm6,xmm6,xmm5 - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 8[esp] - vpsrlq xmm7,xmm7,19 - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - vpxor xmm6,xmm6,xmm7 - add edx,DWORD PTR 52[esp] - xor eax,edi - shrd ecx,ecx,2 - vpshufd xmm7,xmm6,132 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,ecx - vpsrldq xmm7,xmm7,8 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 28[esp] - vpaddd xmm1,xmm1,xmm7 - xor edx,ecx - mov edi,DWORD PTR [esp] - xor esi,edi - vpshufd xmm7,xmm1,80 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - vpsrld xmm6,xmm7,10 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrlq xmm5,xmm7,17 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 12[esp] - vpxor xmm6,xmm6,xmm5 - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 8[esp],eax - vpsrlq xmm7,xmm7,19 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 4[esp] - vpxor xmm6,xmm6,xmm7 - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - vpshufd xmm7,xmm6,232 - add edx,DWORD PTR 56[esp] - xor ebx,edi - shrd ecx,ecx,2 - vpslldq xmm7,xmm7,8 - add ebx,edx - add edx,DWORD PTR 20[esp] - add ebx,ecx - vpaddd xmm1,xmm1,xmm7 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 24[esp] - vpaddd xmm6,xmm1,XMMWORD PTR 16[ebp] - xor edx,ecx - mov edi,DWORD PTR 28[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 20[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 8[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 4[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR [esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 60[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,ecx - vmovdqa XMMWORD PTR 48[esp],xmm6 - vpalignr xmm4,xmm3,xmm2,4 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 20[esp] - vpalignr xmm7,xmm1,xmm0,4 - xor edx,ecx - mov edi,DWORD PTR 24[esp] - xor esi,edi - vpsrld xmm6,xmm4,7 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - vpaddd xmm2,xmm2,xmm7 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrld xmm7,xmm4,3 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 4[esp] - vpslld xmm5,xmm4,14 - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR [esp],eax - vpxor xmm4,xmm7,xmm6 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 28[esp] - vpshufd xmm7,xmm1,250 - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - vpsrld xmm6,xmm6,11 - add edx,DWORD PTR 64[esp] - xor ebx,edi - shrd ecx,ecx,2 - vpxor xmm4,xmm4,xmm5 - add ebx,edx - add edx,DWORD PTR 12[esp] - add ebx,ecx - vpslld xmm5,xmm5,11 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 16[esp] - vpxor xmm4,xmm4,xmm6 - xor edx,ecx - mov edi,DWORD PTR 20[esp] - xor esi,edi - vpsrld xmm6,xmm7,10 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 12[esp],ecx - vpxor xmm4,xmm4,xmm5 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrlq xmm5,xmm7,17 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR [esp] - vpaddd xmm2,xmm2,xmm4 - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 28[esp],ebx - vpxor xmm6,xmm6,xmm5 - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 24[esp] - vpsrlq xmm7,xmm7,19 - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - vpxor xmm6,xmm6,xmm7 - add edx,DWORD PTR 68[esp] - xor eax,edi - shrd ecx,ecx,2 - vpshufd xmm7,xmm6,132 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,ecx - vpsrldq xmm7,xmm7,8 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 12[esp] - vpaddd xmm2,xmm2,xmm7 - xor edx,ecx - mov edi,DWORD PTR 16[esp] - xor esi,edi - vpshufd xmm7,xmm2,80 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - vpsrld xmm6,xmm7,10 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrlq xmm5,xmm7,17 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 28[esp] - vpxor xmm6,xmm6,xmm5 - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 24[esp],eax - vpsrlq xmm7,xmm7,19 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 20[esp] - vpxor xmm6,xmm6,xmm7 - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - vpshufd xmm7,xmm6,232 - add edx,DWORD PTR 72[esp] - xor ebx,edi - shrd ecx,ecx,2 - vpslldq xmm7,xmm7,8 - add ebx,edx - add edx,DWORD PTR 4[esp] - add ebx,ecx - vpaddd xmm2,xmm2,xmm7 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 8[esp] - vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp] - xor edx,ecx - mov edi,DWORD PTR 12[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 4[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 24[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 20[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 16[esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 76[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,ecx - vmovdqa XMMWORD PTR 64[esp],xmm6 - vpalignr xmm4,xmm0,xmm3,4 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 4[esp] - vpalignr xmm7,xmm2,xmm1,4 - xor edx,ecx - mov edi,DWORD PTR 8[esp] - xor esi,edi - vpsrld xmm6,xmm4,7 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - vpaddd xmm3,xmm3,xmm7 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrld xmm7,xmm4,3 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 20[esp] - vpslld xmm5,xmm4,14 - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 16[esp],eax - vpxor xmm4,xmm7,xmm6 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 12[esp] - vpshufd xmm7,xmm2,250 - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - vpsrld xmm6,xmm6,11 - add edx,DWORD PTR 80[esp] - xor ebx,edi - shrd ecx,ecx,2 - vpxor xmm4,xmm4,xmm5 - add ebx,edx - add edx,DWORD PTR 28[esp] - add ebx,ecx - vpslld xmm5,xmm5,11 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR [esp] - vpxor xmm4,xmm4,xmm6 - xor edx,ecx - mov edi,DWORD PTR 4[esp] - xor esi,edi - vpsrld xmm6,xmm7,10 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 28[esp],ecx - vpxor xmm4,xmm4,xmm5 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrlq xmm5,xmm7,17 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 16[esp] - vpaddd xmm3,xmm3,xmm4 - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 12[esp],ebx - vpxor xmm6,xmm6,xmm5 - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 8[esp] - vpsrlq xmm7,xmm7,19 - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - vpxor xmm6,xmm6,xmm7 - add edx,DWORD PTR 84[esp] - xor eax,edi - shrd ecx,ecx,2 - vpshufd xmm7,xmm6,132 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,ecx - vpsrldq xmm7,xmm7,8 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 28[esp] - vpaddd xmm3,xmm3,xmm7 - xor edx,ecx - mov edi,DWORD PTR [esp] - xor esi,edi - vpshufd xmm7,xmm3,80 - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - vpsrld xmm6,xmm7,10 - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - vpsrlq xmm5,xmm7,17 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 12[esp] - vpxor xmm6,xmm6,xmm5 - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 8[esp],eax - vpsrlq xmm7,xmm7,19 - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 4[esp] - vpxor xmm6,xmm6,xmm7 - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - vpshufd xmm7,xmm6,232 - add edx,DWORD PTR 88[esp] - xor ebx,edi - shrd ecx,ecx,2 - vpslldq xmm7,xmm7,8 - add ebx,edx - add edx,DWORD PTR 20[esp] - add ebx,ecx - vpaddd xmm3,xmm3,xmm7 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 24[esp] - vpaddd xmm6,xmm3,XMMWORD PTR 48[ebp] - xor edx,ecx - mov edi,DWORD PTR 28[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 20[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 8[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 4[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR [esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 92[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,ecx - vmovdqa XMMWORD PTR 80[esp],xmm6 - cmp DWORD PTR 64[ebp],66051 - jne $L016avx_00_47 - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 20[esp] - xor edx,ecx - mov edi,DWORD PTR 24[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 4[esp] - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR [esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 28[esp] - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 32[esp] - xor ebx,edi - shrd ecx,ecx,2 - add ebx,edx - add edx,DWORD PTR 12[esp] - add ebx,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 16[esp] - xor edx,ecx - mov edi,DWORD PTR 20[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 12[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR [esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 28[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 24[esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 36[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 12[esp] - xor edx,ecx - mov edi,DWORD PTR 16[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 28[esp] - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 24[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 20[esp] - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 40[esp] - xor ebx,edi - shrd ecx,ecx,2 - add ebx,edx - add edx,DWORD PTR 4[esp] - add ebx,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 8[esp] - xor edx,ecx - mov edi,DWORD PTR 12[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 4[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 24[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 20[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 16[esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 44[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 4[esp] - xor edx,ecx - mov edi,DWORD PTR 8[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 20[esp] - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 16[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 12[esp] - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 48[esp] - xor ebx,edi - shrd ecx,ecx,2 - add ebx,edx - add edx,DWORD PTR 28[esp] - add ebx,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR [esp] - xor edx,ecx - mov edi,DWORD PTR 4[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 28[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 16[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 12[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 8[esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 52[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 28[esp] - xor edx,ecx - mov edi,DWORD PTR [esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 12[esp] - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 8[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 4[esp] - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 56[esp] - xor ebx,edi - shrd ecx,ecx,2 - add ebx,edx - add edx,DWORD PTR 20[esp] - add ebx,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 24[esp] - xor edx,ecx - mov edi,DWORD PTR 28[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 20[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 8[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 4[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR [esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 60[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 20[esp] - xor edx,ecx - mov edi,DWORD PTR 24[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 16[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 4[esp] - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR [esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 28[esp] - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 64[esp] - xor ebx,edi - shrd ecx,ecx,2 - add ebx,edx - add edx,DWORD PTR 12[esp] - add ebx,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 16[esp] - xor edx,ecx - mov edi,DWORD PTR 20[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 12[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR [esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 28[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 24[esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 68[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR 8[esp] - add eax,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 12[esp] - xor edx,ecx - mov edi,DWORD PTR 16[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 8[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 28[esp] - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 24[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 20[esp] - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 72[esp] - xor ebx,edi - shrd ecx,ecx,2 - add ebx,edx - add edx,DWORD PTR 4[esp] - add ebx,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 8[esp] - xor edx,ecx - mov edi,DWORD PTR 12[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 4[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 24[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 20[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 16[esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 76[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR [esp] - add eax,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 4[esp] - xor edx,ecx - mov edi,DWORD PTR 8[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR [esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 20[esp] - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 16[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 12[esp] - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 80[esp] - xor ebx,edi - shrd ecx,ecx,2 - add ebx,edx - add edx,DWORD PTR 28[esp] - add ebx,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR [esp] - xor edx,ecx - mov edi,DWORD PTR 4[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 28[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 16[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 12[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR 8[esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 84[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR 24[esp] - add eax,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 28[esp] - xor edx,ecx - mov edi,DWORD PTR [esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 24[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,eax - add edx,edi - mov edi,DWORD PTR 12[esp] - mov esi,eax - shrd ecx,ecx,9 - mov DWORD PTR 8[esp],eax - xor ecx,eax - xor eax,edi - add edx,DWORD PTR 4[esp] - shrd ecx,ecx,11 - and ebx,eax - xor ecx,esi - add edx,DWORD PTR 88[esp] - xor ebx,edi - shrd ecx,ecx,2 - add ebx,edx - add edx,DWORD PTR 20[esp] - add ebx,ecx - mov ecx,edx - shrd edx,edx,14 - mov esi,DWORD PTR 24[esp] - xor edx,ecx - mov edi,DWORD PTR 28[esp] - xor esi,edi - shrd edx,edx,5 - and esi,ecx - mov DWORD PTR 20[esp],ecx - xor edx,ecx - xor edi,esi - shrd edx,edx,6 - mov ecx,ebx - add edx,edi - mov edi,DWORD PTR 8[esp] - mov esi,ebx - shrd ecx,ecx,9 - mov DWORD PTR 4[esp],ebx - xor ecx,ebx - xor ebx,edi - add edx,DWORD PTR [esp] - shrd ecx,ecx,11 - and eax,ebx - xor ecx,esi - add edx,DWORD PTR 92[esp] - xor eax,edi - shrd ecx,ecx,2 - add eax,edx - add edx,DWORD PTR 16[esp] - add eax,ecx - mov esi,DWORD PTR 96[esp] - xor ebx,edi - mov ecx,DWORD PTR 12[esp] - add eax,DWORD PTR [esi] - add ebx,DWORD PTR 4[esi] - add edi,DWORD PTR 8[esi] - add ecx,DWORD PTR 12[esi] - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],edi - mov DWORD PTR 12[esi],ecx - mov DWORD PTR 4[esp],ebx - xor ebx,edi - mov DWORD PTR 8[esp],edi - mov DWORD PTR 12[esp],ecx - mov edi,DWORD PTR 20[esp] - mov ecx,DWORD PTR 24[esp] - add edx,DWORD PTR 16[esi] - add edi,DWORD PTR 20[esi] - add ecx,DWORD PTR 24[esi] - mov DWORD PTR 16[esi],edx - mov DWORD PTR 20[esi],edi - mov DWORD PTR 20[esp],edi - mov edi,DWORD PTR 28[esp] - mov DWORD PTR 24[esi],ecx - add edi,DWORD PTR 28[esi] - mov DWORD PTR 24[esp],ecx - mov DWORD PTR 28[esi],edi - mov DWORD PTR 28[esp],edi - mov edi,DWORD PTR 100[esp] - vmovdqa xmm7,XMMWORD PTR 64[ebp] - sub ebp,192 - cmp edi,DWORD PTR 104[esp] - jb $L015grand_avx - mov esp,DWORD PTR 108[esp] - vzeroall - pop edi - pop esi - pop ebx - pop ebp - ret -ALIGN 32 -$L014AVX_BMI: - lea esp,DWORD PTR [esp-96] - vzeroall - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edi,DWORD PTR 12[esi] - mov DWORD PTR 4[esp],ebx - xor ebx,ecx - mov DWORD PTR 8[esp],ecx - mov DWORD PTR 12[esp],edi - mov edx,DWORD PTR 16[esi] - mov edi,DWORD PTR 20[esi] - mov ecx,DWORD PTR 24[esi] - mov esi,DWORD PTR 28[esi] - mov DWORD PTR 20[esp],edi - mov edi,DWORD PTR 100[esp] - mov DWORD PTR 24[esp],ecx - mov DWORD PTR 28[esp],esi - vmovdqa xmm7,XMMWORD PTR 256[ebp] - jmp $L017grand_avx_bmi -ALIGN 32 -$L017grand_avx_bmi: - vmovdqu xmm0,XMMWORD PTR [edi] - vmovdqu xmm1,XMMWORD PTR 16[edi] - vmovdqu xmm2,XMMWORD PTR 32[edi] - vmovdqu xmm3,XMMWORD PTR 48[edi] - add edi,64 - vpshufb xmm0,xmm0,xmm7 - mov DWORD PTR 100[esp],edi - vpshufb xmm1,xmm1,xmm7 - vpshufb xmm2,xmm2,xmm7 - vpaddd xmm4,xmm0,XMMWORD PTR [ebp] - vpshufb xmm3,xmm3,xmm7 - vpaddd xmm5,xmm1,XMMWORD PTR 16[ebp] - vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp] - vpaddd xmm7,xmm3,XMMWORD PTR 48[ebp] - vmovdqa XMMWORD PTR 32[esp],xmm4 - vmovdqa XMMWORD PTR 48[esp],xmm5 - vmovdqa XMMWORD PTR 64[esp],xmm6 - vmovdqa XMMWORD PTR 80[esp],xmm7 - jmp $L018avx_bmi_00_47 -ALIGN 16 -$L018avx_bmi_00_47: - add ebp,64 - vpalignr xmm4,xmm1,xmm0,4 - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 16[esp],edx - vpalignr xmm7,xmm3,xmm2,4 - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 24[esp] - vpsrld xmm6,xmm4,7 - xor ecx,edi - and edx,DWORD PTR 20[esp] - mov DWORD PTR [esp],eax - vpaddd xmm0,xmm0,xmm7 - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - vpsrld xmm7,xmm4,3 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - vpslld xmm5,xmm4,14 - mov edi,DWORD PTR 4[esp] - xor ecx,esi - xor eax,edi - vpxor xmm4,xmm7,xmm6 - add edx,DWORD PTR 28[esp] - and ebx,eax - add edx,DWORD PTR 32[esp] - vpshufd xmm7,xmm3,250 - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 12[esp] - vpsrld xmm6,xmm6,11 - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - vpxor xmm4,xmm4,xmm5 - mov DWORD PTR 12[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpslld xmm5,xmm5,11 - andn esi,edx,DWORD PTR 20[esp] - xor ecx,edi - and edx,DWORD PTR 16[esp] - vpxor xmm4,xmm4,xmm6 - mov DWORD PTR 28[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - vpsrld xmm6,xmm7,10 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - vpxor xmm4,xmm4,xmm5 - mov edi,DWORD PTR [esp] - xor ecx,esi - xor ebx,edi - vpsrlq xmm5,xmm7,17 - add edx,DWORD PTR 24[esp] - and eax,ebx - add edx,DWORD PTR 36[esp] - vpaddd xmm0,xmm0,xmm4 - xor eax,edi - add ecx,edx - add edx,DWORD PTR 8[esp] - vpxor xmm6,xmm6,xmm5 - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - vpsrlq xmm7,xmm7,19 - mov DWORD PTR 8[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpxor xmm6,xmm6,xmm7 - andn esi,edx,DWORD PTR 16[esp] - xor ecx,edi - and edx,DWORD PTR 12[esp] - vpshufd xmm7,xmm6,132 - mov DWORD PTR 24[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - vpsrldq xmm7,xmm7,8 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - vpaddd xmm0,xmm0,xmm7 - mov edi,DWORD PTR 28[esp] - xor ecx,esi - xor eax,edi - vpshufd xmm7,xmm0,80 - add edx,DWORD PTR 20[esp] - and ebx,eax - add edx,DWORD PTR 40[esp] - vpsrld xmm6,xmm7,10 - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 4[esp] - vpsrlq xmm5,xmm7,17 - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - vpxor xmm6,xmm6,xmm5 - mov DWORD PTR 4[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpsrlq xmm7,xmm7,19 - andn esi,edx,DWORD PTR 12[esp] - xor ecx,edi - and edx,DWORD PTR 8[esp] - vpxor xmm6,xmm6,xmm7 - mov DWORD PTR 20[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - vpshufd xmm7,xmm6,232 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - vpslldq xmm7,xmm7,8 - mov edi,DWORD PTR 24[esp] - xor ecx,esi - xor ebx,edi - vpaddd xmm0,xmm0,xmm7 - add edx,DWORD PTR 16[esp] - and eax,ebx - add edx,DWORD PTR 44[esp] - vpaddd xmm6,xmm0,XMMWORD PTR [ebp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR [esp] - lea eax,DWORD PTR [ecx*1+eax] - vmovdqa XMMWORD PTR 32[esp],xmm6 - vpalignr xmm4,xmm2,xmm1,4 - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR [esp],edx - vpalignr xmm7,xmm0,xmm3,4 - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 8[esp] - vpsrld xmm6,xmm4,7 - xor ecx,edi - and edx,DWORD PTR 4[esp] - mov DWORD PTR 16[esp],eax - vpaddd xmm1,xmm1,xmm7 - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - vpsrld xmm7,xmm4,3 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - vpslld xmm5,xmm4,14 - mov edi,DWORD PTR 20[esp] - xor ecx,esi - xor eax,edi - vpxor xmm4,xmm7,xmm6 - add edx,DWORD PTR 12[esp] - and ebx,eax - add edx,DWORD PTR 48[esp] - vpshufd xmm7,xmm0,250 - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 28[esp] - vpsrld xmm6,xmm6,11 - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - vpxor xmm4,xmm4,xmm5 - mov DWORD PTR 28[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpslld xmm5,xmm5,11 - andn esi,edx,DWORD PTR 4[esp] - xor ecx,edi - and edx,DWORD PTR [esp] - vpxor xmm4,xmm4,xmm6 - mov DWORD PTR 12[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - vpsrld xmm6,xmm7,10 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - vpxor xmm4,xmm4,xmm5 - mov edi,DWORD PTR 16[esp] - xor ecx,esi - xor ebx,edi - vpsrlq xmm5,xmm7,17 - add edx,DWORD PTR 8[esp] - and eax,ebx - add edx,DWORD PTR 52[esp] - vpaddd xmm1,xmm1,xmm4 - xor eax,edi - add ecx,edx - add edx,DWORD PTR 24[esp] - vpxor xmm6,xmm6,xmm5 - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - vpsrlq xmm7,xmm7,19 - mov DWORD PTR 24[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpxor xmm6,xmm6,xmm7 - andn esi,edx,DWORD PTR [esp] - xor ecx,edi - and edx,DWORD PTR 28[esp] - vpshufd xmm7,xmm6,132 - mov DWORD PTR 8[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - vpsrldq xmm7,xmm7,8 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - vpaddd xmm1,xmm1,xmm7 - mov edi,DWORD PTR 12[esp] - xor ecx,esi - xor eax,edi - vpshufd xmm7,xmm1,80 - add edx,DWORD PTR 4[esp] - and ebx,eax - add edx,DWORD PTR 56[esp] - vpsrld xmm6,xmm7,10 - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 20[esp] - vpsrlq xmm5,xmm7,17 - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - vpxor xmm6,xmm6,xmm5 - mov DWORD PTR 20[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpsrlq xmm7,xmm7,19 - andn esi,edx,DWORD PTR 28[esp] - xor ecx,edi - and edx,DWORD PTR 24[esp] - vpxor xmm6,xmm6,xmm7 - mov DWORD PTR 4[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - vpshufd xmm7,xmm6,232 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - vpslldq xmm7,xmm7,8 - mov edi,DWORD PTR 8[esp] - xor ecx,esi - xor ebx,edi - vpaddd xmm1,xmm1,xmm7 - add edx,DWORD PTR [esp] - and eax,ebx - add edx,DWORD PTR 60[esp] - vpaddd xmm6,xmm1,XMMWORD PTR 16[ebp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR 16[esp] - lea eax,DWORD PTR [ecx*1+eax] - vmovdqa XMMWORD PTR 48[esp],xmm6 - vpalignr xmm4,xmm3,xmm2,4 - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 16[esp],edx - vpalignr xmm7,xmm1,xmm0,4 - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 24[esp] - vpsrld xmm6,xmm4,7 - xor ecx,edi - and edx,DWORD PTR 20[esp] - mov DWORD PTR [esp],eax - vpaddd xmm2,xmm2,xmm7 - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - vpsrld xmm7,xmm4,3 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - vpslld xmm5,xmm4,14 - mov edi,DWORD PTR 4[esp] - xor ecx,esi - xor eax,edi - vpxor xmm4,xmm7,xmm6 - add edx,DWORD PTR 28[esp] - and ebx,eax - add edx,DWORD PTR 64[esp] - vpshufd xmm7,xmm1,250 - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 12[esp] - vpsrld xmm6,xmm6,11 - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - vpxor xmm4,xmm4,xmm5 - mov DWORD PTR 12[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpslld xmm5,xmm5,11 - andn esi,edx,DWORD PTR 20[esp] - xor ecx,edi - and edx,DWORD PTR 16[esp] - vpxor xmm4,xmm4,xmm6 - mov DWORD PTR 28[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - vpsrld xmm6,xmm7,10 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - vpxor xmm4,xmm4,xmm5 - mov edi,DWORD PTR [esp] - xor ecx,esi - xor ebx,edi - vpsrlq xmm5,xmm7,17 - add edx,DWORD PTR 24[esp] - and eax,ebx - add edx,DWORD PTR 68[esp] - vpaddd xmm2,xmm2,xmm4 - xor eax,edi - add ecx,edx - add edx,DWORD PTR 8[esp] - vpxor xmm6,xmm6,xmm5 - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - vpsrlq xmm7,xmm7,19 - mov DWORD PTR 8[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpxor xmm6,xmm6,xmm7 - andn esi,edx,DWORD PTR 16[esp] - xor ecx,edi - and edx,DWORD PTR 12[esp] - vpshufd xmm7,xmm6,132 - mov DWORD PTR 24[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - vpsrldq xmm7,xmm7,8 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - vpaddd xmm2,xmm2,xmm7 - mov edi,DWORD PTR 28[esp] - xor ecx,esi - xor eax,edi - vpshufd xmm7,xmm2,80 - add edx,DWORD PTR 20[esp] - and ebx,eax - add edx,DWORD PTR 72[esp] - vpsrld xmm6,xmm7,10 - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 4[esp] - vpsrlq xmm5,xmm7,17 - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - vpxor xmm6,xmm6,xmm5 - mov DWORD PTR 4[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpsrlq xmm7,xmm7,19 - andn esi,edx,DWORD PTR 12[esp] - xor ecx,edi - and edx,DWORD PTR 8[esp] - vpxor xmm6,xmm6,xmm7 - mov DWORD PTR 20[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - vpshufd xmm7,xmm6,232 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - vpslldq xmm7,xmm7,8 - mov edi,DWORD PTR 24[esp] - xor ecx,esi - xor ebx,edi - vpaddd xmm2,xmm2,xmm7 - add edx,DWORD PTR 16[esp] - and eax,ebx - add edx,DWORD PTR 76[esp] - vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR [esp] - lea eax,DWORD PTR [ecx*1+eax] - vmovdqa XMMWORD PTR 64[esp],xmm6 - vpalignr xmm4,xmm0,xmm3,4 - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR [esp],edx - vpalignr xmm7,xmm2,xmm1,4 - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 8[esp] - vpsrld xmm6,xmm4,7 - xor ecx,edi - and edx,DWORD PTR 4[esp] - mov DWORD PTR 16[esp],eax - vpaddd xmm3,xmm3,xmm7 - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - vpsrld xmm7,xmm4,3 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - vpslld xmm5,xmm4,14 - mov edi,DWORD PTR 20[esp] - xor ecx,esi - xor eax,edi - vpxor xmm4,xmm7,xmm6 - add edx,DWORD PTR 12[esp] - and ebx,eax - add edx,DWORD PTR 80[esp] - vpshufd xmm7,xmm2,250 - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 28[esp] - vpsrld xmm6,xmm6,11 - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - vpxor xmm4,xmm4,xmm5 - mov DWORD PTR 28[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpslld xmm5,xmm5,11 - andn esi,edx,DWORD PTR 4[esp] - xor ecx,edi - and edx,DWORD PTR [esp] - vpxor xmm4,xmm4,xmm6 - mov DWORD PTR 12[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - vpsrld xmm6,xmm7,10 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - vpxor xmm4,xmm4,xmm5 - mov edi,DWORD PTR 16[esp] - xor ecx,esi - xor ebx,edi - vpsrlq xmm5,xmm7,17 - add edx,DWORD PTR 8[esp] - and eax,ebx - add edx,DWORD PTR 84[esp] - vpaddd xmm3,xmm3,xmm4 - xor eax,edi - add ecx,edx - add edx,DWORD PTR 24[esp] - vpxor xmm6,xmm6,xmm5 - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - vpsrlq xmm7,xmm7,19 - mov DWORD PTR 24[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpxor xmm6,xmm6,xmm7 - andn esi,edx,DWORD PTR [esp] - xor ecx,edi - and edx,DWORD PTR 28[esp] - vpshufd xmm7,xmm6,132 - mov DWORD PTR 8[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - vpsrldq xmm7,xmm7,8 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - vpaddd xmm3,xmm3,xmm7 - mov edi,DWORD PTR 12[esp] - xor ecx,esi - xor eax,edi - vpshufd xmm7,xmm3,80 - add edx,DWORD PTR 4[esp] - and ebx,eax - add edx,DWORD PTR 88[esp] - vpsrld xmm6,xmm7,10 - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 20[esp] - vpsrlq xmm5,xmm7,17 - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - vpxor xmm6,xmm6,xmm5 - mov DWORD PTR 20[esp],edx - rorx edi,edx,25 - xor ecx,esi - vpsrlq xmm7,xmm7,19 - andn esi,edx,DWORD PTR 28[esp] - xor ecx,edi - and edx,DWORD PTR 24[esp] - vpxor xmm6,xmm6,xmm7 - mov DWORD PTR 4[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - vpshufd xmm7,xmm6,232 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - vpslldq xmm7,xmm7,8 - mov edi,DWORD PTR 8[esp] - xor ecx,esi - xor ebx,edi - vpaddd xmm3,xmm3,xmm7 - add edx,DWORD PTR [esp] - and eax,ebx - add edx,DWORD PTR 92[esp] - vpaddd xmm6,xmm3,XMMWORD PTR 48[ebp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR 16[esp] - lea eax,DWORD PTR [ecx*1+eax] - vmovdqa XMMWORD PTR 80[esp],xmm6 - cmp DWORD PTR 64[ebp],66051 - jne $L018avx_bmi_00_47 - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 16[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 24[esp] - xor ecx,edi - and edx,DWORD PTR 20[esp] - mov DWORD PTR [esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - mov edi,DWORD PTR 4[esp] - xor ecx,esi - xor eax,edi - add edx,DWORD PTR 28[esp] - and ebx,eax - add edx,DWORD PTR 32[esp] - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 12[esp] - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 12[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 20[esp] - xor ecx,edi - and edx,DWORD PTR 16[esp] - mov DWORD PTR 28[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - mov edi,DWORD PTR [esp] - xor ecx,esi - xor ebx,edi - add edx,DWORD PTR 24[esp] - and eax,ebx - add edx,DWORD PTR 36[esp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR 8[esp] - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 8[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 16[esp] - xor ecx,edi - and edx,DWORD PTR 12[esp] - mov DWORD PTR 24[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - mov edi,DWORD PTR 28[esp] - xor ecx,esi - xor eax,edi - add edx,DWORD PTR 20[esp] - and ebx,eax - add edx,DWORD PTR 40[esp] - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 4[esp] - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 4[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 12[esp] - xor ecx,edi - and edx,DWORD PTR 8[esp] - mov DWORD PTR 20[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - mov edi,DWORD PTR 24[esp] - xor ecx,esi - xor ebx,edi - add edx,DWORD PTR 16[esp] - and eax,ebx - add edx,DWORD PTR 44[esp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR [esp] - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR [esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 8[esp] - xor ecx,edi - and edx,DWORD PTR 4[esp] - mov DWORD PTR 16[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - mov edi,DWORD PTR 20[esp] - xor ecx,esi - xor eax,edi - add edx,DWORD PTR 12[esp] - and ebx,eax - add edx,DWORD PTR 48[esp] - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 28[esp] - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 28[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 4[esp] - xor ecx,edi - and edx,DWORD PTR [esp] - mov DWORD PTR 12[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - mov edi,DWORD PTR 16[esp] - xor ecx,esi - xor ebx,edi - add edx,DWORD PTR 8[esp] - and eax,ebx - add edx,DWORD PTR 52[esp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR 24[esp] - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 24[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR [esp] - xor ecx,edi - and edx,DWORD PTR 28[esp] - mov DWORD PTR 8[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - mov edi,DWORD PTR 12[esp] - xor ecx,esi - xor eax,edi - add edx,DWORD PTR 4[esp] - and ebx,eax - add edx,DWORD PTR 56[esp] - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 20[esp] - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 20[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 28[esp] - xor ecx,edi - and edx,DWORD PTR 24[esp] - mov DWORD PTR 4[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - mov edi,DWORD PTR 8[esp] - xor ecx,esi - xor ebx,edi - add edx,DWORD PTR [esp] - and eax,ebx - add edx,DWORD PTR 60[esp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR 16[esp] - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 16[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 24[esp] - xor ecx,edi - and edx,DWORD PTR 20[esp] - mov DWORD PTR [esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - mov edi,DWORD PTR 4[esp] - xor ecx,esi - xor eax,edi - add edx,DWORD PTR 28[esp] - and ebx,eax - add edx,DWORD PTR 64[esp] - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 12[esp] - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 12[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 20[esp] - xor ecx,edi - and edx,DWORD PTR 16[esp] - mov DWORD PTR 28[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - mov edi,DWORD PTR [esp] - xor ecx,esi - xor ebx,edi - add edx,DWORD PTR 24[esp] - and eax,ebx - add edx,DWORD PTR 68[esp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR 8[esp] - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 8[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 16[esp] - xor ecx,edi - and edx,DWORD PTR 12[esp] - mov DWORD PTR 24[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - mov edi,DWORD PTR 28[esp] - xor ecx,esi - xor eax,edi - add edx,DWORD PTR 20[esp] - and ebx,eax - add edx,DWORD PTR 72[esp] - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 4[esp] - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 4[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 12[esp] - xor ecx,edi - and edx,DWORD PTR 8[esp] - mov DWORD PTR 20[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - mov edi,DWORD PTR 24[esp] - xor ecx,esi - xor ebx,edi - add edx,DWORD PTR 16[esp] - and eax,ebx - add edx,DWORD PTR 76[esp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR [esp] - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR [esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 8[esp] - xor ecx,edi - and edx,DWORD PTR 4[esp] - mov DWORD PTR 16[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - mov edi,DWORD PTR 20[esp] - xor ecx,esi - xor eax,edi - add edx,DWORD PTR 12[esp] - and ebx,eax - add edx,DWORD PTR 80[esp] - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 28[esp] - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 28[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 4[esp] - xor ecx,edi - and edx,DWORD PTR [esp] - mov DWORD PTR 12[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - mov edi,DWORD PTR 16[esp] - xor ecx,esi - xor ebx,edi - add edx,DWORD PTR 8[esp] - and eax,ebx - add edx,DWORD PTR 84[esp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR 24[esp] - lea eax,DWORD PTR [ecx*1+eax] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 24[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR [esp] - xor ecx,edi - and edx,DWORD PTR 28[esp] - mov DWORD PTR 8[esp],eax - or edx,esi - rorx edi,eax,2 - rorx esi,eax,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,eax,22 - xor esi,edi - mov edi,DWORD PTR 12[esp] - xor ecx,esi - xor eax,edi - add edx,DWORD PTR 4[esp] - and ebx,eax - add edx,DWORD PTR 88[esp] - xor ebx,edi - add ecx,edx - add edx,DWORD PTR 20[esp] - lea ebx,DWORD PTR [ecx*1+ebx] - rorx ecx,edx,6 - rorx esi,edx,11 - mov DWORD PTR 20[esp],edx - rorx edi,edx,25 - xor ecx,esi - andn esi,edx,DWORD PTR 28[esp] - xor ecx,edi - and edx,DWORD PTR 24[esp] - mov DWORD PTR 4[esp],ebx - or edx,esi - rorx edi,ebx,2 - rorx esi,ebx,13 - lea edx,DWORD PTR [ecx*1+edx] - rorx ecx,ebx,22 - xor esi,edi - mov edi,DWORD PTR 8[esp] - xor ecx,esi - xor ebx,edi - add edx,DWORD PTR [esp] - and eax,ebx - add edx,DWORD PTR 92[esp] - xor eax,edi - add ecx,edx - add edx,DWORD PTR 16[esp] - lea eax,DWORD PTR [ecx*1+eax] - mov esi,DWORD PTR 96[esp] - xor ebx,edi - mov ecx,DWORD PTR 12[esp] - add eax,DWORD PTR [esi] - add ebx,DWORD PTR 4[esi] - add edi,DWORD PTR 8[esi] - add ecx,DWORD PTR 12[esi] - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - mov DWORD PTR 8[esi],edi - mov DWORD PTR 12[esi],ecx - mov DWORD PTR 4[esp],ebx - xor ebx,edi - mov DWORD PTR 8[esp],edi - mov DWORD PTR 12[esp],ecx - mov edi,DWORD PTR 20[esp] - mov ecx,DWORD PTR 24[esp] - add edx,DWORD PTR 16[esi] - add edi,DWORD PTR 20[esi] - add ecx,DWORD PTR 24[esi] - mov DWORD PTR 16[esi],edx - mov DWORD PTR 20[esi],edi - mov DWORD PTR 20[esp],edi - mov edi,DWORD PTR 28[esp] - mov DWORD PTR 24[esi],ecx - add edi,DWORD PTR 28[esi] - mov DWORD PTR 24[esp],ecx - mov DWORD PTR 28[esi],edi - mov DWORD PTR 28[esp],edi - mov edi,DWORD PTR 100[esp] - vmovdqa xmm7,XMMWORD PTR 64[ebp] - sub ebp,192 - cmp edi,DWORD PTR 104[esp] - jb $L017grand_avx_bmi - mov esp,DWORD PTR 108[esp] - vzeroall - pop edi - pop esi - pop ebx - pop ebp - ret -_sha256_block_data_order ENDP -.text$ ENDS -.bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:DWORD:4 -.bss ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +;EXTERN _OPENSSL_ia32cap_P:NEAR +ALIGN 16 +_sha256_block_data_order PROC PUBLIC +$L_sha256_block_data_order_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov ebx,esp + call $L000pic_point +$L000pic_point: + pop ebp + lea ebp,DWORD PTR ($L001K256-$L000pic_point)[ebp] + sub esp,16 + and esp,-64 + shl eax,6 + add eax,edi + mov DWORD PTR [esp],esi + mov DWORD PTR 4[esp],edi + mov DWORD PTR 8[esp],eax + mov DWORD PTR 12[esp],ebx + lea edx,DWORD PTR _OPENSSL_ia32cap_P + mov ecx,DWORD PTR [edx] + mov ebx,DWORD PTR 4[edx] + test ecx,1048576 + jnz $L002loop + mov edx,DWORD PTR 8[edx] + test ecx,16777216 + jz $L003no_xmm + and ecx,1073741824 + and ebx,268435968 + test edx,536870912 + jnz $L004shaext + or ecx,ebx + and ecx,1342177280 + cmp ecx,1342177280 + je $L005AVX + test ebx,512 + jnz $L006SSSE3 +$L003no_xmm: + sub eax,edi + cmp eax,256 + jae $L007unrolled + jmp $L002loop +ALIGN 16 +$L002loop: + mov eax,DWORD PTR [edi] + mov ebx,DWORD PTR 4[edi] + mov ecx,DWORD PTR 8[edi] + bswap eax + mov edx,DWORD PTR 12[edi] + bswap ebx + push eax + bswap ecx + push ebx + bswap edx + push ecx + push edx + mov eax,DWORD PTR 16[edi] + mov ebx,DWORD PTR 20[edi] + mov ecx,DWORD PTR 24[edi] + bswap eax + mov edx,DWORD PTR 28[edi] + bswap ebx + push eax + bswap ecx + push ebx + bswap edx + push ecx + push edx + mov eax,DWORD PTR 32[edi] + mov ebx,DWORD PTR 36[edi] + mov ecx,DWORD PTR 40[edi] + bswap eax + mov edx,DWORD PTR 44[edi] + bswap ebx + push eax + bswap ecx + push ebx + bswap edx + push ecx + push edx + mov eax,DWORD PTR 48[edi] + mov ebx,DWORD PTR 52[edi] + mov ecx,DWORD PTR 56[edi] + bswap eax + mov edx,DWORD PTR 60[edi] + bswap ebx + push eax + bswap ecx + push ebx + bswap edx + push ecx + push edx + add edi,64 + lea esp,DWORD PTR [esp-36] + mov DWORD PTR 104[esp],edi + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edi,DWORD PTR 12[esi] + mov DWORD PTR 8[esp],ebx + xor ebx,ecx + mov DWORD PTR 12[esp],ecx + mov DWORD PTR 16[esp],edi + mov DWORD PTR [esp],ebx + mov edx,DWORD PTR 16[esi] + mov ebx,DWORD PTR 20[esi] + mov ecx,DWORD PTR 24[esi] + mov edi,DWORD PTR 28[esi] + mov DWORD PTR 24[esp],ebx + mov DWORD PTR 28[esp],ecx + mov DWORD PTR 32[esp],edi +ALIGN 16 +$L00800_15: + mov ecx,edx + mov esi,DWORD PTR 24[esp] + ror ecx,14 + mov edi,DWORD PTR 28[esp] + xor ecx,edx + xor esi,edi + mov ebx,DWORD PTR 96[esp] + ror ecx,5 + and esi,edx + mov DWORD PTR 20[esp],edx + xor edx,ecx + add ebx,DWORD PTR 32[esp] + xor esi,edi + ror edx,6 + mov ecx,eax + add ebx,esi + ror ecx,9 + add ebx,edx + mov edi,DWORD PTR 8[esp] + xor ecx,eax + mov DWORD PTR 4[esp],eax + lea esp,DWORD PTR [esp-4] + ror ecx,11 + mov esi,DWORD PTR [ebp] + xor ecx,eax + mov edx,DWORD PTR 20[esp] + xor eax,edi + ror ecx,2 + add ebx,esi + mov DWORD PTR [esp],eax + add edx,ebx + and eax,DWORD PTR 4[esp] + add ebx,ecx + xor eax,edi + add ebp,4 + add eax,ebx + cmp esi,3248222580 + jne $L00800_15 + mov ecx,DWORD PTR 156[esp] + jmp $L00916_63 +ALIGN 16 +$L00916_63: + mov ebx,ecx + mov esi,DWORD PTR 104[esp] + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 160[esp] + shr edi,10 + add ebx,DWORD PTR 124[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 24[esp] + ror ecx,14 + add ebx,edi + mov edi,DWORD PTR 28[esp] + xor ecx,edx + xor esi,edi + mov DWORD PTR 96[esp],ebx + ror ecx,5 + and esi,edx + mov DWORD PTR 20[esp],edx + xor edx,ecx + add ebx,DWORD PTR 32[esp] + xor esi,edi + ror edx,6 + mov ecx,eax + add ebx,esi + ror ecx,9 + add ebx,edx + mov edi,DWORD PTR 8[esp] + xor ecx,eax + mov DWORD PTR 4[esp],eax + lea esp,DWORD PTR [esp-4] + ror ecx,11 + mov esi,DWORD PTR [ebp] + xor ecx,eax + mov edx,DWORD PTR 20[esp] + xor eax,edi + ror ecx,2 + add ebx,esi + mov DWORD PTR [esp],eax + add edx,ebx + and eax,DWORD PTR 4[esp] + add ebx,ecx + xor eax,edi + mov ecx,DWORD PTR 156[esp] + add ebp,4 + add eax,ebx + cmp esi,3329325298 + jne $L00916_63 + mov esi,DWORD PTR 356[esp] + mov ebx,DWORD PTR 8[esp] + mov ecx,DWORD PTR 16[esp] + add eax,DWORD PTR [esi] + add ebx,DWORD PTR 4[esi] + add edi,DWORD PTR 8[esi] + add ecx,DWORD PTR 12[esi] + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],edi + mov DWORD PTR 12[esi],ecx + mov eax,DWORD PTR 24[esp] + mov ebx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + mov edi,DWORD PTR 360[esp] + add edx,DWORD PTR 16[esi] + add eax,DWORD PTR 20[esi] + add ebx,DWORD PTR 24[esi] + add ecx,DWORD PTR 28[esi] + mov DWORD PTR 16[esi],edx + mov DWORD PTR 20[esi],eax + mov DWORD PTR 24[esi],ebx + mov DWORD PTR 28[esi],ecx + lea esp,DWORD PTR 356[esp] + sub ebp,256 + cmp edi,DWORD PTR 8[esp] + jb $L002loop + mov esp,DWORD PTR 12[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +ALIGN 64 +$L001K256: +DD 1116352408,1899447441,3049323471,3921009573 +DD 961987163,1508970993,2453635748,2870763221 +DD 3624381080,310598401,607225278,1426881987 +DD 1925078388,2162078206,2614888103,3248222580 +DD 3835390401,4022224774,264347078,604807628 +DD 770255983,1249150122,1555081692,1996064986 +DD 2554220882,2821834349,2952996808,3210313671 +DD 3336571891,3584528711,113926993,338241895 +DD 666307205,773529912,1294757372,1396182291 +DD 1695183700,1986661051,2177026350,2456956037 +DD 2730485921,2820302411,3259730800,3345764771 +DD 3516065817,3600352804,4094571909,275423344 +DD 430227734,506948616,659060556,883997877 +DD 958139571,1322822218,1537002063,1747873779 +DD 1955562222,2024104815,2227730452,2361852424 +DD 2428436474,2756734187,3204031479,3329325298 +DD 66051,67438087,134810123,202182159 +DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97 +DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32 +DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 +DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 +DB 62,0 +ALIGN 16 +$L007unrolled: + lea esp,DWORD PTR [esp-96] + mov eax,DWORD PTR [esi] + mov ebp,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov ebx,DWORD PTR 12[esi] + mov DWORD PTR 4[esp],ebp + xor ebp,ecx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],ebx + mov edx,DWORD PTR 16[esi] + mov ebx,DWORD PTR 20[esi] + mov ecx,DWORD PTR 24[esi] + mov esi,DWORD PTR 28[esi] + mov DWORD PTR 20[esp],ebx + mov DWORD PTR 24[esp],ecx + mov DWORD PTR 28[esp],esi + jmp $L010grand_loop +ALIGN 16 +$L010grand_loop: + mov ebx,DWORD PTR [edi] + mov ecx,DWORD PTR 4[edi] + bswap ebx + mov esi,DWORD PTR 8[edi] + bswap ecx + mov DWORD PTR 32[esp],ebx + bswap esi + mov DWORD PTR 36[esp],ecx + mov DWORD PTR 40[esp],esi + mov ebx,DWORD PTR 12[edi] + mov ecx,DWORD PTR 16[edi] + bswap ebx + mov esi,DWORD PTR 20[edi] + bswap ecx + mov DWORD PTR 44[esp],ebx + bswap esi + mov DWORD PTR 48[esp],ecx + mov DWORD PTR 52[esp],esi + mov ebx,DWORD PTR 24[edi] + mov ecx,DWORD PTR 28[edi] + bswap ebx + mov esi,DWORD PTR 32[edi] + bswap ecx + mov DWORD PTR 56[esp],ebx + bswap esi + mov DWORD PTR 60[esp],ecx + mov DWORD PTR 64[esp],esi + mov ebx,DWORD PTR 36[edi] + mov ecx,DWORD PTR 40[edi] + bswap ebx + mov esi,DWORD PTR 44[edi] + bswap ecx + mov DWORD PTR 68[esp],ebx + bswap esi + mov DWORD PTR 72[esp],ecx + mov DWORD PTR 76[esp],esi + mov ebx,DWORD PTR 48[edi] + mov ecx,DWORD PTR 52[edi] + bswap ebx + mov esi,DWORD PTR 56[edi] + bswap ecx + mov DWORD PTR 80[esp],ebx + bswap esi + mov DWORD PTR 84[esp],ecx + mov DWORD PTR 88[esp],esi + mov ebx,DWORD PTR 60[edi] + add edi,64 + bswap ebx + mov DWORD PTR 100[esp],edi + mov DWORD PTR 92[esp],ebx + mov ecx,edx + mov esi,DWORD PTR 20[esp] + ror edx,14 + mov edi,DWORD PTR 24[esp] + xor edx,ecx + mov ebx,DWORD PTR 32[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 28[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 4[esp] + xor ecx,eax + mov DWORD PTR [esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 1116352408[edx*1+ebx] + xor ecx,esi + xor ebp,edi + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 12[esp] + add ebp,ecx + mov esi,edx + mov ecx,DWORD PTR 16[esp] + ror edx,14 + mov edi,DWORD PTR 20[esp] + xor edx,esi + mov ebx,DWORD PTR 36[esp] + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 12[esp],esi + xor edx,esi + add ebx,DWORD PTR 24[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR [esp] + xor esi,ebp + mov DWORD PTR 28[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 1899447441[edx*1+ebx] + xor esi,ecx + xor eax,edi + ror esi,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,esi + mov ecx,edx + mov esi,DWORD PTR 12[esp] + ror edx,14 + mov edi,DWORD PTR 16[esp] + xor edx,ecx + mov ebx,DWORD PTR 40[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 20[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 28[esp] + xor ecx,eax + mov DWORD PTR 24[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 3049323471[edx*1+ebx] + xor ecx,esi + xor ebp,edi + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 4[esp] + add ebp,ecx + mov esi,edx + mov ecx,DWORD PTR 8[esp] + ror edx,14 + mov edi,DWORD PTR 12[esp] + xor edx,esi + mov ebx,DWORD PTR 44[esp] + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 4[esp],esi + xor edx,esi + add ebx,DWORD PTR 16[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 24[esp] + xor esi,ebp + mov DWORD PTR 20[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 3921009573[edx*1+ebx] + xor esi,ecx + xor eax,edi + ror esi,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,esi + mov ecx,edx + mov esi,DWORD PTR 4[esp] + ror edx,14 + mov edi,DWORD PTR 8[esp] + xor edx,ecx + mov ebx,DWORD PTR 48[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + add ebx,DWORD PTR 12[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 20[esp] + xor ecx,eax + mov DWORD PTR 16[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 961987163[edx*1+ebx] + xor ecx,esi + xor ebp,edi + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 28[esp] + add ebp,ecx + mov esi,edx + mov ecx,DWORD PTR [esp] + ror edx,14 + mov edi,DWORD PTR 4[esp] + xor edx,esi + mov ebx,DWORD PTR 52[esp] + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 28[esp],esi + xor edx,esi + add ebx,DWORD PTR 8[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 16[esp] + xor esi,ebp + mov DWORD PTR 12[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 1508970993[edx*1+ebx] + xor esi,ecx + xor eax,edi + ror esi,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,esi + mov ecx,edx + mov esi,DWORD PTR 28[esp] + ror edx,14 + mov edi,DWORD PTR [esp] + xor edx,ecx + mov ebx,DWORD PTR 56[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 4[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 12[esp] + xor ecx,eax + mov DWORD PTR 8[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 2453635748[edx*1+ebx] + xor ecx,esi + xor ebp,edi + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 20[esp] + add ebp,ecx + mov esi,edx + mov ecx,DWORD PTR 24[esp] + ror edx,14 + mov edi,DWORD PTR 28[esp] + xor edx,esi + mov ebx,DWORD PTR 60[esp] + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 20[esp],esi + xor edx,esi + add ebx,DWORD PTR [esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 8[esp] + xor esi,ebp + mov DWORD PTR 4[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 2870763221[edx*1+ebx] + xor esi,ecx + xor eax,edi + ror esi,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,esi + mov ecx,edx + mov esi,DWORD PTR 20[esp] + ror edx,14 + mov edi,DWORD PTR 24[esp] + xor edx,ecx + mov ebx,DWORD PTR 64[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 28[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 4[esp] + xor ecx,eax + mov DWORD PTR [esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 3624381080[edx*1+ebx] + xor ecx,esi + xor ebp,edi + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 12[esp] + add ebp,ecx + mov esi,edx + mov ecx,DWORD PTR 16[esp] + ror edx,14 + mov edi,DWORD PTR 20[esp] + xor edx,esi + mov ebx,DWORD PTR 68[esp] + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 12[esp],esi + xor edx,esi + add ebx,DWORD PTR 24[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR [esp] + xor esi,ebp + mov DWORD PTR 28[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 310598401[edx*1+ebx] + xor esi,ecx + xor eax,edi + ror esi,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,esi + mov ecx,edx + mov esi,DWORD PTR 12[esp] + ror edx,14 + mov edi,DWORD PTR 16[esp] + xor edx,ecx + mov ebx,DWORD PTR 72[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 20[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 28[esp] + xor ecx,eax + mov DWORD PTR 24[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 607225278[edx*1+ebx] + xor ecx,esi + xor ebp,edi + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 4[esp] + add ebp,ecx + mov esi,edx + mov ecx,DWORD PTR 8[esp] + ror edx,14 + mov edi,DWORD PTR 12[esp] + xor edx,esi + mov ebx,DWORD PTR 76[esp] + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 4[esp],esi + xor edx,esi + add ebx,DWORD PTR 16[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 24[esp] + xor esi,ebp + mov DWORD PTR 20[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 1426881987[edx*1+ebx] + xor esi,ecx + xor eax,edi + ror esi,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,esi + mov ecx,edx + mov esi,DWORD PTR 4[esp] + ror edx,14 + mov edi,DWORD PTR 8[esp] + xor edx,ecx + mov ebx,DWORD PTR 80[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + add ebx,DWORD PTR 12[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 20[esp] + xor ecx,eax + mov DWORD PTR 16[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 1925078388[edx*1+ebx] + xor ecx,esi + xor ebp,edi + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 28[esp] + add ebp,ecx + mov esi,edx + mov ecx,DWORD PTR [esp] + ror edx,14 + mov edi,DWORD PTR 4[esp] + xor edx,esi + mov ebx,DWORD PTR 84[esp] + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 28[esp],esi + xor edx,esi + add ebx,DWORD PTR 8[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 16[esp] + xor esi,ebp + mov DWORD PTR 12[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 2162078206[edx*1+ebx] + xor esi,ecx + xor eax,edi + ror esi,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,esi + mov ecx,edx + mov esi,DWORD PTR 28[esp] + ror edx,14 + mov edi,DWORD PTR [esp] + xor edx,ecx + mov ebx,DWORD PTR 88[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 4[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 12[esp] + xor ecx,eax + mov DWORD PTR 8[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 2614888103[edx*1+ebx] + xor ecx,esi + xor ebp,edi + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 20[esp] + add ebp,ecx + mov esi,edx + mov ecx,DWORD PTR 24[esp] + ror edx,14 + mov edi,DWORD PTR 28[esp] + xor edx,esi + mov ebx,DWORD PTR 92[esp] + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 20[esp],esi + xor edx,esi + add ebx,DWORD PTR [esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 8[esp] + xor esi,ebp + mov DWORD PTR 4[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 3248222580[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 36[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,esi + mov esi,DWORD PTR 88[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 32[esp] + shr edi,10 + add ebx,DWORD PTR 68[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 20[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 24[esp] + xor edx,ecx + mov DWORD PTR 32[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 28[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 4[esp] + xor ecx,eax + mov DWORD PTR [esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 3835390401[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 40[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 12[esp] + add ebp,ecx + mov ecx,DWORD PTR 92[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 36[esp] + shr edi,10 + add ebx,DWORD PTR 72[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 16[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 20[esp] + xor edx,esi + mov DWORD PTR 36[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 12[esp],esi + xor edx,esi + add ebx,DWORD PTR 24[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR [esp] + xor esi,ebp + mov DWORD PTR 28[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 4022224774[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 44[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,esi + mov esi,DWORD PTR 32[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 40[esp] + shr edi,10 + add ebx,DWORD PTR 76[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 12[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 16[esp] + xor edx,ecx + mov DWORD PTR 40[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 20[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 28[esp] + xor ecx,eax + mov DWORD PTR 24[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 264347078[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 48[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 4[esp] + add ebp,ecx + mov ecx,DWORD PTR 36[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 44[esp] + shr edi,10 + add ebx,DWORD PTR 80[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 8[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 12[esp] + xor edx,esi + mov DWORD PTR 44[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 4[esp],esi + xor edx,esi + add ebx,DWORD PTR 16[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 24[esp] + xor esi,ebp + mov DWORD PTR 20[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 604807628[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 52[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,esi + mov esi,DWORD PTR 40[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 48[esp] + shr edi,10 + add ebx,DWORD PTR 84[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 4[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 8[esp] + xor edx,ecx + mov DWORD PTR 48[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + add ebx,DWORD PTR 12[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 20[esp] + xor ecx,eax + mov DWORD PTR 16[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 770255983[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 56[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 28[esp] + add ebp,ecx + mov ecx,DWORD PTR 44[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 52[esp] + shr edi,10 + add ebx,DWORD PTR 88[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR [esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 4[esp] + xor edx,esi + mov DWORD PTR 52[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 28[esp],esi + xor edx,esi + add ebx,DWORD PTR 8[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 16[esp] + xor esi,ebp + mov DWORD PTR 12[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 1249150122[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 60[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,esi + mov esi,DWORD PTR 48[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 56[esp] + shr edi,10 + add ebx,DWORD PTR 92[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 28[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR [esp] + xor edx,ecx + mov DWORD PTR 56[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 4[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 12[esp] + xor ecx,eax + mov DWORD PTR 8[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 1555081692[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 64[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 20[esp] + add ebp,ecx + mov ecx,DWORD PTR 52[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 60[esp] + shr edi,10 + add ebx,DWORD PTR 32[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 24[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 28[esp] + xor edx,esi + mov DWORD PTR 60[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 20[esp],esi + xor edx,esi + add ebx,DWORD PTR [esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 8[esp] + xor esi,ebp + mov DWORD PTR 4[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 1996064986[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 68[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,esi + mov esi,DWORD PTR 56[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 64[esp] + shr edi,10 + add ebx,DWORD PTR 36[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 20[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 24[esp] + xor edx,ecx + mov DWORD PTR 64[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 28[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 4[esp] + xor ecx,eax + mov DWORD PTR [esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 2554220882[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 72[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 12[esp] + add ebp,ecx + mov ecx,DWORD PTR 60[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 68[esp] + shr edi,10 + add ebx,DWORD PTR 40[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 16[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 20[esp] + xor edx,esi + mov DWORD PTR 68[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 12[esp],esi + xor edx,esi + add ebx,DWORD PTR 24[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR [esp] + xor esi,ebp + mov DWORD PTR 28[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 2821834349[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 76[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,esi + mov esi,DWORD PTR 64[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 72[esp] + shr edi,10 + add ebx,DWORD PTR 44[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 12[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 16[esp] + xor edx,ecx + mov DWORD PTR 72[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 20[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 28[esp] + xor ecx,eax + mov DWORD PTR 24[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 2952996808[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 80[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 4[esp] + add ebp,ecx + mov ecx,DWORD PTR 68[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 76[esp] + shr edi,10 + add ebx,DWORD PTR 48[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 8[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 12[esp] + xor edx,esi + mov DWORD PTR 76[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 4[esp],esi + xor edx,esi + add ebx,DWORD PTR 16[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 24[esp] + xor esi,ebp + mov DWORD PTR 20[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 3210313671[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 84[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,esi + mov esi,DWORD PTR 72[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 80[esp] + shr edi,10 + add ebx,DWORD PTR 52[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 4[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 8[esp] + xor edx,ecx + mov DWORD PTR 80[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + add ebx,DWORD PTR 12[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 20[esp] + xor ecx,eax + mov DWORD PTR 16[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 3336571891[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 88[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 28[esp] + add ebp,ecx + mov ecx,DWORD PTR 76[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 84[esp] + shr edi,10 + add ebx,DWORD PTR 56[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR [esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 4[esp] + xor edx,esi + mov DWORD PTR 84[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 28[esp],esi + xor edx,esi + add ebx,DWORD PTR 8[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 16[esp] + xor esi,ebp + mov DWORD PTR 12[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 3584528711[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 92[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,esi + mov esi,DWORD PTR 80[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 88[esp] + shr edi,10 + add ebx,DWORD PTR 60[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 28[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR [esp] + xor edx,ecx + mov DWORD PTR 88[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 4[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 12[esp] + xor ecx,eax + mov DWORD PTR 8[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 113926993[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 32[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 20[esp] + add ebp,ecx + mov ecx,DWORD PTR 84[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 92[esp] + shr edi,10 + add ebx,DWORD PTR 64[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 24[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 28[esp] + xor edx,esi + mov DWORD PTR 92[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 20[esp],esi + xor edx,esi + add ebx,DWORD PTR [esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 8[esp] + xor esi,ebp + mov DWORD PTR 4[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 338241895[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 36[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,esi + mov esi,DWORD PTR 88[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 32[esp] + shr edi,10 + add ebx,DWORD PTR 68[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 20[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 24[esp] + xor edx,ecx + mov DWORD PTR 32[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 28[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 4[esp] + xor ecx,eax + mov DWORD PTR [esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 666307205[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 40[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 12[esp] + add ebp,ecx + mov ecx,DWORD PTR 92[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 36[esp] + shr edi,10 + add ebx,DWORD PTR 72[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 16[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 20[esp] + xor edx,esi + mov DWORD PTR 36[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 12[esp],esi + xor edx,esi + add ebx,DWORD PTR 24[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR [esp] + xor esi,ebp + mov DWORD PTR 28[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 773529912[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 44[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,esi + mov esi,DWORD PTR 32[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 40[esp] + shr edi,10 + add ebx,DWORD PTR 76[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 12[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 16[esp] + xor edx,ecx + mov DWORD PTR 40[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 20[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 28[esp] + xor ecx,eax + mov DWORD PTR 24[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 1294757372[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 48[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 4[esp] + add ebp,ecx + mov ecx,DWORD PTR 36[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 44[esp] + shr edi,10 + add ebx,DWORD PTR 80[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 8[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 12[esp] + xor edx,esi + mov DWORD PTR 44[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 4[esp],esi + xor edx,esi + add ebx,DWORD PTR 16[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 24[esp] + xor esi,ebp + mov DWORD PTR 20[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 1396182291[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 52[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,esi + mov esi,DWORD PTR 40[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 48[esp] + shr edi,10 + add ebx,DWORD PTR 84[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 4[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 8[esp] + xor edx,ecx + mov DWORD PTR 48[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + add ebx,DWORD PTR 12[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 20[esp] + xor ecx,eax + mov DWORD PTR 16[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 1695183700[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 56[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 28[esp] + add ebp,ecx + mov ecx,DWORD PTR 44[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 52[esp] + shr edi,10 + add ebx,DWORD PTR 88[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR [esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 4[esp] + xor edx,esi + mov DWORD PTR 52[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 28[esp],esi + xor edx,esi + add ebx,DWORD PTR 8[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 16[esp] + xor esi,ebp + mov DWORD PTR 12[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 1986661051[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 60[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,esi + mov esi,DWORD PTR 48[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 56[esp] + shr edi,10 + add ebx,DWORD PTR 92[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 28[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR [esp] + xor edx,ecx + mov DWORD PTR 56[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 4[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 12[esp] + xor ecx,eax + mov DWORD PTR 8[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 2177026350[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 64[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 20[esp] + add ebp,ecx + mov ecx,DWORD PTR 52[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 60[esp] + shr edi,10 + add ebx,DWORD PTR 32[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 24[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 28[esp] + xor edx,esi + mov DWORD PTR 60[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 20[esp],esi + xor edx,esi + add ebx,DWORD PTR [esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 8[esp] + xor esi,ebp + mov DWORD PTR 4[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 2456956037[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 68[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,esi + mov esi,DWORD PTR 56[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 64[esp] + shr edi,10 + add ebx,DWORD PTR 36[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 20[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 24[esp] + xor edx,ecx + mov DWORD PTR 64[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 28[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 4[esp] + xor ecx,eax + mov DWORD PTR [esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 2730485921[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 72[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 12[esp] + add ebp,ecx + mov ecx,DWORD PTR 60[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 68[esp] + shr edi,10 + add ebx,DWORD PTR 40[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 16[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 20[esp] + xor edx,esi + mov DWORD PTR 68[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 12[esp],esi + xor edx,esi + add ebx,DWORD PTR 24[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR [esp] + xor esi,ebp + mov DWORD PTR 28[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 2820302411[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 76[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,esi + mov esi,DWORD PTR 64[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 72[esp] + shr edi,10 + add ebx,DWORD PTR 44[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 12[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 16[esp] + xor edx,ecx + mov DWORD PTR 72[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 20[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 28[esp] + xor ecx,eax + mov DWORD PTR 24[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 3259730800[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 80[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 4[esp] + add ebp,ecx + mov ecx,DWORD PTR 68[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 76[esp] + shr edi,10 + add ebx,DWORD PTR 48[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 8[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 12[esp] + xor edx,esi + mov DWORD PTR 76[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 4[esp],esi + xor edx,esi + add ebx,DWORD PTR 16[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 24[esp] + xor esi,ebp + mov DWORD PTR 20[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 3345764771[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 84[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,esi + mov esi,DWORD PTR 72[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 80[esp] + shr edi,10 + add ebx,DWORD PTR 52[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 4[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 8[esp] + xor edx,ecx + mov DWORD PTR 80[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + add ebx,DWORD PTR 12[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 20[esp] + xor ecx,eax + mov DWORD PTR 16[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 3516065817[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 88[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 28[esp] + add ebp,ecx + mov ecx,DWORD PTR 76[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 84[esp] + shr edi,10 + add ebx,DWORD PTR 56[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR [esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 4[esp] + xor edx,esi + mov DWORD PTR 84[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 28[esp],esi + xor edx,esi + add ebx,DWORD PTR 8[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 16[esp] + xor esi,ebp + mov DWORD PTR 12[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 3600352804[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 92[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,esi + mov esi,DWORD PTR 80[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 88[esp] + shr edi,10 + add ebx,DWORD PTR 60[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 28[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR [esp] + xor edx,ecx + mov DWORD PTR 88[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 4[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 12[esp] + xor ecx,eax + mov DWORD PTR 8[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 4094571909[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 32[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 20[esp] + add ebp,ecx + mov ecx,DWORD PTR 84[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 92[esp] + shr edi,10 + add ebx,DWORD PTR 64[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 24[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 28[esp] + xor edx,esi + mov DWORD PTR 92[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 20[esp],esi + xor edx,esi + add ebx,DWORD PTR [esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 8[esp] + xor esi,ebp + mov DWORD PTR 4[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 275423344[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 36[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,esi + mov esi,DWORD PTR 88[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 32[esp] + shr edi,10 + add ebx,DWORD PTR 68[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 20[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 24[esp] + xor edx,ecx + mov DWORD PTR 32[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 28[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 4[esp] + xor ecx,eax + mov DWORD PTR [esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 430227734[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 40[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 12[esp] + add ebp,ecx + mov ecx,DWORD PTR 92[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 36[esp] + shr edi,10 + add ebx,DWORD PTR 72[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 16[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 20[esp] + xor edx,esi + mov DWORD PTR 36[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 12[esp],esi + xor edx,esi + add ebx,DWORD PTR 24[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR [esp] + xor esi,ebp + mov DWORD PTR 28[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 506948616[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 44[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,esi + mov esi,DWORD PTR 32[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 40[esp] + shr edi,10 + add ebx,DWORD PTR 76[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 12[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 16[esp] + xor edx,ecx + mov DWORD PTR 40[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 20[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 28[esp] + xor ecx,eax + mov DWORD PTR 24[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 659060556[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 48[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 4[esp] + add ebp,ecx + mov ecx,DWORD PTR 36[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 44[esp] + shr edi,10 + add ebx,DWORD PTR 80[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 8[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 12[esp] + xor edx,esi + mov DWORD PTR 44[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 4[esp],esi + xor edx,esi + add ebx,DWORD PTR 16[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 24[esp] + xor esi,ebp + mov DWORD PTR 20[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 883997877[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 52[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,esi + mov esi,DWORD PTR 40[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 48[esp] + shr edi,10 + add ebx,DWORD PTR 84[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 4[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 8[esp] + xor edx,ecx + mov DWORD PTR 48[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + add ebx,DWORD PTR 12[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 20[esp] + xor ecx,eax + mov DWORD PTR 16[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 958139571[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 56[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 28[esp] + add ebp,ecx + mov ecx,DWORD PTR 44[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 52[esp] + shr edi,10 + add ebx,DWORD PTR 88[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR [esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 4[esp] + xor edx,esi + mov DWORD PTR 52[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 28[esp],esi + xor edx,esi + add ebx,DWORD PTR 8[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 16[esp] + xor esi,ebp + mov DWORD PTR 12[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 1322822218[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 60[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,esi + mov esi,DWORD PTR 48[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 56[esp] + shr edi,10 + add ebx,DWORD PTR 92[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 28[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR [esp] + xor edx,ecx + mov DWORD PTR 56[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 4[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 12[esp] + xor ecx,eax + mov DWORD PTR 8[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 1537002063[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 64[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 20[esp] + add ebp,ecx + mov ecx,DWORD PTR 52[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 60[esp] + shr edi,10 + add ebx,DWORD PTR 32[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 24[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 28[esp] + xor edx,esi + mov DWORD PTR 60[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 20[esp],esi + xor edx,esi + add ebx,DWORD PTR [esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 8[esp] + xor esi,ebp + mov DWORD PTR 4[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 1747873779[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 68[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,esi + mov esi,DWORD PTR 56[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 64[esp] + shr edi,10 + add ebx,DWORD PTR 36[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 20[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 24[esp] + xor edx,ecx + mov DWORD PTR 64[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 28[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 4[esp] + xor ecx,eax + mov DWORD PTR [esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 1955562222[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 72[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 12[esp] + add ebp,ecx + mov ecx,DWORD PTR 60[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 68[esp] + shr edi,10 + add ebx,DWORD PTR 40[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 16[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 20[esp] + xor edx,esi + mov DWORD PTR 68[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 12[esp],esi + xor edx,esi + add ebx,DWORD PTR 24[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR [esp] + xor esi,ebp + mov DWORD PTR 28[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 2024104815[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 76[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,esi + mov esi,DWORD PTR 64[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 72[esp] + shr edi,10 + add ebx,DWORD PTR 44[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 12[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 16[esp] + xor edx,ecx + mov DWORD PTR 72[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 20[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 28[esp] + xor ecx,eax + mov DWORD PTR 24[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 2227730452[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 80[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 4[esp] + add ebp,ecx + mov ecx,DWORD PTR 68[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 76[esp] + shr edi,10 + add ebx,DWORD PTR 48[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 8[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 12[esp] + xor edx,esi + mov DWORD PTR 76[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 4[esp],esi + xor edx,esi + add ebx,DWORD PTR 16[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 24[esp] + xor esi,ebp + mov DWORD PTR 20[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 2361852424[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 84[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,esi + mov esi,DWORD PTR 72[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 80[esp] + shr edi,10 + add ebx,DWORD PTR 52[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 4[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 8[esp] + xor edx,ecx + mov DWORD PTR 80[esp],ebx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + add ebx,DWORD PTR 12[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 20[esp] + xor ecx,eax + mov DWORD PTR 16[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 2428436474[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 88[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 28[esp] + add ebp,ecx + mov ecx,DWORD PTR 76[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 84[esp] + shr edi,10 + add ebx,DWORD PTR 56[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR [esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 4[esp] + xor edx,esi + mov DWORD PTR 84[esp],ebx + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 28[esp],esi + xor edx,esi + add ebx,DWORD PTR 8[esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 16[esp] + xor esi,ebp + mov DWORD PTR 12[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 2756734187[edx*1+ebx] + xor esi,ecx + xor eax,edi + mov ecx,DWORD PTR 92[esp] + ror esi,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,esi + mov esi,DWORD PTR 80[esp] + mov ebx,ecx + ror ecx,11 + mov edi,esi + ror esi,2 + xor ecx,ebx + shr ebx,3 + ror ecx,7 + xor esi,edi + xor ebx,ecx + ror esi,17 + add ebx,DWORD PTR 88[esp] + shr edi,10 + add ebx,DWORD PTR 60[esp] + mov ecx,edx + xor edi,esi + mov esi,DWORD PTR 28[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR [esp] + xor edx,ecx + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + add ebx,DWORD PTR 4[esp] + xor edi,esi + ror edx,6 + mov ecx,eax + add ebx,edi + ror ecx,9 + mov esi,eax + mov edi,DWORD PTR 12[esp] + xor ecx,eax + mov DWORD PTR 8[esp],eax + xor eax,edi + ror ecx,11 + and ebp,eax + lea edx,DWORD PTR 3204031479[edx*1+ebx] + xor ecx,esi + xor ebp,edi + mov esi,DWORD PTR 32[esp] + ror ecx,2 + add ebp,edx + add edx,DWORD PTR 20[esp] + add ebp,ecx + mov ecx,DWORD PTR 84[esp] + mov ebx,esi + ror esi,11 + mov edi,ecx + ror ecx,2 + xor esi,ebx + shr ebx,3 + ror esi,7 + xor ecx,edi + xor ebx,esi + ror ecx,17 + add ebx,DWORD PTR 92[esp] + shr edi,10 + add ebx,DWORD PTR 64[esp] + mov esi,edx + xor edi,ecx + mov ecx,DWORD PTR 24[esp] + ror edx,14 + add ebx,edi + mov edi,DWORD PTR 28[esp] + xor edx,esi + xor ecx,edi + ror edx,5 + and ecx,esi + mov DWORD PTR 20[esp],esi + xor edx,esi + add ebx,DWORD PTR [esp] + xor edi,ecx + ror edx,6 + mov esi,ebp + add ebx,edi + ror esi,9 + mov ecx,ebp + mov edi,DWORD PTR 8[esp] + xor esi,ebp + mov DWORD PTR 4[esp],ebp + xor ebp,edi + ror esi,11 + and eax,ebp + lea edx,DWORD PTR 3329325298[edx*1+ebx] + xor esi,ecx + xor eax,edi + ror esi,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,esi + mov esi,DWORD PTR 96[esp] + xor ebp,edi + mov ecx,DWORD PTR 12[esp] + add eax,DWORD PTR [esi] + add ebp,DWORD PTR 4[esi] + add edi,DWORD PTR 8[esi] + add ecx,DWORD PTR 12[esi] + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebp + mov DWORD PTR 8[esi],edi + mov DWORD PTR 12[esi],ecx + mov DWORD PTR 4[esp],ebp + xor ebp,edi + mov DWORD PTR 8[esp],edi + mov DWORD PTR 12[esp],ecx + mov edi,DWORD PTR 20[esp] + mov ebx,DWORD PTR 24[esp] + mov ecx,DWORD PTR 28[esp] + add edx,DWORD PTR 16[esi] + add edi,DWORD PTR 20[esi] + add ebx,DWORD PTR 24[esi] + add ecx,DWORD PTR 28[esi] + mov DWORD PTR 16[esi],edx + mov DWORD PTR 20[esi],edi + mov DWORD PTR 24[esi],ebx + mov DWORD PTR 28[esi],ecx + mov DWORD PTR 20[esp],edi + mov edi,DWORD PTR 100[esp] + mov DWORD PTR 24[esp],ebx + mov DWORD PTR 28[esp],ecx + cmp edi,DWORD PTR 104[esp] + jb $L010grand_loop + mov esp,DWORD PTR 108[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +ALIGN 32 +$L004shaext: + sub esp,32 + movdqu xmm1,XMMWORD PTR [esi] + lea ebp,DWORD PTR 128[ebp] + movdqu xmm2,XMMWORD PTR 16[esi] + movdqa xmm7,XMMWORD PTR 128[ebp] + pshufd xmm0,xmm1,27 + pshufd xmm1,xmm1,177 + pshufd xmm2,xmm2,27 +DB 102,15,58,15,202,8 + punpcklqdq xmm2,xmm0 + jmp $L011loop_shaext +ALIGN 16 +$L011loop_shaext: + movdqu xmm3,XMMWORD PTR [edi] + movdqu xmm4,XMMWORD PTR 16[edi] + movdqu xmm5,XMMWORD PTR 32[edi] +DB 102,15,56,0,223 + movdqu xmm6,XMMWORD PTR 48[edi] + movdqa XMMWORD PTR 16[esp],xmm2 + movdqa xmm0,XMMWORD PTR [ebp-128] + paddd xmm0,xmm3 +DB 102,15,56,0,231 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + nop + movdqa XMMWORD PTR [esp],xmm1 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR [ebp-112] + paddd xmm0,xmm4 +DB 102,15,56,0,239 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + lea edi,DWORD PTR 64[edi] +DB 15,56,204,220 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR [ebp-96] + paddd xmm0,xmm5 +DB 102,15,56,0,247 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm6 +DB 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 +DB 15,56,204,229 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR [ebp-80] + paddd xmm0,xmm6 +DB 15,56,205,222 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm3 +DB 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 +DB 15,56,204,238 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR [ebp-64] + paddd xmm0,xmm3 +DB 15,56,205,227 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm4 +DB 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 +DB 15,56,204,243 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR [ebp-48] + paddd xmm0,xmm4 +DB 15,56,205,236 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm5 +DB 102,15,58,15,252,4 + nop + paddd xmm6,xmm7 +DB 15,56,204,220 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR [ebp-32] + paddd xmm0,xmm5 +DB 15,56,205,245 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm6 +DB 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 +DB 15,56,204,229 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR [ebp-16] + paddd xmm0,xmm6 +DB 15,56,205,222 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm3 +DB 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 +DB 15,56,204,238 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR [ebp] + paddd xmm0,xmm3 +DB 15,56,205,227 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm4 +DB 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 +DB 15,56,204,243 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR 16[ebp] + paddd xmm0,xmm4 +DB 15,56,205,236 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm5 +DB 102,15,58,15,252,4 + nop + paddd xmm6,xmm7 +DB 15,56,204,220 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR 32[ebp] + paddd xmm0,xmm5 +DB 15,56,205,245 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm6 +DB 102,15,58,15,253,4 + nop + paddd xmm3,xmm7 +DB 15,56,204,229 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR 48[ebp] + paddd xmm0,xmm6 +DB 15,56,205,222 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm3 +DB 102,15,58,15,254,4 + nop + paddd xmm4,xmm7 +DB 15,56,204,238 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR 64[ebp] + paddd xmm0,xmm3 +DB 15,56,205,227 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm4 +DB 102,15,58,15,251,4 + nop + paddd xmm5,xmm7 +DB 15,56,204,243 +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR 80[ebp] + paddd xmm0,xmm4 +DB 15,56,205,236 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + movdqa xmm7,xmm5 +DB 102,15,58,15,252,4 +DB 15,56,203,202 + paddd xmm6,xmm7 + movdqa xmm0,XMMWORD PTR 96[ebp] + paddd xmm0,xmm5 +DB 15,56,203,209 + pshufd xmm0,xmm0,14 +DB 15,56,205,245 + movdqa xmm7,XMMWORD PTR 128[ebp] +DB 15,56,203,202 + movdqa xmm0,XMMWORD PTR 112[ebp] + paddd xmm0,xmm6 + nop +DB 15,56,203,209 + pshufd xmm0,xmm0,14 + cmp eax,edi + nop +DB 15,56,203,202 + paddd xmm2,XMMWORD PTR 16[esp] + paddd xmm1,XMMWORD PTR [esp] + jnz $L011loop_shaext + pshufd xmm2,xmm2,177 + pshufd xmm7,xmm1,27 + pshufd xmm1,xmm1,177 + punpckhqdq xmm1,xmm2 +DB 102,15,58,15,215,8 + mov esp,DWORD PTR 44[esp] + movdqu XMMWORD PTR [esi],xmm1 + movdqu XMMWORD PTR 16[esi],xmm2 + pop edi + pop esi + pop ebx + pop ebp + ret +ALIGN 32 +$L006SSSE3: + lea esp,DWORD PTR [esp-96] + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edi,DWORD PTR 12[esi] + mov DWORD PTR 4[esp],ebx + xor ebx,ecx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],edi + mov edx,DWORD PTR 16[esi] + mov edi,DWORD PTR 20[esi] + mov ecx,DWORD PTR 24[esi] + mov esi,DWORD PTR 28[esi] + mov DWORD PTR 20[esp],edi + mov edi,DWORD PTR 100[esp] + mov DWORD PTR 24[esp],ecx + mov DWORD PTR 28[esp],esi + movdqa xmm7,XMMWORD PTR 256[ebp] + jmp $L012grand_ssse3 +ALIGN 16 +$L012grand_ssse3: + movdqu xmm0,XMMWORD PTR [edi] + movdqu xmm1,XMMWORD PTR 16[edi] + movdqu xmm2,XMMWORD PTR 32[edi] + movdqu xmm3,XMMWORD PTR 48[edi] + add edi,64 +DB 102,15,56,0,199 + mov DWORD PTR 100[esp],edi +DB 102,15,56,0,207 + movdqa xmm4,XMMWORD PTR [ebp] +DB 102,15,56,0,215 + movdqa xmm5,XMMWORD PTR 16[ebp] + paddd xmm4,xmm0 +DB 102,15,56,0,223 + movdqa xmm6,XMMWORD PTR 32[ebp] + paddd xmm5,xmm1 + movdqa xmm7,XMMWORD PTR 48[ebp] + movdqa XMMWORD PTR 32[esp],xmm4 + paddd xmm6,xmm2 + movdqa XMMWORD PTR 48[esp],xmm5 + paddd xmm7,xmm3 + movdqa XMMWORD PTR 64[esp],xmm6 + movdqa XMMWORD PTR 80[esp],xmm7 + jmp $L013ssse3_00_47 +ALIGN 16 +$L013ssse3_00_47: + add ebp,64 + mov ecx,edx + movdqa xmm4,xmm1 + ror edx,14 + mov esi,DWORD PTR 20[esp] + movdqa xmm7,xmm3 + xor edx,ecx + mov edi,DWORD PTR 24[esp] +DB 102,15,58,15,224,4 + xor esi,edi + ror edx,5 + and esi,ecx +DB 102,15,58,15,250,4 + mov DWORD PTR 16[esp],ecx + xor edx,ecx + xor edi,esi + movdqa xmm5,xmm4 + ror edx,6 + mov ecx,eax + movdqa xmm6,xmm4 + add edx,edi + mov edi,DWORD PTR 4[esp] + psrld xmm4,3 + mov esi,eax + ror ecx,9 + paddd xmm0,xmm7 + mov DWORD PTR [esp],eax + xor ecx,eax + psrld xmm6,7 + xor eax,edi + add edx,DWORD PTR 28[esp] + ror ecx,11 + and ebx,eax + pshufd xmm7,xmm3,250 + xor ecx,esi + add edx,DWORD PTR 32[esp] + pslld xmm5,14 + xor ebx,edi + ror ecx,2 + pxor xmm4,xmm6 + add ebx,edx + add edx,DWORD PTR 12[esp] + psrld xmm6,11 + add ebx,ecx + mov ecx,edx + ror edx,14 + pxor xmm4,xmm5 + mov esi,DWORD PTR 16[esp] + xor edx,ecx + pslld xmm5,11 + mov edi,DWORD PTR 20[esp] + xor esi,edi + ror edx,5 + pxor xmm4,xmm6 + and esi,ecx + mov DWORD PTR 12[esp],ecx + movdqa xmm6,xmm7 + xor edx,ecx + xor edi,esi + ror edx,6 + pxor xmm4,xmm5 + mov ecx,ebx + add edx,edi + psrld xmm7,10 + mov edi,DWORD PTR [esp] + mov esi,ebx + ror ecx,9 + paddd xmm0,xmm4 + mov DWORD PTR 28[esp],ebx + xor ecx,ebx + psrlq xmm6,17 + xor ebx,edi + add edx,DWORD PTR 24[esp] + ror ecx,11 + pxor xmm7,xmm6 + and eax,ebx + xor ecx,esi + psrlq xmm6,2 + add edx,DWORD PTR 36[esp] + xor eax,edi + ror ecx,2 + pxor xmm7,xmm6 + add eax,edx + add edx,DWORD PTR 8[esp] + pshufd xmm7,xmm7,128 + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 12[esp] + xor edx,ecx + mov edi,DWORD PTR 16[esp] + xor esi,edi + ror edx,5 + and esi,ecx + psrldq xmm7,8 + mov DWORD PTR 8[esp],ecx + xor edx,ecx + xor edi,esi + paddd xmm0,xmm7 + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 28[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 24[esp],eax + pshufd xmm7,xmm0,80 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 20[esp] + movdqa xmm6,xmm7 + ror ecx,11 + psrld xmm7,10 + and ebx,eax + psrlq xmm6,17 + xor ecx,esi + add edx,DWORD PTR 40[esp] + xor ebx,edi + ror ecx,2 + pxor xmm7,xmm6 + add ebx,edx + add edx,DWORD PTR 4[esp] + psrlq xmm6,2 + add ebx,ecx + mov ecx,edx + ror edx,14 + pxor xmm7,xmm6 + mov esi,DWORD PTR 8[esp] + xor edx,ecx + mov edi,DWORD PTR 12[esp] + pshufd xmm7,xmm7,8 + xor esi,edi + ror edx,5 + movdqa xmm6,XMMWORD PTR [ebp] + and esi,ecx + mov DWORD PTR 4[esp],ecx + pslldq xmm7,8 + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 24[esp] + mov esi,ebx + ror ecx,9 + paddd xmm0,xmm7 + mov DWORD PTR 20[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 16[esp] + paddd xmm6,xmm0 + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 44[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,ecx + movdqa XMMWORD PTR 32[esp],xmm6 + mov ecx,edx + movdqa xmm4,xmm2 + ror edx,14 + mov esi,DWORD PTR 4[esp] + movdqa xmm7,xmm0 + xor edx,ecx + mov edi,DWORD PTR 8[esp] +DB 102,15,58,15,225,4 + xor esi,edi + ror edx,5 + and esi,ecx +DB 102,15,58,15,251,4 + mov DWORD PTR [esp],ecx + xor edx,ecx + xor edi,esi + movdqa xmm5,xmm4 + ror edx,6 + mov ecx,eax + movdqa xmm6,xmm4 + add edx,edi + mov edi,DWORD PTR 20[esp] + psrld xmm4,3 + mov esi,eax + ror ecx,9 + paddd xmm1,xmm7 + mov DWORD PTR 16[esp],eax + xor ecx,eax + psrld xmm6,7 + xor eax,edi + add edx,DWORD PTR 12[esp] + ror ecx,11 + and ebx,eax + pshufd xmm7,xmm0,250 + xor ecx,esi + add edx,DWORD PTR 48[esp] + pslld xmm5,14 + xor ebx,edi + ror ecx,2 + pxor xmm4,xmm6 + add ebx,edx + add edx,DWORD PTR 28[esp] + psrld xmm6,11 + add ebx,ecx + mov ecx,edx + ror edx,14 + pxor xmm4,xmm5 + mov esi,DWORD PTR [esp] + xor edx,ecx + pslld xmm5,11 + mov edi,DWORD PTR 4[esp] + xor esi,edi + ror edx,5 + pxor xmm4,xmm6 + and esi,ecx + mov DWORD PTR 28[esp],ecx + movdqa xmm6,xmm7 + xor edx,ecx + xor edi,esi + ror edx,6 + pxor xmm4,xmm5 + mov ecx,ebx + add edx,edi + psrld xmm7,10 + mov edi,DWORD PTR 16[esp] + mov esi,ebx + ror ecx,9 + paddd xmm1,xmm4 + mov DWORD PTR 12[esp],ebx + xor ecx,ebx + psrlq xmm6,17 + xor ebx,edi + add edx,DWORD PTR 8[esp] + ror ecx,11 + pxor xmm7,xmm6 + and eax,ebx + xor ecx,esi + psrlq xmm6,2 + add edx,DWORD PTR 52[esp] + xor eax,edi + ror ecx,2 + pxor xmm7,xmm6 + add eax,edx + add edx,DWORD PTR 24[esp] + pshufd xmm7,xmm7,128 + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 28[esp] + xor edx,ecx + mov edi,DWORD PTR [esp] + xor esi,edi + ror edx,5 + and esi,ecx + psrldq xmm7,8 + mov DWORD PTR 24[esp],ecx + xor edx,ecx + xor edi,esi + paddd xmm1,xmm7 + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 12[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 8[esp],eax + pshufd xmm7,xmm1,80 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 4[esp] + movdqa xmm6,xmm7 + ror ecx,11 + psrld xmm7,10 + and ebx,eax + psrlq xmm6,17 + xor ecx,esi + add edx,DWORD PTR 56[esp] + xor ebx,edi + ror ecx,2 + pxor xmm7,xmm6 + add ebx,edx + add edx,DWORD PTR 20[esp] + psrlq xmm6,2 + add ebx,ecx + mov ecx,edx + ror edx,14 + pxor xmm7,xmm6 + mov esi,DWORD PTR 24[esp] + xor edx,ecx + mov edi,DWORD PTR 28[esp] + pshufd xmm7,xmm7,8 + xor esi,edi + ror edx,5 + movdqa xmm6,XMMWORD PTR 16[ebp] + and esi,ecx + mov DWORD PTR 20[esp],ecx + pslldq xmm7,8 + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 8[esp] + mov esi,ebx + ror ecx,9 + paddd xmm1,xmm7 + mov DWORD PTR 4[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR [esp] + paddd xmm6,xmm1 + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 60[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,ecx + movdqa XMMWORD PTR 48[esp],xmm6 + mov ecx,edx + movdqa xmm4,xmm3 + ror edx,14 + mov esi,DWORD PTR 20[esp] + movdqa xmm7,xmm1 + xor edx,ecx + mov edi,DWORD PTR 24[esp] +DB 102,15,58,15,226,4 + xor esi,edi + ror edx,5 + and esi,ecx +DB 102,15,58,15,248,4 + mov DWORD PTR 16[esp],ecx + xor edx,ecx + xor edi,esi + movdqa xmm5,xmm4 + ror edx,6 + mov ecx,eax + movdqa xmm6,xmm4 + add edx,edi + mov edi,DWORD PTR 4[esp] + psrld xmm4,3 + mov esi,eax + ror ecx,9 + paddd xmm2,xmm7 + mov DWORD PTR [esp],eax + xor ecx,eax + psrld xmm6,7 + xor eax,edi + add edx,DWORD PTR 28[esp] + ror ecx,11 + and ebx,eax + pshufd xmm7,xmm1,250 + xor ecx,esi + add edx,DWORD PTR 64[esp] + pslld xmm5,14 + xor ebx,edi + ror ecx,2 + pxor xmm4,xmm6 + add ebx,edx + add edx,DWORD PTR 12[esp] + psrld xmm6,11 + add ebx,ecx + mov ecx,edx + ror edx,14 + pxor xmm4,xmm5 + mov esi,DWORD PTR 16[esp] + xor edx,ecx + pslld xmm5,11 + mov edi,DWORD PTR 20[esp] + xor esi,edi + ror edx,5 + pxor xmm4,xmm6 + and esi,ecx + mov DWORD PTR 12[esp],ecx + movdqa xmm6,xmm7 + xor edx,ecx + xor edi,esi + ror edx,6 + pxor xmm4,xmm5 + mov ecx,ebx + add edx,edi + psrld xmm7,10 + mov edi,DWORD PTR [esp] + mov esi,ebx + ror ecx,9 + paddd xmm2,xmm4 + mov DWORD PTR 28[esp],ebx + xor ecx,ebx + psrlq xmm6,17 + xor ebx,edi + add edx,DWORD PTR 24[esp] + ror ecx,11 + pxor xmm7,xmm6 + and eax,ebx + xor ecx,esi + psrlq xmm6,2 + add edx,DWORD PTR 68[esp] + xor eax,edi + ror ecx,2 + pxor xmm7,xmm6 + add eax,edx + add edx,DWORD PTR 8[esp] + pshufd xmm7,xmm7,128 + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 12[esp] + xor edx,ecx + mov edi,DWORD PTR 16[esp] + xor esi,edi + ror edx,5 + and esi,ecx + psrldq xmm7,8 + mov DWORD PTR 8[esp],ecx + xor edx,ecx + xor edi,esi + paddd xmm2,xmm7 + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 28[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 24[esp],eax + pshufd xmm7,xmm2,80 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 20[esp] + movdqa xmm6,xmm7 + ror ecx,11 + psrld xmm7,10 + and ebx,eax + psrlq xmm6,17 + xor ecx,esi + add edx,DWORD PTR 72[esp] + xor ebx,edi + ror ecx,2 + pxor xmm7,xmm6 + add ebx,edx + add edx,DWORD PTR 4[esp] + psrlq xmm6,2 + add ebx,ecx + mov ecx,edx + ror edx,14 + pxor xmm7,xmm6 + mov esi,DWORD PTR 8[esp] + xor edx,ecx + mov edi,DWORD PTR 12[esp] + pshufd xmm7,xmm7,8 + xor esi,edi + ror edx,5 + movdqa xmm6,XMMWORD PTR 32[ebp] + and esi,ecx + mov DWORD PTR 4[esp],ecx + pslldq xmm7,8 + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 24[esp] + mov esi,ebx + ror ecx,9 + paddd xmm2,xmm7 + mov DWORD PTR 20[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 16[esp] + paddd xmm6,xmm2 + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 76[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,ecx + movdqa XMMWORD PTR 64[esp],xmm6 + mov ecx,edx + movdqa xmm4,xmm0 + ror edx,14 + mov esi,DWORD PTR 4[esp] + movdqa xmm7,xmm2 + xor edx,ecx + mov edi,DWORD PTR 8[esp] +DB 102,15,58,15,227,4 + xor esi,edi + ror edx,5 + and esi,ecx +DB 102,15,58,15,249,4 + mov DWORD PTR [esp],ecx + xor edx,ecx + xor edi,esi + movdqa xmm5,xmm4 + ror edx,6 + mov ecx,eax + movdqa xmm6,xmm4 + add edx,edi + mov edi,DWORD PTR 20[esp] + psrld xmm4,3 + mov esi,eax + ror ecx,9 + paddd xmm3,xmm7 + mov DWORD PTR 16[esp],eax + xor ecx,eax + psrld xmm6,7 + xor eax,edi + add edx,DWORD PTR 12[esp] + ror ecx,11 + and ebx,eax + pshufd xmm7,xmm2,250 + xor ecx,esi + add edx,DWORD PTR 80[esp] + pslld xmm5,14 + xor ebx,edi + ror ecx,2 + pxor xmm4,xmm6 + add ebx,edx + add edx,DWORD PTR 28[esp] + psrld xmm6,11 + add ebx,ecx + mov ecx,edx + ror edx,14 + pxor xmm4,xmm5 + mov esi,DWORD PTR [esp] + xor edx,ecx + pslld xmm5,11 + mov edi,DWORD PTR 4[esp] + xor esi,edi + ror edx,5 + pxor xmm4,xmm6 + and esi,ecx + mov DWORD PTR 28[esp],ecx + movdqa xmm6,xmm7 + xor edx,ecx + xor edi,esi + ror edx,6 + pxor xmm4,xmm5 + mov ecx,ebx + add edx,edi + psrld xmm7,10 + mov edi,DWORD PTR 16[esp] + mov esi,ebx + ror ecx,9 + paddd xmm3,xmm4 + mov DWORD PTR 12[esp],ebx + xor ecx,ebx + psrlq xmm6,17 + xor ebx,edi + add edx,DWORD PTR 8[esp] + ror ecx,11 + pxor xmm7,xmm6 + and eax,ebx + xor ecx,esi + psrlq xmm6,2 + add edx,DWORD PTR 84[esp] + xor eax,edi + ror ecx,2 + pxor xmm7,xmm6 + add eax,edx + add edx,DWORD PTR 24[esp] + pshufd xmm7,xmm7,128 + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 28[esp] + xor edx,ecx + mov edi,DWORD PTR [esp] + xor esi,edi + ror edx,5 + and esi,ecx + psrldq xmm7,8 + mov DWORD PTR 24[esp],ecx + xor edx,ecx + xor edi,esi + paddd xmm3,xmm7 + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 12[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 8[esp],eax + pshufd xmm7,xmm3,80 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 4[esp] + movdqa xmm6,xmm7 + ror ecx,11 + psrld xmm7,10 + and ebx,eax + psrlq xmm6,17 + xor ecx,esi + add edx,DWORD PTR 88[esp] + xor ebx,edi + ror ecx,2 + pxor xmm7,xmm6 + add ebx,edx + add edx,DWORD PTR 20[esp] + psrlq xmm6,2 + add ebx,ecx + mov ecx,edx + ror edx,14 + pxor xmm7,xmm6 + mov esi,DWORD PTR 24[esp] + xor edx,ecx + mov edi,DWORD PTR 28[esp] + pshufd xmm7,xmm7,8 + xor esi,edi + ror edx,5 + movdqa xmm6,XMMWORD PTR 48[ebp] + and esi,ecx + mov DWORD PTR 20[esp],ecx + pslldq xmm7,8 + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 8[esp] + mov esi,ebx + ror ecx,9 + paddd xmm3,xmm7 + mov DWORD PTR 4[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR [esp] + paddd xmm6,xmm3 + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 92[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,ecx + movdqa XMMWORD PTR 80[esp],xmm6 + cmp DWORD PTR 64[ebp],66051 + jne $L013ssse3_00_47 + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 20[esp] + xor edx,ecx + mov edi,DWORD PTR 24[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 4[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR [esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 28[esp] + ror ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 32[esp] + xor ebx,edi + ror ecx,2 + add ebx,edx + add edx,DWORD PTR 12[esp] + add ebx,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 16[esp] + xor edx,ecx + mov edi,DWORD PTR 20[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 12[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR [esp] + mov esi,ebx + ror ecx,9 + mov DWORD PTR 28[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 24[esp] + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 36[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 12[esp] + xor edx,ecx + mov edi,DWORD PTR 16[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 28[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 24[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 20[esp] + ror ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 40[esp] + xor ebx,edi + ror ecx,2 + add ebx,edx + add edx,DWORD PTR 4[esp] + add ebx,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 8[esp] + xor edx,ecx + mov edi,DWORD PTR 12[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 4[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 24[esp] + mov esi,ebx + ror ecx,9 + mov DWORD PTR 20[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 16[esp] + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 44[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 4[esp] + xor edx,ecx + mov edi,DWORD PTR 8[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 20[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 16[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 12[esp] + ror ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 48[esp] + xor ebx,edi + ror ecx,2 + add ebx,edx + add edx,DWORD PTR 28[esp] + add ebx,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR [esp] + xor edx,ecx + mov edi,DWORD PTR 4[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 28[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 16[esp] + mov esi,ebx + ror ecx,9 + mov DWORD PTR 12[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 8[esp] + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 52[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 28[esp] + xor edx,ecx + mov edi,DWORD PTR [esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 12[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 8[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 4[esp] + ror ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 56[esp] + xor ebx,edi + ror ecx,2 + add ebx,edx + add edx,DWORD PTR 20[esp] + add ebx,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 24[esp] + xor edx,ecx + mov edi,DWORD PTR 28[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 20[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 8[esp] + mov esi,ebx + ror ecx,9 + mov DWORD PTR 4[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR [esp] + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 60[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 20[esp] + xor edx,ecx + mov edi,DWORD PTR 24[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 4[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR [esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 28[esp] + ror ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 64[esp] + xor ebx,edi + ror ecx,2 + add ebx,edx + add edx,DWORD PTR 12[esp] + add ebx,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 16[esp] + xor edx,ecx + mov edi,DWORD PTR 20[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 12[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR [esp] + mov esi,ebx + ror ecx,9 + mov DWORD PTR 28[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 24[esp] + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 68[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 12[esp] + xor edx,ecx + mov edi,DWORD PTR 16[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 28[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 24[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 20[esp] + ror ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 72[esp] + xor ebx,edi + ror ecx,2 + add ebx,edx + add edx,DWORD PTR 4[esp] + add ebx,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 8[esp] + xor edx,ecx + mov edi,DWORD PTR 12[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 4[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 24[esp] + mov esi,ebx + ror ecx,9 + mov DWORD PTR 20[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 16[esp] + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 76[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 4[esp] + xor edx,ecx + mov edi,DWORD PTR 8[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 20[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 16[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 12[esp] + ror ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 80[esp] + xor ebx,edi + ror ecx,2 + add ebx,edx + add edx,DWORD PTR 28[esp] + add ebx,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR [esp] + xor edx,ecx + mov edi,DWORD PTR 4[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 28[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 16[esp] + mov esi,ebx + ror ecx,9 + mov DWORD PTR 12[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 8[esp] + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 84[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 28[esp] + xor edx,ecx + mov edi,DWORD PTR [esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 12[esp] + mov esi,eax + ror ecx,9 + mov DWORD PTR 8[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 4[esp] + ror ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 88[esp] + xor ebx,edi + ror ecx,2 + add ebx,edx + add edx,DWORD PTR 20[esp] + add ebx,ecx + mov ecx,edx + ror edx,14 + mov esi,DWORD PTR 24[esp] + xor edx,ecx + mov edi,DWORD PTR 28[esp] + xor esi,edi + ror edx,5 + and esi,ecx + mov DWORD PTR 20[esp],ecx + xor edx,ecx + xor edi,esi + ror edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 8[esp] + mov esi,ebx + ror ecx,9 + mov DWORD PTR 4[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR [esp] + ror ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 92[esp] + xor eax,edi + ror ecx,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,ecx + mov esi,DWORD PTR 96[esp] + xor ebx,edi + mov ecx,DWORD PTR 12[esp] + add eax,DWORD PTR [esi] + add ebx,DWORD PTR 4[esi] + add edi,DWORD PTR 8[esi] + add ecx,DWORD PTR 12[esi] + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],edi + mov DWORD PTR 12[esi],ecx + mov DWORD PTR 4[esp],ebx + xor ebx,edi + mov DWORD PTR 8[esp],edi + mov DWORD PTR 12[esp],ecx + mov edi,DWORD PTR 20[esp] + mov ecx,DWORD PTR 24[esp] + add edx,DWORD PTR 16[esi] + add edi,DWORD PTR 20[esi] + add ecx,DWORD PTR 24[esi] + mov DWORD PTR 16[esi],edx + mov DWORD PTR 20[esi],edi + mov DWORD PTR 20[esp],edi + mov edi,DWORD PTR 28[esp] + mov DWORD PTR 24[esi],ecx + add edi,DWORD PTR 28[esi] + mov DWORD PTR 24[esp],ecx + mov DWORD PTR 28[esi],edi + mov DWORD PTR 28[esp],edi + mov edi,DWORD PTR 100[esp] + movdqa xmm7,XMMWORD PTR 64[ebp] + sub ebp,192 + cmp edi,DWORD PTR 104[esp] + jb $L012grand_ssse3 + mov esp,DWORD PTR 108[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +ALIGN 32 +$L005AVX: + and edx,264 + cmp edx,264 + je $L014AVX_BMI + lea esp,DWORD PTR [esp-96] + vzeroall + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edi,DWORD PTR 12[esi] + mov DWORD PTR 4[esp],ebx + xor ebx,ecx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],edi + mov edx,DWORD PTR 16[esi] + mov edi,DWORD PTR 20[esi] + mov ecx,DWORD PTR 24[esi] + mov esi,DWORD PTR 28[esi] + mov DWORD PTR 20[esp],edi + mov edi,DWORD PTR 100[esp] + mov DWORD PTR 24[esp],ecx + mov DWORD PTR 28[esp],esi + vmovdqa xmm7,XMMWORD PTR 256[ebp] + jmp $L015grand_avx +ALIGN 32 +$L015grand_avx: + vmovdqu xmm0,XMMWORD PTR [edi] + vmovdqu xmm1,XMMWORD PTR 16[edi] + vmovdqu xmm2,XMMWORD PTR 32[edi] + vmovdqu xmm3,XMMWORD PTR 48[edi] + add edi,64 + vpshufb xmm0,xmm0,xmm7 + mov DWORD PTR 100[esp],edi + vpshufb xmm1,xmm1,xmm7 + vpshufb xmm2,xmm2,xmm7 + vpaddd xmm4,xmm0,XMMWORD PTR [ebp] + vpshufb xmm3,xmm3,xmm7 + vpaddd xmm5,xmm1,XMMWORD PTR 16[ebp] + vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp] + vpaddd xmm7,xmm3,XMMWORD PTR 48[ebp] + vmovdqa XMMWORD PTR 32[esp],xmm4 + vmovdqa XMMWORD PTR 48[esp],xmm5 + vmovdqa XMMWORD PTR 64[esp],xmm6 + vmovdqa XMMWORD PTR 80[esp],xmm7 + jmp $L016avx_00_47 +ALIGN 16 +$L016avx_00_47: + add ebp,64 + vpalignr xmm4,xmm1,xmm0,4 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 20[esp] + vpalignr xmm7,xmm3,xmm2,4 + xor edx,ecx + mov edi,DWORD PTR 24[esp] + xor esi,edi + vpsrld xmm6,xmm4,7 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + vpaddd xmm0,xmm0,xmm7 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrld xmm7,xmm4,3 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 4[esp] + vpslld xmm5,xmm4,14 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR [esp],eax + vpxor xmm4,xmm7,xmm6 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 28[esp] + vpshufd xmm7,xmm3,250 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpsrld xmm6,xmm6,11 + add edx,DWORD PTR 32[esp] + xor ebx,edi + shrd ecx,ecx,2 + vpxor xmm4,xmm4,xmm5 + add ebx,edx + add edx,DWORD PTR 12[esp] + add ebx,ecx + vpslld xmm5,xmm5,11 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 16[esp] + vpxor xmm4,xmm4,xmm6 + xor edx,ecx + mov edi,DWORD PTR 20[esp] + xor esi,edi + vpsrld xmm6,xmm7,10 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 12[esp],ecx + vpxor xmm4,xmm4,xmm5 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR [esp] + vpaddd xmm0,xmm0,xmm4 + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 28[esp],ebx + vpxor xmm6,xmm6,xmm5 + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 24[esp] + vpsrlq xmm7,xmm7,19 + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + add edx,DWORD PTR 36[esp] + xor eax,edi + shrd ecx,ecx,2 + vpshufd xmm7,xmm6,132 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,ecx + vpsrldq xmm7,xmm7,8 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 12[esp] + vpaddd xmm0,xmm0,xmm7 + xor edx,ecx + mov edi,DWORD PTR 16[esp] + xor esi,edi + vpshufd xmm7,xmm0,80 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + vpsrld xmm6,xmm7,10 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 28[esp] + vpxor xmm6,xmm6,xmm5 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 24[esp],eax + vpsrlq xmm7,xmm7,19 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 20[esp] + vpxor xmm6,xmm6,xmm7 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpshufd xmm7,xmm6,232 + add edx,DWORD PTR 40[esp] + xor ebx,edi + shrd ecx,ecx,2 + vpslldq xmm7,xmm7,8 + add ebx,edx + add edx,DWORD PTR 4[esp] + add ebx,ecx + vpaddd xmm0,xmm0,xmm7 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 8[esp] + vpaddd xmm6,xmm0,XMMWORD PTR [ebp] + xor edx,ecx + mov edi,DWORD PTR 12[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 4[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 24[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 20[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 16[esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 44[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,ecx + vmovdqa XMMWORD PTR 32[esp],xmm6 + vpalignr xmm4,xmm2,xmm1,4 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 4[esp] + vpalignr xmm7,xmm0,xmm3,4 + xor edx,ecx + mov edi,DWORD PTR 8[esp] + xor esi,edi + vpsrld xmm6,xmm4,7 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + vpaddd xmm1,xmm1,xmm7 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrld xmm7,xmm4,3 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 20[esp] + vpslld xmm5,xmm4,14 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 16[esp],eax + vpxor xmm4,xmm7,xmm6 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 12[esp] + vpshufd xmm7,xmm0,250 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpsrld xmm6,xmm6,11 + add edx,DWORD PTR 48[esp] + xor ebx,edi + shrd ecx,ecx,2 + vpxor xmm4,xmm4,xmm5 + add ebx,edx + add edx,DWORD PTR 28[esp] + add ebx,ecx + vpslld xmm5,xmm5,11 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR [esp] + vpxor xmm4,xmm4,xmm6 + xor edx,ecx + mov edi,DWORD PTR 4[esp] + xor esi,edi + vpsrld xmm6,xmm7,10 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 28[esp],ecx + vpxor xmm4,xmm4,xmm5 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 16[esp] + vpaddd xmm1,xmm1,xmm4 + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 12[esp],ebx + vpxor xmm6,xmm6,xmm5 + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 8[esp] + vpsrlq xmm7,xmm7,19 + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + add edx,DWORD PTR 52[esp] + xor eax,edi + shrd ecx,ecx,2 + vpshufd xmm7,xmm6,132 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,ecx + vpsrldq xmm7,xmm7,8 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 28[esp] + vpaddd xmm1,xmm1,xmm7 + xor edx,ecx + mov edi,DWORD PTR [esp] + xor esi,edi + vpshufd xmm7,xmm1,80 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + vpsrld xmm6,xmm7,10 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 12[esp] + vpxor xmm6,xmm6,xmm5 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 8[esp],eax + vpsrlq xmm7,xmm7,19 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 4[esp] + vpxor xmm6,xmm6,xmm7 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpshufd xmm7,xmm6,232 + add edx,DWORD PTR 56[esp] + xor ebx,edi + shrd ecx,ecx,2 + vpslldq xmm7,xmm7,8 + add ebx,edx + add edx,DWORD PTR 20[esp] + add ebx,ecx + vpaddd xmm1,xmm1,xmm7 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 24[esp] + vpaddd xmm6,xmm1,XMMWORD PTR 16[ebp] + xor edx,ecx + mov edi,DWORD PTR 28[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 20[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 8[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 4[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR [esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 60[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,ecx + vmovdqa XMMWORD PTR 48[esp],xmm6 + vpalignr xmm4,xmm3,xmm2,4 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 20[esp] + vpalignr xmm7,xmm1,xmm0,4 + xor edx,ecx + mov edi,DWORD PTR 24[esp] + xor esi,edi + vpsrld xmm6,xmm4,7 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + vpaddd xmm2,xmm2,xmm7 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrld xmm7,xmm4,3 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 4[esp] + vpslld xmm5,xmm4,14 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR [esp],eax + vpxor xmm4,xmm7,xmm6 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 28[esp] + vpshufd xmm7,xmm1,250 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpsrld xmm6,xmm6,11 + add edx,DWORD PTR 64[esp] + xor ebx,edi + shrd ecx,ecx,2 + vpxor xmm4,xmm4,xmm5 + add ebx,edx + add edx,DWORD PTR 12[esp] + add ebx,ecx + vpslld xmm5,xmm5,11 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 16[esp] + vpxor xmm4,xmm4,xmm6 + xor edx,ecx + mov edi,DWORD PTR 20[esp] + xor esi,edi + vpsrld xmm6,xmm7,10 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 12[esp],ecx + vpxor xmm4,xmm4,xmm5 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR [esp] + vpaddd xmm2,xmm2,xmm4 + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 28[esp],ebx + vpxor xmm6,xmm6,xmm5 + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 24[esp] + vpsrlq xmm7,xmm7,19 + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + add edx,DWORD PTR 68[esp] + xor eax,edi + shrd ecx,ecx,2 + vpshufd xmm7,xmm6,132 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,ecx + vpsrldq xmm7,xmm7,8 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 12[esp] + vpaddd xmm2,xmm2,xmm7 + xor edx,ecx + mov edi,DWORD PTR 16[esp] + xor esi,edi + vpshufd xmm7,xmm2,80 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + vpsrld xmm6,xmm7,10 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 28[esp] + vpxor xmm6,xmm6,xmm5 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 24[esp],eax + vpsrlq xmm7,xmm7,19 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 20[esp] + vpxor xmm6,xmm6,xmm7 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpshufd xmm7,xmm6,232 + add edx,DWORD PTR 72[esp] + xor ebx,edi + shrd ecx,ecx,2 + vpslldq xmm7,xmm7,8 + add ebx,edx + add edx,DWORD PTR 4[esp] + add ebx,ecx + vpaddd xmm2,xmm2,xmm7 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 8[esp] + vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp] + xor edx,ecx + mov edi,DWORD PTR 12[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 4[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 24[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 20[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 16[esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 76[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,ecx + vmovdqa XMMWORD PTR 64[esp],xmm6 + vpalignr xmm4,xmm0,xmm3,4 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 4[esp] + vpalignr xmm7,xmm2,xmm1,4 + xor edx,ecx + mov edi,DWORD PTR 8[esp] + xor esi,edi + vpsrld xmm6,xmm4,7 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + vpaddd xmm3,xmm3,xmm7 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrld xmm7,xmm4,3 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 20[esp] + vpslld xmm5,xmm4,14 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 16[esp],eax + vpxor xmm4,xmm7,xmm6 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 12[esp] + vpshufd xmm7,xmm2,250 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpsrld xmm6,xmm6,11 + add edx,DWORD PTR 80[esp] + xor ebx,edi + shrd ecx,ecx,2 + vpxor xmm4,xmm4,xmm5 + add ebx,edx + add edx,DWORD PTR 28[esp] + add ebx,ecx + vpslld xmm5,xmm5,11 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR [esp] + vpxor xmm4,xmm4,xmm6 + xor edx,ecx + mov edi,DWORD PTR 4[esp] + xor esi,edi + vpsrld xmm6,xmm7,10 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 28[esp],ecx + vpxor xmm4,xmm4,xmm5 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 16[esp] + vpaddd xmm3,xmm3,xmm4 + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 12[esp],ebx + vpxor xmm6,xmm6,xmm5 + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 8[esp] + vpsrlq xmm7,xmm7,19 + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + add edx,DWORD PTR 84[esp] + xor eax,edi + shrd ecx,ecx,2 + vpshufd xmm7,xmm6,132 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,ecx + vpsrldq xmm7,xmm7,8 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 28[esp] + vpaddd xmm3,xmm3,xmm7 + xor edx,ecx + mov edi,DWORD PTR [esp] + xor esi,edi + vpshufd xmm7,xmm3,80 + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + vpsrld xmm6,xmm7,10 + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + vpsrlq xmm5,xmm7,17 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 12[esp] + vpxor xmm6,xmm6,xmm5 + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 8[esp],eax + vpsrlq xmm7,xmm7,19 + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 4[esp] + vpxor xmm6,xmm6,xmm7 + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + vpshufd xmm7,xmm6,232 + add edx,DWORD PTR 88[esp] + xor ebx,edi + shrd ecx,ecx,2 + vpslldq xmm7,xmm7,8 + add ebx,edx + add edx,DWORD PTR 20[esp] + add ebx,ecx + vpaddd xmm3,xmm3,xmm7 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 24[esp] + vpaddd xmm6,xmm3,XMMWORD PTR 48[ebp] + xor edx,ecx + mov edi,DWORD PTR 28[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 20[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 8[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 4[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR [esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 92[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,ecx + vmovdqa XMMWORD PTR 80[esp],xmm6 + cmp DWORD PTR 64[ebp],66051 + jne $L016avx_00_47 + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 20[esp] + xor edx,ecx + mov edi,DWORD PTR 24[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 4[esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR [esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 28[esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 32[esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD PTR 12[esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 16[esp] + xor edx,ecx + mov edi,DWORD PTR 20[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 12[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR [esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 28[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 24[esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 36[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 12[esp] + xor edx,ecx + mov edi,DWORD PTR 16[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 28[esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 24[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 20[esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 40[esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD PTR 4[esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 8[esp] + xor edx,ecx + mov edi,DWORD PTR 12[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 4[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 24[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 20[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 16[esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 44[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 4[esp] + xor edx,ecx + mov edi,DWORD PTR 8[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 20[esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 16[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 12[esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 48[esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD PTR 28[esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR [esp] + xor edx,ecx + mov edi,DWORD PTR 4[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 28[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 16[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 12[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 8[esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 52[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 28[esp] + xor edx,ecx + mov edi,DWORD PTR [esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 12[esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 8[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 4[esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 56[esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD PTR 20[esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 24[esp] + xor edx,ecx + mov edi,DWORD PTR 28[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 20[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 8[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 4[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR [esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 60[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 20[esp] + xor edx,ecx + mov edi,DWORD PTR 24[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 16[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 4[esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR [esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 28[esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 64[esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD PTR 12[esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 16[esp] + xor edx,ecx + mov edi,DWORD PTR 20[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 12[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR [esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 28[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 24[esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 68[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR 8[esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 12[esp] + xor edx,ecx + mov edi,DWORD PTR 16[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 8[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 28[esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 24[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 20[esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 72[esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD PTR 4[esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 8[esp] + xor edx,ecx + mov edi,DWORD PTR 12[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 4[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 24[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 20[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 16[esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 76[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR [esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 4[esp] + xor edx,ecx + mov edi,DWORD PTR 8[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR [esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 20[esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 16[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 12[esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 80[esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD PTR 28[esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR [esp] + xor edx,ecx + mov edi,DWORD PTR 4[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 28[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 16[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 12[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR 8[esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 84[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR 24[esp] + add eax,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 28[esp] + xor edx,ecx + mov edi,DWORD PTR [esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 24[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,eax + add edx,edi + mov edi,DWORD PTR 12[esp] + mov esi,eax + shrd ecx,ecx,9 + mov DWORD PTR 8[esp],eax + xor ecx,eax + xor eax,edi + add edx,DWORD PTR 4[esp] + shrd ecx,ecx,11 + and ebx,eax + xor ecx,esi + add edx,DWORD PTR 88[esp] + xor ebx,edi + shrd ecx,ecx,2 + add ebx,edx + add edx,DWORD PTR 20[esp] + add ebx,ecx + mov ecx,edx + shrd edx,edx,14 + mov esi,DWORD PTR 24[esp] + xor edx,ecx + mov edi,DWORD PTR 28[esp] + xor esi,edi + shrd edx,edx,5 + and esi,ecx + mov DWORD PTR 20[esp],ecx + xor edx,ecx + xor edi,esi + shrd edx,edx,6 + mov ecx,ebx + add edx,edi + mov edi,DWORD PTR 8[esp] + mov esi,ebx + shrd ecx,ecx,9 + mov DWORD PTR 4[esp],ebx + xor ecx,ebx + xor ebx,edi + add edx,DWORD PTR [esp] + shrd ecx,ecx,11 + and eax,ebx + xor ecx,esi + add edx,DWORD PTR 92[esp] + xor eax,edi + shrd ecx,ecx,2 + add eax,edx + add edx,DWORD PTR 16[esp] + add eax,ecx + mov esi,DWORD PTR 96[esp] + xor ebx,edi + mov ecx,DWORD PTR 12[esp] + add eax,DWORD PTR [esi] + add ebx,DWORD PTR 4[esi] + add edi,DWORD PTR 8[esi] + add ecx,DWORD PTR 12[esi] + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],edi + mov DWORD PTR 12[esi],ecx + mov DWORD PTR 4[esp],ebx + xor ebx,edi + mov DWORD PTR 8[esp],edi + mov DWORD PTR 12[esp],ecx + mov edi,DWORD PTR 20[esp] + mov ecx,DWORD PTR 24[esp] + add edx,DWORD PTR 16[esi] + add edi,DWORD PTR 20[esi] + add ecx,DWORD PTR 24[esi] + mov DWORD PTR 16[esi],edx + mov DWORD PTR 20[esi],edi + mov DWORD PTR 20[esp],edi + mov edi,DWORD PTR 28[esp] + mov DWORD PTR 24[esi],ecx + add edi,DWORD PTR 28[esi] + mov DWORD PTR 24[esp],ecx + mov DWORD PTR 28[esi],edi + mov DWORD PTR 28[esp],edi + mov edi,DWORD PTR 100[esp] + vmovdqa xmm7,XMMWORD PTR 64[ebp] + sub ebp,192 + cmp edi,DWORD PTR 104[esp] + jb $L015grand_avx + mov esp,DWORD PTR 108[esp] + vzeroall + pop edi + pop esi + pop ebx + pop ebp + ret +ALIGN 32 +$L014AVX_BMI: + lea esp,DWORD PTR [esp-96] + vzeroall + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edi,DWORD PTR 12[esi] + mov DWORD PTR 4[esp],ebx + xor ebx,ecx + mov DWORD PTR 8[esp],ecx + mov DWORD PTR 12[esp],edi + mov edx,DWORD PTR 16[esi] + mov edi,DWORD PTR 20[esi] + mov ecx,DWORD PTR 24[esi] + mov esi,DWORD PTR 28[esi] + mov DWORD PTR 20[esp],edi + mov edi,DWORD PTR 100[esp] + mov DWORD PTR 24[esp],ecx + mov DWORD PTR 28[esp],esi + vmovdqa xmm7,XMMWORD PTR 256[ebp] + jmp $L017grand_avx_bmi +ALIGN 32 +$L017grand_avx_bmi: + vmovdqu xmm0,XMMWORD PTR [edi] + vmovdqu xmm1,XMMWORD PTR 16[edi] + vmovdqu xmm2,XMMWORD PTR 32[edi] + vmovdqu xmm3,XMMWORD PTR 48[edi] + add edi,64 + vpshufb xmm0,xmm0,xmm7 + mov DWORD PTR 100[esp],edi + vpshufb xmm1,xmm1,xmm7 + vpshufb xmm2,xmm2,xmm7 + vpaddd xmm4,xmm0,XMMWORD PTR [ebp] + vpshufb xmm3,xmm3,xmm7 + vpaddd xmm5,xmm1,XMMWORD PTR 16[ebp] + vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp] + vpaddd xmm7,xmm3,XMMWORD PTR 48[ebp] + vmovdqa XMMWORD PTR 32[esp],xmm4 + vmovdqa XMMWORD PTR 48[esp],xmm5 + vmovdqa XMMWORD PTR 64[esp],xmm6 + vmovdqa XMMWORD PTR 80[esp],xmm7 + jmp $L018avx_bmi_00_47 +ALIGN 16 +$L018avx_bmi_00_47: + add ebp,64 + vpalignr xmm4,xmm1,xmm0,4 + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 16[esp],edx + vpalignr xmm7,xmm3,xmm2,4 + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 24[esp] + vpsrld xmm6,xmm4,7 + xor ecx,edi + and edx,DWORD PTR 20[esp] + mov DWORD PTR [esp],eax + vpaddd xmm0,xmm0,xmm7 + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + vpsrld xmm7,xmm4,3 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + vpslld xmm5,xmm4,14 + mov edi,DWORD PTR 4[esp] + xor ecx,esi + xor eax,edi + vpxor xmm4,xmm7,xmm6 + add edx,DWORD PTR 28[esp] + and ebx,eax + add edx,DWORD PTR 32[esp] + vpshufd xmm7,xmm3,250 + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 12[esp] + vpsrld xmm6,xmm6,11 + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + vpxor xmm4,xmm4,xmm5 + mov DWORD PTR 12[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpslld xmm5,xmm5,11 + andn esi,edx,DWORD PTR 20[esp] + xor ecx,edi + and edx,DWORD PTR 16[esp] + vpxor xmm4,xmm4,xmm6 + mov DWORD PTR 28[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + vpsrld xmm6,xmm7,10 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + vpxor xmm4,xmm4,xmm5 + mov edi,DWORD PTR [esp] + xor ecx,esi + xor ebx,edi + vpsrlq xmm5,xmm7,17 + add edx,DWORD PTR 24[esp] + and eax,ebx + add edx,DWORD PTR 36[esp] + vpaddd xmm0,xmm0,xmm4 + xor eax,edi + add ecx,edx + add edx,DWORD PTR 8[esp] + vpxor xmm6,xmm6,xmm5 + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + vpsrlq xmm7,xmm7,19 + mov DWORD PTR 8[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + andn esi,edx,DWORD PTR 16[esp] + xor ecx,edi + and edx,DWORD PTR 12[esp] + vpshufd xmm7,xmm6,132 + mov DWORD PTR 24[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + vpsrldq xmm7,xmm7,8 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + vpaddd xmm0,xmm0,xmm7 + mov edi,DWORD PTR 28[esp] + xor ecx,esi + xor eax,edi + vpshufd xmm7,xmm0,80 + add edx,DWORD PTR 20[esp] + and ebx,eax + add edx,DWORD PTR 40[esp] + vpsrld xmm6,xmm7,10 + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 4[esp] + vpsrlq xmm5,xmm7,17 + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + vpxor xmm6,xmm6,xmm5 + mov DWORD PTR 4[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpsrlq xmm7,xmm7,19 + andn esi,edx,DWORD PTR 12[esp] + xor ecx,edi + and edx,DWORD PTR 8[esp] + vpxor xmm6,xmm6,xmm7 + mov DWORD PTR 20[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + vpshufd xmm7,xmm6,232 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + vpslldq xmm7,xmm7,8 + mov edi,DWORD PTR 24[esp] + xor ecx,esi + xor ebx,edi + vpaddd xmm0,xmm0,xmm7 + add edx,DWORD PTR 16[esp] + and eax,ebx + add edx,DWORD PTR 44[esp] + vpaddd xmm6,xmm0,XMMWORD PTR [ebp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR [esp] + lea eax,DWORD PTR [ecx*1+eax] + vmovdqa XMMWORD PTR 32[esp],xmm6 + vpalignr xmm4,xmm2,xmm1,4 + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR [esp],edx + vpalignr xmm7,xmm0,xmm3,4 + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 8[esp] + vpsrld xmm6,xmm4,7 + xor ecx,edi + and edx,DWORD PTR 4[esp] + mov DWORD PTR 16[esp],eax + vpaddd xmm1,xmm1,xmm7 + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + vpsrld xmm7,xmm4,3 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + vpslld xmm5,xmm4,14 + mov edi,DWORD PTR 20[esp] + xor ecx,esi + xor eax,edi + vpxor xmm4,xmm7,xmm6 + add edx,DWORD PTR 12[esp] + and ebx,eax + add edx,DWORD PTR 48[esp] + vpshufd xmm7,xmm0,250 + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 28[esp] + vpsrld xmm6,xmm6,11 + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + vpxor xmm4,xmm4,xmm5 + mov DWORD PTR 28[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpslld xmm5,xmm5,11 + andn esi,edx,DWORD PTR 4[esp] + xor ecx,edi + and edx,DWORD PTR [esp] + vpxor xmm4,xmm4,xmm6 + mov DWORD PTR 12[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + vpsrld xmm6,xmm7,10 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + vpxor xmm4,xmm4,xmm5 + mov edi,DWORD PTR 16[esp] + xor ecx,esi + xor ebx,edi + vpsrlq xmm5,xmm7,17 + add edx,DWORD PTR 8[esp] + and eax,ebx + add edx,DWORD PTR 52[esp] + vpaddd xmm1,xmm1,xmm4 + xor eax,edi + add ecx,edx + add edx,DWORD PTR 24[esp] + vpxor xmm6,xmm6,xmm5 + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + vpsrlq xmm7,xmm7,19 + mov DWORD PTR 24[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + andn esi,edx,DWORD PTR [esp] + xor ecx,edi + and edx,DWORD PTR 28[esp] + vpshufd xmm7,xmm6,132 + mov DWORD PTR 8[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + vpsrldq xmm7,xmm7,8 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + vpaddd xmm1,xmm1,xmm7 + mov edi,DWORD PTR 12[esp] + xor ecx,esi + xor eax,edi + vpshufd xmm7,xmm1,80 + add edx,DWORD PTR 4[esp] + and ebx,eax + add edx,DWORD PTR 56[esp] + vpsrld xmm6,xmm7,10 + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 20[esp] + vpsrlq xmm5,xmm7,17 + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + vpxor xmm6,xmm6,xmm5 + mov DWORD PTR 20[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpsrlq xmm7,xmm7,19 + andn esi,edx,DWORD PTR 28[esp] + xor ecx,edi + and edx,DWORD PTR 24[esp] + vpxor xmm6,xmm6,xmm7 + mov DWORD PTR 4[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + vpshufd xmm7,xmm6,232 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + vpslldq xmm7,xmm7,8 + mov edi,DWORD PTR 8[esp] + xor ecx,esi + xor ebx,edi + vpaddd xmm1,xmm1,xmm7 + add edx,DWORD PTR [esp] + and eax,ebx + add edx,DWORD PTR 60[esp] + vpaddd xmm6,xmm1,XMMWORD PTR 16[ebp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR 16[esp] + lea eax,DWORD PTR [ecx*1+eax] + vmovdqa XMMWORD PTR 48[esp],xmm6 + vpalignr xmm4,xmm3,xmm2,4 + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 16[esp],edx + vpalignr xmm7,xmm1,xmm0,4 + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 24[esp] + vpsrld xmm6,xmm4,7 + xor ecx,edi + and edx,DWORD PTR 20[esp] + mov DWORD PTR [esp],eax + vpaddd xmm2,xmm2,xmm7 + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + vpsrld xmm7,xmm4,3 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + vpslld xmm5,xmm4,14 + mov edi,DWORD PTR 4[esp] + xor ecx,esi + xor eax,edi + vpxor xmm4,xmm7,xmm6 + add edx,DWORD PTR 28[esp] + and ebx,eax + add edx,DWORD PTR 64[esp] + vpshufd xmm7,xmm1,250 + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 12[esp] + vpsrld xmm6,xmm6,11 + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + vpxor xmm4,xmm4,xmm5 + mov DWORD PTR 12[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpslld xmm5,xmm5,11 + andn esi,edx,DWORD PTR 20[esp] + xor ecx,edi + and edx,DWORD PTR 16[esp] + vpxor xmm4,xmm4,xmm6 + mov DWORD PTR 28[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + vpsrld xmm6,xmm7,10 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + vpxor xmm4,xmm4,xmm5 + mov edi,DWORD PTR [esp] + xor ecx,esi + xor ebx,edi + vpsrlq xmm5,xmm7,17 + add edx,DWORD PTR 24[esp] + and eax,ebx + add edx,DWORD PTR 68[esp] + vpaddd xmm2,xmm2,xmm4 + xor eax,edi + add ecx,edx + add edx,DWORD PTR 8[esp] + vpxor xmm6,xmm6,xmm5 + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + vpsrlq xmm7,xmm7,19 + mov DWORD PTR 8[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + andn esi,edx,DWORD PTR 16[esp] + xor ecx,edi + and edx,DWORD PTR 12[esp] + vpshufd xmm7,xmm6,132 + mov DWORD PTR 24[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + vpsrldq xmm7,xmm7,8 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + vpaddd xmm2,xmm2,xmm7 + mov edi,DWORD PTR 28[esp] + xor ecx,esi + xor eax,edi + vpshufd xmm7,xmm2,80 + add edx,DWORD PTR 20[esp] + and ebx,eax + add edx,DWORD PTR 72[esp] + vpsrld xmm6,xmm7,10 + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 4[esp] + vpsrlq xmm5,xmm7,17 + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + vpxor xmm6,xmm6,xmm5 + mov DWORD PTR 4[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpsrlq xmm7,xmm7,19 + andn esi,edx,DWORD PTR 12[esp] + xor ecx,edi + and edx,DWORD PTR 8[esp] + vpxor xmm6,xmm6,xmm7 + mov DWORD PTR 20[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + vpshufd xmm7,xmm6,232 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + vpslldq xmm7,xmm7,8 + mov edi,DWORD PTR 24[esp] + xor ecx,esi + xor ebx,edi + vpaddd xmm2,xmm2,xmm7 + add edx,DWORD PTR 16[esp] + and eax,ebx + add edx,DWORD PTR 76[esp] + vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR [esp] + lea eax,DWORD PTR [ecx*1+eax] + vmovdqa XMMWORD PTR 64[esp],xmm6 + vpalignr xmm4,xmm0,xmm3,4 + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR [esp],edx + vpalignr xmm7,xmm2,xmm1,4 + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 8[esp] + vpsrld xmm6,xmm4,7 + xor ecx,edi + and edx,DWORD PTR 4[esp] + mov DWORD PTR 16[esp],eax + vpaddd xmm3,xmm3,xmm7 + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + vpsrld xmm7,xmm4,3 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + vpslld xmm5,xmm4,14 + mov edi,DWORD PTR 20[esp] + xor ecx,esi + xor eax,edi + vpxor xmm4,xmm7,xmm6 + add edx,DWORD PTR 12[esp] + and ebx,eax + add edx,DWORD PTR 80[esp] + vpshufd xmm7,xmm2,250 + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 28[esp] + vpsrld xmm6,xmm6,11 + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + vpxor xmm4,xmm4,xmm5 + mov DWORD PTR 28[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpslld xmm5,xmm5,11 + andn esi,edx,DWORD PTR 4[esp] + xor ecx,edi + and edx,DWORD PTR [esp] + vpxor xmm4,xmm4,xmm6 + mov DWORD PTR 12[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + vpsrld xmm6,xmm7,10 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + vpxor xmm4,xmm4,xmm5 + mov edi,DWORD PTR 16[esp] + xor ecx,esi + xor ebx,edi + vpsrlq xmm5,xmm7,17 + add edx,DWORD PTR 8[esp] + and eax,ebx + add edx,DWORD PTR 84[esp] + vpaddd xmm3,xmm3,xmm4 + xor eax,edi + add ecx,edx + add edx,DWORD PTR 24[esp] + vpxor xmm6,xmm6,xmm5 + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + vpsrlq xmm7,xmm7,19 + mov DWORD PTR 24[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpxor xmm6,xmm6,xmm7 + andn esi,edx,DWORD PTR [esp] + xor ecx,edi + and edx,DWORD PTR 28[esp] + vpshufd xmm7,xmm6,132 + mov DWORD PTR 8[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + vpsrldq xmm7,xmm7,8 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + vpaddd xmm3,xmm3,xmm7 + mov edi,DWORD PTR 12[esp] + xor ecx,esi + xor eax,edi + vpshufd xmm7,xmm3,80 + add edx,DWORD PTR 4[esp] + and ebx,eax + add edx,DWORD PTR 88[esp] + vpsrld xmm6,xmm7,10 + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 20[esp] + vpsrlq xmm5,xmm7,17 + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + vpxor xmm6,xmm6,xmm5 + mov DWORD PTR 20[esp],edx + rorx edi,edx,25 + xor ecx,esi + vpsrlq xmm7,xmm7,19 + andn esi,edx,DWORD PTR 28[esp] + xor ecx,edi + and edx,DWORD PTR 24[esp] + vpxor xmm6,xmm6,xmm7 + mov DWORD PTR 4[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + vpshufd xmm7,xmm6,232 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + vpslldq xmm7,xmm7,8 + mov edi,DWORD PTR 8[esp] + xor ecx,esi + xor ebx,edi + vpaddd xmm3,xmm3,xmm7 + add edx,DWORD PTR [esp] + and eax,ebx + add edx,DWORD PTR 92[esp] + vpaddd xmm6,xmm3,XMMWORD PTR 48[ebp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR 16[esp] + lea eax,DWORD PTR [ecx*1+eax] + vmovdqa XMMWORD PTR 80[esp],xmm6 + cmp DWORD PTR 64[ebp],66051 + jne $L018avx_bmi_00_47 + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 16[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 24[esp] + xor ecx,edi + and edx,DWORD PTR 20[esp] + mov DWORD PTR [esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + mov edi,DWORD PTR 4[esp] + xor ecx,esi + xor eax,edi + add edx,DWORD PTR 28[esp] + and ebx,eax + add edx,DWORD PTR 32[esp] + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 12[esp] + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 12[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 20[esp] + xor ecx,edi + and edx,DWORD PTR 16[esp] + mov DWORD PTR 28[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + mov edi,DWORD PTR [esp] + xor ecx,esi + xor ebx,edi + add edx,DWORD PTR 24[esp] + and eax,ebx + add edx,DWORD PTR 36[esp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR 8[esp] + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 8[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 16[esp] + xor ecx,edi + and edx,DWORD PTR 12[esp] + mov DWORD PTR 24[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + mov edi,DWORD PTR 28[esp] + xor ecx,esi + xor eax,edi + add edx,DWORD PTR 20[esp] + and ebx,eax + add edx,DWORD PTR 40[esp] + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 4[esp] + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 4[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 12[esp] + xor ecx,edi + and edx,DWORD PTR 8[esp] + mov DWORD PTR 20[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + mov edi,DWORD PTR 24[esp] + xor ecx,esi + xor ebx,edi + add edx,DWORD PTR 16[esp] + and eax,ebx + add edx,DWORD PTR 44[esp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR [esp] + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR [esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 8[esp] + xor ecx,edi + and edx,DWORD PTR 4[esp] + mov DWORD PTR 16[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + mov edi,DWORD PTR 20[esp] + xor ecx,esi + xor eax,edi + add edx,DWORD PTR 12[esp] + and ebx,eax + add edx,DWORD PTR 48[esp] + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 28[esp] + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 28[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 4[esp] + xor ecx,edi + and edx,DWORD PTR [esp] + mov DWORD PTR 12[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + mov edi,DWORD PTR 16[esp] + xor ecx,esi + xor ebx,edi + add edx,DWORD PTR 8[esp] + and eax,ebx + add edx,DWORD PTR 52[esp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR 24[esp] + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 24[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR [esp] + xor ecx,edi + and edx,DWORD PTR 28[esp] + mov DWORD PTR 8[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + mov edi,DWORD PTR 12[esp] + xor ecx,esi + xor eax,edi + add edx,DWORD PTR 4[esp] + and ebx,eax + add edx,DWORD PTR 56[esp] + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 20[esp] + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 20[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 28[esp] + xor ecx,edi + and edx,DWORD PTR 24[esp] + mov DWORD PTR 4[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + mov edi,DWORD PTR 8[esp] + xor ecx,esi + xor ebx,edi + add edx,DWORD PTR [esp] + and eax,ebx + add edx,DWORD PTR 60[esp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR 16[esp] + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 16[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 24[esp] + xor ecx,edi + and edx,DWORD PTR 20[esp] + mov DWORD PTR [esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + mov edi,DWORD PTR 4[esp] + xor ecx,esi + xor eax,edi + add edx,DWORD PTR 28[esp] + and ebx,eax + add edx,DWORD PTR 64[esp] + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 12[esp] + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 12[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 20[esp] + xor ecx,edi + and edx,DWORD PTR 16[esp] + mov DWORD PTR 28[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + mov edi,DWORD PTR [esp] + xor ecx,esi + xor ebx,edi + add edx,DWORD PTR 24[esp] + and eax,ebx + add edx,DWORD PTR 68[esp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR 8[esp] + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 8[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 16[esp] + xor ecx,edi + and edx,DWORD PTR 12[esp] + mov DWORD PTR 24[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + mov edi,DWORD PTR 28[esp] + xor ecx,esi + xor eax,edi + add edx,DWORD PTR 20[esp] + and ebx,eax + add edx,DWORD PTR 72[esp] + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 4[esp] + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 4[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 12[esp] + xor ecx,edi + and edx,DWORD PTR 8[esp] + mov DWORD PTR 20[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + mov edi,DWORD PTR 24[esp] + xor ecx,esi + xor ebx,edi + add edx,DWORD PTR 16[esp] + and eax,ebx + add edx,DWORD PTR 76[esp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR [esp] + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR [esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 8[esp] + xor ecx,edi + and edx,DWORD PTR 4[esp] + mov DWORD PTR 16[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + mov edi,DWORD PTR 20[esp] + xor ecx,esi + xor eax,edi + add edx,DWORD PTR 12[esp] + and ebx,eax + add edx,DWORD PTR 80[esp] + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 28[esp] + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 28[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 4[esp] + xor ecx,edi + and edx,DWORD PTR [esp] + mov DWORD PTR 12[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + mov edi,DWORD PTR 16[esp] + xor ecx,esi + xor ebx,edi + add edx,DWORD PTR 8[esp] + and eax,ebx + add edx,DWORD PTR 84[esp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR 24[esp] + lea eax,DWORD PTR [ecx*1+eax] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 24[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR [esp] + xor ecx,edi + and edx,DWORD PTR 28[esp] + mov DWORD PTR 8[esp],eax + or edx,esi + rorx edi,eax,2 + rorx esi,eax,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,eax,22 + xor esi,edi + mov edi,DWORD PTR 12[esp] + xor ecx,esi + xor eax,edi + add edx,DWORD PTR 4[esp] + and ebx,eax + add edx,DWORD PTR 88[esp] + xor ebx,edi + add ecx,edx + add edx,DWORD PTR 20[esp] + lea ebx,DWORD PTR [ecx*1+ebx] + rorx ecx,edx,6 + rorx esi,edx,11 + mov DWORD PTR 20[esp],edx + rorx edi,edx,25 + xor ecx,esi + andn esi,edx,DWORD PTR 28[esp] + xor ecx,edi + and edx,DWORD PTR 24[esp] + mov DWORD PTR 4[esp],ebx + or edx,esi + rorx edi,ebx,2 + rorx esi,ebx,13 + lea edx,DWORD PTR [ecx*1+edx] + rorx ecx,ebx,22 + xor esi,edi + mov edi,DWORD PTR 8[esp] + xor ecx,esi + xor ebx,edi + add edx,DWORD PTR [esp] + and eax,ebx + add edx,DWORD PTR 92[esp] + xor eax,edi + add ecx,edx + add edx,DWORD PTR 16[esp] + lea eax,DWORD PTR [ecx*1+eax] + mov esi,DWORD PTR 96[esp] + xor ebx,edi + mov ecx,DWORD PTR 12[esp] + add eax,DWORD PTR [esi] + add ebx,DWORD PTR 4[esi] + add edi,DWORD PTR 8[esi] + add ecx,DWORD PTR 12[esi] + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + mov DWORD PTR 8[esi],edi + mov DWORD PTR 12[esi],ecx + mov DWORD PTR 4[esp],ebx + xor ebx,edi + mov DWORD PTR 8[esp],edi + mov DWORD PTR 12[esp],ecx + mov edi,DWORD PTR 20[esp] + mov ecx,DWORD PTR 24[esp] + add edx,DWORD PTR 16[esi] + add edi,DWORD PTR 20[esi] + add ecx,DWORD PTR 24[esi] + mov DWORD PTR 16[esi],edx + mov DWORD PTR 20[esi],edi + mov DWORD PTR 20[esp],edi + mov edi,DWORD PTR 28[esp] + mov DWORD PTR 24[esi],ecx + add edi,DWORD PTR 28[esi] + mov DWORD PTR 24[esp],ecx + mov DWORD PTR 28[esi],edi + mov DWORD PTR 28[esp],edi + mov edi,DWORD PTR 100[esp] + vmovdqa xmm7,XMMWORD PTR 64[ebp] + sub ebp,192 + cmp edi,DWORD PTR 104[esp] + jb $L017grand_avx_bmi + mov esp,DWORD PTR 108[esp] + vzeroall + pop edi + pop esi + pop ebx + pop ebp + ret +_sha256_block_data_order ENDP +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/sha/sha512-586.masm b/contrib/libs/openssl/asm/windows/crypto/sha/sha512-586.masm index cfe416f509..bb60ddeb69 100644 --- a/contrib/libs/openssl/asm/windows/crypto/sha/sha512-586.masm +++ b/contrib/libs/openssl/asm/windows/crypto/sha/sha512-586.masm @@ -1,2848 +1,2848 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -;EXTERN _OPENSSL_ia32cap_P:NEAR -ALIGN 16 -_sha512_block_data_order PROC PUBLIC -$L_sha512_block_data_order_begin:: - push ebp - push ebx - push esi - push edi - mov esi,DWORD PTR 20[esp] - mov edi,DWORD PTR 24[esp] - mov eax,DWORD PTR 28[esp] - mov ebx,esp - call $L000pic_point -$L000pic_point: - pop ebp - lea ebp,DWORD PTR ($L001K512-$L000pic_point)[ebp] - sub esp,16 - and esp,-64 - shl eax,7 - add eax,edi - mov DWORD PTR [esp],esi - mov DWORD PTR 4[esp],edi - mov DWORD PTR 8[esp],eax - mov DWORD PTR 12[esp],ebx - lea edx,DWORD PTR _OPENSSL_ia32cap_P - mov ecx,DWORD PTR [edx] - test ecx,67108864 - jz $L002loop_x86 - mov edx,DWORD PTR 4[edx] - movq mm0,QWORD PTR [esi] - and ecx,16777216 - movq mm1,QWORD PTR 8[esi] - and edx,512 - movq mm2,QWORD PTR 16[esi] - or ecx,edx - movq mm3,QWORD PTR 24[esi] - movq mm4,QWORD PTR 32[esi] - movq mm5,QWORD PTR 40[esi] - movq mm6,QWORD PTR 48[esi] - movq mm7,QWORD PTR 56[esi] - cmp ecx,16777728 - je $L003SSSE3 - sub esp,80 - jmp $L004loop_sse2 -ALIGN 16 -$L004loop_sse2: - movq QWORD PTR 8[esp],mm1 - movq QWORD PTR 16[esp],mm2 - movq QWORD PTR 24[esp],mm3 - movq QWORD PTR 40[esp],mm5 - movq QWORD PTR 48[esp],mm6 - pxor mm2,mm1 - movq QWORD PTR 56[esp],mm7 - movq mm3,mm0 - mov eax,DWORD PTR [edi] - mov ebx,DWORD PTR 4[edi] - add edi,8 - mov edx,15 - bswap eax - bswap ebx - jmp $L00500_14_sse2 -ALIGN 16 -$L00500_14_sse2: - movd mm1,eax - mov eax,DWORD PTR [edi] - movd mm7,ebx - mov ebx,DWORD PTR 4[edi] - add edi,8 - bswap eax - bswap ebx - punpckldq mm7,mm1 - movq mm1,mm4 - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 32[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - movq mm0,mm3 - movq QWORD PTR 72[esp],mm7 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR [esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 56[esp] - pxor mm3,mm1 - psllq mm4,4 - paddq mm7,QWORD PTR [ebp] - pxor mm3,mm4 - movq mm4,QWORD PTR 24[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 8[esp] - psrlq mm5,6 - pxor mm7,mm6 - sub esp,8 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 40[esp] - paddq mm3,mm2 - movq mm2,mm0 - add ebp,8 - paddq mm3,mm6 - movq mm6,QWORD PTR 48[esp] - dec edx - jnz $L00500_14_sse2 - movd mm1,eax - movd mm7,ebx - punpckldq mm7,mm1 - movq mm1,mm4 - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 32[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - movq mm0,mm3 - movq QWORD PTR 72[esp],mm7 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR [esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 56[esp] - pxor mm3,mm1 - psllq mm4,4 - paddq mm7,QWORD PTR [ebp] - pxor mm3,mm4 - movq mm4,QWORD PTR 24[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 8[esp] - psrlq mm5,6 - pxor mm7,mm6 - sub esp,8 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm7,QWORD PTR 192[esp] - paddq mm3,mm2 - movq mm2,mm0 - add ebp,8 - paddq mm3,mm6 - pxor mm0,mm0 - mov edx,32 - jmp $L00616_79_sse2 -ALIGN 16 -$L00616_79_sse2: - movq mm5,QWORD PTR 88[esp] - movq mm1,mm7 - psrlq mm7,1 - movq mm6,mm5 - psrlq mm5,6 - psllq mm1,56 - paddq mm0,mm3 - movq mm3,mm7 - psrlq mm7,6 - pxor mm3,mm1 - psllq mm1,7 - pxor mm3,mm7 - psrlq mm7,1 - pxor mm3,mm1 - movq mm1,mm5 - psrlq mm5,13 - pxor mm7,mm3 - psllq mm6,3 - pxor mm1,mm5 - paddq mm7,QWORD PTR 200[esp] - pxor mm1,mm6 - psrlq mm5,42 - paddq mm7,QWORD PTR 128[esp] - pxor mm1,mm5 - psllq mm6,42 - movq mm5,QWORD PTR 40[esp] - pxor mm1,mm6 - movq mm6,QWORD PTR 48[esp] - paddq mm7,mm1 - movq mm1,mm4 - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 32[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - movq QWORD PTR 72[esp],mm7 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR [esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 56[esp] - pxor mm3,mm1 - psllq mm4,4 - paddq mm7,QWORD PTR [ebp] - pxor mm3,mm4 - movq mm4,QWORD PTR 24[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 8[esp] - psrlq mm5,6 - pxor mm7,mm6 - sub esp,8 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm7,QWORD PTR 192[esp] - paddq mm2,mm6 - add ebp,8 - movq mm5,QWORD PTR 88[esp] - movq mm1,mm7 - psrlq mm7,1 - movq mm6,mm5 - psrlq mm5,6 - psllq mm1,56 - paddq mm2,mm3 - movq mm3,mm7 - psrlq mm7,6 - pxor mm3,mm1 - psllq mm1,7 - pxor mm3,mm7 - psrlq mm7,1 - pxor mm3,mm1 - movq mm1,mm5 - psrlq mm5,13 - pxor mm7,mm3 - psllq mm6,3 - pxor mm1,mm5 - paddq mm7,QWORD PTR 200[esp] - pxor mm1,mm6 - psrlq mm5,42 - paddq mm7,QWORD PTR 128[esp] - pxor mm1,mm5 - psllq mm6,42 - movq mm5,QWORD PTR 40[esp] - pxor mm1,mm6 - movq mm6,QWORD PTR 48[esp] - paddq mm7,mm1 - movq mm1,mm4 - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 32[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - movq QWORD PTR 72[esp],mm7 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR [esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 56[esp] - pxor mm3,mm1 - psllq mm4,4 - paddq mm7,QWORD PTR [ebp] - pxor mm3,mm4 - movq mm4,QWORD PTR 24[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 8[esp] - psrlq mm5,6 - pxor mm7,mm6 - sub esp,8 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm7,QWORD PTR 192[esp] - paddq mm0,mm6 - add ebp,8 - dec edx - jnz $L00616_79_sse2 - paddq mm0,mm3 - movq mm1,QWORD PTR 8[esp] - movq mm3,QWORD PTR 24[esp] - movq mm5,QWORD PTR 40[esp] - movq mm6,QWORD PTR 48[esp] - movq mm7,QWORD PTR 56[esp] - pxor mm2,mm1 - paddq mm0,QWORD PTR [esi] - paddq mm1,QWORD PTR 8[esi] - paddq mm2,QWORD PTR 16[esi] - paddq mm3,QWORD PTR 24[esi] - paddq mm4,QWORD PTR 32[esi] - paddq mm5,QWORD PTR 40[esi] - paddq mm6,QWORD PTR 48[esi] - paddq mm7,QWORD PTR 56[esi] - mov eax,640 - movq QWORD PTR [esi],mm0 - movq QWORD PTR 8[esi],mm1 - movq QWORD PTR 16[esi],mm2 - movq QWORD PTR 24[esi],mm3 - movq QWORD PTR 32[esi],mm4 - movq QWORD PTR 40[esi],mm5 - movq QWORD PTR 48[esi],mm6 - movq QWORD PTR 56[esi],mm7 - lea esp,DWORD PTR [eax*1+esp] - sub ebp,eax - cmp edi,DWORD PTR 88[esp] - jb $L004loop_sse2 - mov esp,DWORD PTR 92[esp] - emms - pop edi - pop esi - pop ebx - pop ebp - ret -ALIGN 32 -$L003SSSE3: - lea edx,DWORD PTR [esp-64] - sub esp,256 - movdqa xmm1,XMMWORD PTR 640[ebp] - movdqu xmm0,XMMWORD PTR [edi] -DB 102,15,56,0,193 - movdqa xmm3,XMMWORD PTR [ebp] - movdqa xmm2,xmm1 - movdqu xmm1,XMMWORD PTR 16[edi] - paddq xmm3,xmm0 -DB 102,15,56,0,202 - movdqa XMMWORD PTR [edx-128],xmm3 - movdqa xmm4,XMMWORD PTR 16[ebp] - movdqa xmm3,xmm2 - movdqu xmm2,XMMWORD PTR 32[edi] - paddq xmm4,xmm1 -DB 102,15,56,0,211 - movdqa XMMWORD PTR [edx-112],xmm4 - movdqa xmm5,XMMWORD PTR 32[ebp] - movdqa xmm4,xmm3 - movdqu xmm3,XMMWORD PTR 48[edi] - paddq xmm5,xmm2 -DB 102,15,56,0,220 - movdqa XMMWORD PTR [edx-96],xmm5 - movdqa xmm6,XMMWORD PTR 48[ebp] - movdqa xmm5,xmm4 - movdqu xmm4,XMMWORD PTR 64[edi] - paddq xmm6,xmm3 -DB 102,15,56,0,229 - movdqa XMMWORD PTR [edx-80],xmm6 - movdqa xmm7,XMMWORD PTR 64[ebp] - movdqa xmm6,xmm5 - movdqu xmm5,XMMWORD PTR 80[edi] - paddq xmm7,xmm4 -DB 102,15,56,0,238 - movdqa XMMWORD PTR [edx-64],xmm7 - movdqa XMMWORD PTR [edx],xmm0 - movdqa xmm0,XMMWORD PTR 80[ebp] - movdqa xmm7,xmm6 - movdqu xmm6,XMMWORD PTR 96[edi] - paddq xmm0,xmm5 -DB 102,15,56,0,247 - movdqa XMMWORD PTR [edx-48],xmm0 - movdqa XMMWORD PTR 16[edx],xmm1 - movdqa xmm1,XMMWORD PTR 96[ebp] - movdqa xmm0,xmm7 - movdqu xmm7,XMMWORD PTR 112[edi] - paddq xmm1,xmm6 -DB 102,15,56,0,248 - movdqa XMMWORD PTR [edx-32],xmm1 - movdqa XMMWORD PTR 32[edx],xmm2 - movdqa xmm2,XMMWORD PTR 112[ebp] - movdqa xmm0,XMMWORD PTR [edx] - paddq xmm2,xmm7 - movdqa XMMWORD PTR [edx-16],xmm2 - nop -ALIGN 32 -$L007loop_ssse3: - movdqa xmm2,XMMWORD PTR 16[edx] - movdqa XMMWORD PTR 48[edx],xmm3 - lea ebp,DWORD PTR 128[ebp] - movq QWORD PTR 8[esp],mm1 - mov ebx,edi - movq QWORD PTR 16[esp],mm2 - lea edi,DWORD PTR 128[edi] - movq QWORD PTR 24[esp],mm3 - cmp edi,eax - movq QWORD PTR 40[esp],mm5 - cmovb ebx,edi - movq QWORD PTR 48[esp],mm6 - mov ecx,4 - pxor mm2,mm1 - movq QWORD PTR 56[esp],mm7 - pxor mm3,mm3 - jmp $L00800_47_ssse3 -ALIGN 32 -$L00800_47_ssse3: - movdqa xmm3,xmm5 - movdqa xmm1,xmm2 -DB 102,15,58,15,208,8 - movdqa XMMWORD PTR [edx],xmm4 -DB 102,15,58,15,220,8 - movdqa xmm4,xmm2 - psrlq xmm2,7 - paddq xmm0,xmm3 - movdqa xmm3,xmm4 - psrlq xmm4,1 - psllq xmm3,56 - pxor xmm2,xmm4 - psrlq xmm4,7 - pxor xmm2,xmm3 - psllq xmm3,7 - pxor xmm2,xmm4 - movdqa xmm4,xmm7 - pxor xmm2,xmm3 - movdqa xmm3,xmm7 - psrlq xmm4,6 - paddq xmm0,xmm2 - movdqa xmm2,xmm7 - psrlq xmm3,19 - psllq xmm2,3 - pxor xmm4,xmm3 - psrlq xmm3,42 - pxor xmm4,xmm2 - psllq xmm2,42 - pxor xmm4,xmm3 - movdqa xmm3,XMMWORD PTR 32[edx] - pxor xmm4,xmm2 - movdqa xmm2,XMMWORD PTR [ebp] - movq mm1,mm4 - paddq xmm0,xmm4 - movq mm7,QWORD PTR [edx-128] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 32[esp],mm4 - paddq xmm2,xmm0 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR [esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 56[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 24[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 8[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 32[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 40[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-120] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 24[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 56[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 48[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 16[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR [esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 24[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 32[esp] - movdqa XMMWORD PTR [edx-128],xmm2 - movdqa xmm4,xmm6 - movdqa xmm2,xmm3 -DB 102,15,58,15,217,8 - movdqa XMMWORD PTR 16[edx],xmm5 -DB 102,15,58,15,229,8 - movdqa xmm5,xmm3 - psrlq xmm3,7 - paddq xmm1,xmm4 - movdqa xmm4,xmm5 - psrlq xmm5,1 - psllq xmm4,56 - pxor xmm3,xmm5 - psrlq xmm5,7 - pxor xmm3,xmm4 - psllq xmm4,7 - pxor xmm3,xmm5 - movdqa xmm5,xmm0 - pxor xmm3,xmm4 - movdqa xmm4,xmm0 - psrlq xmm5,6 - paddq xmm1,xmm3 - movdqa xmm3,xmm0 - psrlq xmm4,19 - psllq xmm3,3 - pxor xmm5,xmm4 - psrlq xmm4,42 - pxor xmm5,xmm3 - psllq xmm3,42 - pxor xmm5,xmm4 - movdqa xmm4,XMMWORD PTR 48[edx] - pxor xmm5,xmm3 - movdqa xmm3,XMMWORD PTR 16[ebp] - movq mm1,mm4 - paddq xmm1,xmm5 - movq mm7,QWORD PTR [edx-112] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 16[esp],mm4 - paddq xmm3,xmm1 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 48[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 40[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 8[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 56[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 16[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 24[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-104] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 8[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 40[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 32[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR [esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 48[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 8[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 16[esp] - movdqa XMMWORD PTR [edx-112],xmm3 - movdqa xmm5,xmm7 - movdqa xmm3,xmm4 -DB 102,15,58,15,226,8 - movdqa XMMWORD PTR 32[edx],xmm6 -DB 102,15,58,15,238,8 - movdqa xmm6,xmm4 - psrlq xmm4,7 - paddq xmm2,xmm5 - movdqa xmm5,xmm6 - psrlq xmm6,1 - psllq xmm5,56 - pxor xmm4,xmm6 - psrlq xmm6,7 - pxor xmm4,xmm5 - psllq xmm5,7 - pxor xmm4,xmm6 - movdqa xmm6,xmm1 - pxor xmm4,xmm5 - movdqa xmm5,xmm1 - psrlq xmm6,6 - paddq xmm2,xmm4 - movdqa xmm4,xmm1 - psrlq xmm5,19 - psllq xmm4,3 - pxor xmm6,xmm5 - psrlq xmm5,42 - pxor xmm6,xmm4 - psllq xmm4,42 - pxor xmm6,xmm5 - movdqa xmm5,XMMWORD PTR [edx] - pxor xmm6,xmm4 - movdqa xmm4,XMMWORD PTR 32[ebp] - movq mm1,mm4 - paddq xmm2,xmm6 - movq mm7,QWORD PTR [edx-96] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR [esp],mm4 - paddq xmm4,xmm2 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 32[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 24[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 56[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 40[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR [esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 8[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-88] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 56[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 24[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 16[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 48[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 32[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 56[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR [esp] - movdqa XMMWORD PTR [edx-96],xmm4 - movdqa xmm6,xmm0 - movdqa xmm4,xmm5 -DB 102,15,58,15,235,8 - movdqa XMMWORD PTR 48[edx],xmm7 -DB 102,15,58,15,247,8 - movdqa xmm7,xmm5 - psrlq xmm5,7 - paddq xmm3,xmm6 - movdqa xmm6,xmm7 - psrlq xmm7,1 - psllq xmm6,56 - pxor xmm5,xmm7 - psrlq xmm7,7 - pxor xmm5,xmm6 - psllq xmm6,7 - pxor xmm5,xmm7 - movdqa xmm7,xmm2 - pxor xmm5,xmm6 - movdqa xmm6,xmm2 - psrlq xmm7,6 - paddq xmm3,xmm5 - movdqa xmm5,xmm2 - psrlq xmm6,19 - psllq xmm5,3 - pxor xmm7,xmm6 - psrlq xmm6,42 - pxor xmm7,xmm5 - psllq xmm5,42 - pxor xmm7,xmm6 - movdqa xmm6,XMMWORD PTR 16[edx] - pxor xmm7,xmm5 - movdqa xmm5,XMMWORD PTR 48[ebp] - movq mm1,mm4 - paddq xmm3,xmm7 - movq mm7,QWORD PTR [edx-80] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 48[esp],mm4 - paddq xmm5,xmm3 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 16[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 8[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 40[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 24[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 48[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 56[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-72] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 40[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 8[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR [esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 32[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 16[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 40[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 48[esp] - movdqa XMMWORD PTR [edx-80],xmm5 - movdqa xmm7,xmm1 - movdqa xmm5,xmm6 -DB 102,15,58,15,244,8 - movdqa XMMWORD PTR [edx],xmm0 -DB 102,15,58,15,248,8 - movdqa xmm0,xmm6 - psrlq xmm6,7 - paddq xmm4,xmm7 - movdqa xmm7,xmm0 - psrlq xmm0,1 - psllq xmm7,56 - pxor xmm6,xmm0 - psrlq xmm0,7 - pxor xmm6,xmm7 - psllq xmm7,7 - pxor xmm6,xmm0 - movdqa xmm0,xmm3 - pxor xmm6,xmm7 - movdqa xmm7,xmm3 - psrlq xmm0,6 - paddq xmm4,xmm6 - movdqa xmm6,xmm3 - psrlq xmm7,19 - psllq xmm6,3 - pxor xmm0,xmm7 - psrlq xmm7,42 - pxor xmm0,xmm6 - psllq xmm6,42 - pxor xmm0,xmm7 - movdqa xmm7,XMMWORD PTR 32[edx] - pxor xmm0,xmm6 - movdqa xmm6,XMMWORD PTR 64[ebp] - movq mm1,mm4 - paddq xmm4,xmm0 - movq mm7,QWORD PTR [edx-64] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 32[esp],mm4 - paddq xmm6,xmm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR [esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 56[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 24[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 8[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 32[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 40[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-56] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 24[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 56[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 48[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 16[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR [esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 24[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 32[esp] - movdqa XMMWORD PTR [edx-64],xmm6 - movdqa xmm0,xmm2 - movdqa xmm6,xmm7 -DB 102,15,58,15,253,8 - movdqa XMMWORD PTR 16[edx],xmm1 -DB 102,15,58,15,193,8 - movdqa xmm1,xmm7 - psrlq xmm7,7 - paddq xmm5,xmm0 - movdqa xmm0,xmm1 - psrlq xmm1,1 - psllq xmm0,56 - pxor xmm7,xmm1 - psrlq xmm1,7 - pxor xmm7,xmm0 - psllq xmm0,7 - pxor xmm7,xmm1 - movdqa xmm1,xmm4 - pxor xmm7,xmm0 - movdqa xmm0,xmm4 - psrlq xmm1,6 - paddq xmm5,xmm7 - movdqa xmm7,xmm4 - psrlq xmm0,19 - psllq xmm7,3 - pxor xmm1,xmm0 - psrlq xmm0,42 - pxor xmm1,xmm7 - psllq xmm7,42 - pxor xmm1,xmm0 - movdqa xmm0,XMMWORD PTR 48[edx] - pxor xmm1,xmm7 - movdqa xmm7,XMMWORD PTR 80[ebp] - movq mm1,mm4 - paddq xmm5,xmm1 - movq mm7,QWORD PTR [edx-48] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 16[esp],mm4 - paddq xmm7,xmm5 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 48[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 40[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 8[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 56[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 16[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 24[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-40] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 8[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 40[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 32[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR [esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 48[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 8[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 16[esp] - movdqa XMMWORD PTR [edx-48],xmm7 - movdqa xmm1,xmm3 - movdqa xmm7,xmm0 -DB 102,15,58,15,198,8 - movdqa XMMWORD PTR 32[edx],xmm2 -DB 102,15,58,15,202,8 - movdqa xmm2,xmm0 - psrlq xmm0,7 - paddq xmm6,xmm1 - movdqa xmm1,xmm2 - psrlq xmm2,1 - psllq xmm1,56 - pxor xmm0,xmm2 - psrlq xmm2,7 - pxor xmm0,xmm1 - psllq xmm1,7 - pxor xmm0,xmm2 - movdqa xmm2,xmm5 - pxor xmm0,xmm1 - movdqa xmm1,xmm5 - psrlq xmm2,6 - paddq xmm6,xmm0 - movdqa xmm0,xmm5 - psrlq xmm1,19 - psllq xmm0,3 - pxor xmm2,xmm1 - psrlq xmm1,42 - pxor xmm2,xmm0 - psllq xmm0,42 - pxor xmm2,xmm1 - movdqa xmm1,XMMWORD PTR [edx] - pxor xmm2,xmm0 - movdqa xmm0,XMMWORD PTR 96[ebp] - movq mm1,mm4 - paddq xmm6,xmm2 - movq mm7,QWORD PTR [edx-32] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR [esp],mm4 - paddq xmm0,xmm6 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 32[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 24[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 56[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 40[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR [esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 8[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-24] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 56[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 24[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 16[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 48[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 32[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 56[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR [esp] - movdqa XMMWORD PTR [edx-32],xmm0 - movdqa xmm2,xmm4 - movdqa xmm0,xmm1 -DB 102,15,58,15,207,8 - movdqa XMMWORD PTR 48[edx],xmm3 -DB 102,15,58,15,211,8 - movdqa xmm3,xmm1 - psrlq xmm1,7 - paddq xmm7,xmm2 - movdqa xmm2,xmm3 - psrlq xmm3,1 - psllq xmm2,56 - pxor xmm1,xmm3 - psrlq xmm3,7 - pxor xmm1,xmm2 - psllq xmm2,7 - pxor xmm1,xmm3 - movdqa xmm3,xmm6 - pxor xmm1,xmm2 - movdqa xmm2,xmm6 - psrlq xmm3,6 - paddq xmm7,xmm1 - movdqa xmm1,xmm6 - psrlq xmm2,19 - psllq xmm1,3 - pxor xmm3,xmm2 - psrlq xmm2,42 - pxor xmm3,xmm1 - psllq xmm1,42 - pxor xmm3,xmm2 - movdqa xmm2,XMMWORD PTR 16[edx] - pxor xmm3,xmm1 - movdqa xmm1,XMMWORD PTR 112[ebp] - movq mm1,mm4 - paddq xmm7,xmm3 - movq mm7,QWORD PTR [edx-16] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 48[esp],mm4 - paddq xmm1,xmm7 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 16[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 8[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 40[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 24[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 48[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 56[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-8] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 40[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 8[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR [esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 32[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 16[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 40[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 48[esp] - movdqa XMMWORD PTR [edx-16],xmm1 - lea ebp,DWORD PTR 128[ebp] - dec ecx - jnz $L00800_47_ssse3 - movdqa xmm1,XMMWORD PTR [ebp] - lea ebp,DWORD PTR [ebp-640] - movdqu xmm0,XMMWORD PTR [ebx] -DB 102,15,56,0,193 - movdqa xmm3,XMMWORD PTR [ebp] - movdqa xmm2,xmm1 - movdqu xmm1,XMMWORD PTR 16[ebx] - paddq xmm3,xmm0 -DB 102,15,56,0,202 - movq mm1,mm4 - movq mm7,QWORD PTR [edx-128] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 32[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR [esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 56[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 24[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 8[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 32[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 40[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-120] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 24[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 56[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 48[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 16[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR [esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 24[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 32[esp] - movdqa XMMWORD PTR [edx-128],xmm3 - movdqa xmm4,XMMWORD PTR 16[ebp] - movdqa xmm3,xmm2 - movdqu xmm2,XMMWORD PTR 32[ebx] - paddq xmm4,xmm1 -DB 102,15,56,0,211 - movq mm1,mm4 - movq mm7,QWORD PTR [edx-112] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 16[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 48[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 40[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 8[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 56[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 16[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 24[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-104] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 8[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 40[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 32[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR [esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 48[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 8[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 16[esp] - movdqa XMMWORD PTR [edx-112],xmm4 - movdqa xmm5,XMMWORD PTR 32[ebp] - movdqa xmm4,xmm3 - movdqu xmm3,XMMWORD PTR 48[ebx] - paddq xmm5,xmm2 -DB 102,15,56,0,220 - movq mm1,mm4 - movq mm7,QWORD PTR [edx-96] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR [esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 32[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 24[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 56[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 40[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR [esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 8[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-88] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 56[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 24[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 16[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 48[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 32[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 56[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR [esp] - movdqa XMMWORD PTR [edx-96],xmm5 - movdqa xmm6,XMMWORD PTR 48[ebp] - movdqa xmm5,xmm4 - movdqu xmm4,XMMWORD PTR 64[ebx] - paddq xmm6,xmm3 -DB 102,15,56,0,229 - movq mm1,mm4 - movq mm7,QWORD PTR [edx-80] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 48[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 16[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 8[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 40[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 24[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 48[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 56[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-72] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 40[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 8[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR [esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 32[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 16[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 40[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 48[esp] - movdqa XMMWORD PTR [edx-80],xmm6 - movdqa xmm7,XMMWORD PTR 64[ebp] - movdqa xmm6,xmm5 - movdqu xmm5,XMMWORD PTR 80[ebx] - paddq xmm7,xmm4 -DB 102,15,56,0,238 - movq mm1,mm4 - movq mm7,QWORD PTR [edx-64] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 32[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR [esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 56[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 24[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 8[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 32[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 40[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-56] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 24[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 56[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 48[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 16[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR [esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 24[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 32[esp] - movdqa XMMWORD PTR [edx-64],xmm7 - movdqa XMMWORD PTR [edx],xmm0 - movdqa xmm0,XMMWORD PTR 80[ebp] - movdqa xmm7,xmm6 - movdqu xmm6,XMMWORD PTR 96[ebx] - paddq xmm0,xmm5 -DB 102,15,56,0,247 - movq mm1,mm4 - movq mm7,QWORD PTR [edx-48] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 16[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 48[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 40[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 8[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 56[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 16[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 24[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-40] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 8[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 40[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 32[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR [esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 48[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 8[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 16[esp] - movdqa XMMWORD PTR [edx-48],xmm0 - movdqa XMMWORD PTR 16[edx],xmm1 - movdqa xmm1,XMMWORD PTR 96[ebp] - movdqa xmm0,xmm7 - movdqu xmm7,XMMWORD PTR 112[ebx] - paddq xmm1,xmm6 -DB 102,15,56,0,248 - movq mm1,mm4 - movq mm7,QWORD PTR [edx-32] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR [esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 32[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 24[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 56[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 40[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR [esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 8[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-24] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 56[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 24[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 16[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 48[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 32[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 56[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR [esp] - movdqa XMMWORD PTR [edx-32],xmm1 - movdqa XMMWORD PTR 32[edx],xmm2 - movdqa xmm2,XMMWORD PTR 112[ebp] - movdqa xmm0,XMMWORD PTR [edx] - paddq xmm2,xmm7 - movq mm1,mm4 - movq mm7,QWORD PTR [edx-16] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 48[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm0,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 16[esp],mm0 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR 8[esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 40[esp] - paddq mm3,mm7 - movq mm5,mm0 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm0 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 24[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm0,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm2,mm0 - psllq mm6,6 - pxor mm7,mm5 - pxor mm2,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 48[esp] - paddq mm2,mm6 - movq mm6,QWORD PTR 56[esp] - movq mm1,mm4 - movq mm7,QWORD PTR [edx-8] - pxor mm5,mm6 - psrlq mm1,14 - movq QWORD PTR 40[esp],mm4 - pand mm5,mm4 - psllq mm4,23 - paddq mm2,mm3 - movq mm3,mm1 - psrlq mm1,4 - pxor mm5,mm6 - pxor mm3,mm4 - psllq mm4,23 - pxor mm3,mm1 - movq QWORD PTR 8[esp],mm2 - paddq mm7,mm5 - pxor mm3,mm4 - psrlq mm1,23 - paddq mm7,QWORD PTR [esp] - pxor mm3,mm1 - psllq mm4,4 - pxor mm3,mm4 - movq mm4,QWORD PTR 32[esp] - paddq mm3,mm7 - movq mm5,mm2 - psrlq mm5,28 - paddq mm4,mm3 - movq mm6,mm2 - movq mm7,mm5 - psllq mm6,25 - movq mm1,QWORD PTR 16[esp] - psrlq mm5,6 - pxor mm7,mm6 - psllq mm6,5 - pxor mm7,mm5 - pxor mm2,mm1 - psrlq mm5,5 - pxor mm7,mm6 - pand mm0,mm2 - psllq mm6,6 - pxor mm7,mm5 - pxor mm0,mm1 - pxor mm6,mm7 - movq mm5,QWORD PTR 40[esp] - paddq mm0,mm6 - movq mm6,QWORD PTR 48[esp] - movdqa XMMWORD PTR [edx-16],xmm2 - movq mm1,QWORD PTR 8[esp] - paddq mm0,mm3 - movq mm3,QWORD PTR 24[esp] - movq mm7,QWORD PTR 56[esp] - pxor mm2,mm1 - paddq mm0,QWORD PTR [esi] - paddq mm1,QWORD PTR 8[esi] - paddq mm2,QWORD PTR 16[esi] - paddq mm3,QWORD PTR 24[esi] - paddq mm4,QWORD PTR 32[esi] - paddq mm5,QWORD PTR 40[esi] - paddq mm6,QWORD PTR 48[esi] - paddq mm7,QWORD PTR 56[esi] - movq QWORD PTR [esi],mm0 - movq QWORD PTR 8[esi],mm1 - movq QWORD PTR 16[esi],mm2 - movq QWORD PTR 24[esi],mm3 - movq QWORD PTR 32[esi],mm4 - movq QWORD PTR 40[esi],mm5 - movq QWORD PTR 48[esi],mm6 - movq QWORD PTR 56[esi],mm7 - cmp edi,eax - jb $L007loop_ssse3 - mov esp,DWORD PTR 76[edx] - emms - pop edi - pop esi - pop ebx - pop ebp - ret -ALIGN 16 -$L002loop_x86: - mov eax,DWORD PTR [edi] - mov ebx,DWORD PTR 4[edi] - mov ecx,DWORD PTR 8[edi] - mov edx,DWORD PTR 12[edi] - bswap eax - bswap ebx - bswap ecx - bswap edx - push eax - push ebx - push ecx - push edx - mov eax,DWORD PTR 16[edi] - mov ebx,DWORD PTR 20[edi] - mov ecx,DWORD PTR 24[edi] - mov edx,DWORD PTR 28[edi] - bswap eax - bswap ebx - bswap ecx - bswap edx - push eax - push ebx - push ecx - push edx - mov eax,DWORD PTR 32[edi] - mov ebx,DWORD PTR 36[edi] - mov ecx,DWORD PTR 40[edi] - mov edx,DWORD PTR 44[edi] - bswap eax - bswap ebx - bswap ecx - bswap edx - push eax - push ebx - push ecx - push edx - mov eax,DWORD PTR 48[edi] - mov ebx,DWORD PTR 52[edi] - mov ecx,DWORD PTR 56[edi] - mov edx,DWORD PTR 60[edi] - bswap eax - bswap ebx - bswap ecx - bswap edx - push eax - push ebx - push ecx - push edx - mov eax,DWORD PTR 64[edi] - mov ebx,DWORD PTR 68[edi] - mov ecx,DWORD PTR 72[edi] - mov edx,DWORD PTR 76[edi] - bswap eax - bswap ebx - bswap ecx - bswap edx - push eax - push ebx - push ecx - push edx - mov eax,DWORD PTR 80[edi] - mov ebx,DWORD PTR 84[edi] - mov ecx,DWORD PTR 88[edi] - mov edx,DWORD PTR 92[edi] - bswap eax - bswap ebx - bswap ecx - bswap edx - push eax - push ebx - push ecx - push edx - mov eax,DWORD PTR 96[edi] - mov ebx,DWORD PTR 100[edi] - mov ecx,DWORD PTR 104[edi] - mov edx,DWORD PTR 108[edi] - bswap eax - bswap ebx - bswap ecx - bswap edx - push eax - push ebx - push ecx - push edx - mov eax,DWORD PTR 112[edi] - mov ebx,DWORD PTR 116[edi] - mov ecx,DWORD PTR 120[edi] - mov edx,DWORD PTR 124[edi] - bswap eax - bswap ebx - bswap ecx - bswap edx - push eax - push ebx - push ecx - push edx - add edi,128 - sub esp,72 - mov DWORD PTR 204[esp],edi - lea edi,DWORD PTR 8[esp] - mov ecx,16 -DD 2784229001 -ALIGN 16 -$L00900_15_x86: - mov ecx,DWORD PTR 40[esp] - mov edx,DWORD PTR 44[esp] - mov esi,ecx - shr ecx,9 - mov edi,edx - shr edx,9 - mov ebx,ecx - shl esi,14 - mov eax,edx - shl edi,14 - xor ebx,esi - shr ecx,5 - xor eax,edi - shr edx,5 - xor eax,ecx - shl esi,4 - xor ebx,edx - shl edi,4 - xor ebx,esi - shr ecx,4 - xor eax,edi - shr edx,4 - xor eax,ecx - shl esi,5 - xor ebx,edx - shl edi,5 - xor eax,esi - xor ebx,edi - mov ecx,DWORD PTR 48[esp] - mov edx,DWORD PTR 52[esp] - mov esi,DWORD PTR 56[esp] - mov edi,DWORD PTR 60[esp] - add eax,DWORD PTR 64[esp] - adc ebx,DWORD PTR 68[esp] - xor ecx,esi - xor edx,edi - and ecx,DWORD PTR 40[esp] - and edx,DWORD PTR 44[esp] - add eax,DWORD PTR 192[esp] - adc ebx,DWORD PTR 196[esp] - xor ecx,esi - xor edx,edi - mov esi,DWORD PTR [ebp] - mov edi,DWORD PTR 4[ebp] - add eax,ecx - adc ebx,edx - mov ecx,DWORD PTR 32[esp] - mov edx,DWORD PTR 36[esp] - add eax,esi - adc ebx,edi - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],ebx - add eax,ecx - adc ebx,edx - mov ecx,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] - mov DWORD PTR 32[esp],eax - mov DWORD PTR 36[esp],ebx - mov esi,ecx - shr ecx,2 - mov edi,edx - shr edx,2 - mov ebx,ecx - shl esi,4 - mov eax,edx - shl edi,4 - xor ebx,esi - shr ecx,5 - xor eax,edi - shr edx,5 - xor ebx,ecx - shl esi,21 - xor eax,edx - shl edi,21 - xor eax,esi - shr ecx,21 - xor ebx,edi - shr edx,21 - xor eax,ecx - shl esi,5 - xor ebx,edx - shl edi,5 - xor eax,esi - xor ebx,edi - mov ecx,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] - mov esi,DWORD PTR 16[esp] - mov edi,DWORD PTR 20[esp] - add eax,DWORD PTR [esp] - adc ebx,DWORD PTR 4[esp] - or ecx,esi - or edx,edi - and ecx,DWORD PTR 24[esp] - and edx,DWORD PTR 28[esp] - and esi,DWORD PTR 8[esp] - and edi,DWORD PTR 12[esp] - or ecx,esi - or edx,edi - add eax,ecx - adc ebx,edx - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],ebx - mov dl,BYTE PTR [ebp] - sub esp,8 - lea ebp,DWORD PTR 8[ebp] - cmp dl,148 - jne $L00900_15_x86 -ALIGN 16 -$L01016_79_x86: - mov ecx,DWORD PTR 312[esp] - mov edx,DWORD PTR 316[esp] - mov esi,ecx - shr ecx,1 - mov edi,edx - shr edx,1 - mov eax,ecx - shl esi,24 - mov ebx,edx - shl edi,24 - xor ebx,esi - shr ecx,6 - xor eax,edi - shr edx,6 - xor eax,ecx - shl esi,7 - xor ebx,edx - shl edi,1 - xor ebx,esi - shr ecx,1 - xor eax,edi - shr edx,1 - xor eax,ecx - shl edi,6 - xor ebx,edx - xor eax,edi - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],ebx - mov ecx,DWORD PTR 208[esp] - mov edx,DWORD PTR 212[esp] - mov esi,ecx - shr ecx,6 - mov edi,edx - shr edx,6 - mov eax,ecx - shl esi,3 - mov ebx,edx - shl edi,3 - xor eax,esi - shr ecx,13 - xor ebx,edi - shr edx,13 - xor eax,ecx - shl esi,10 - xor ebx,edx - shl edi,10 - xor ebx,esi - shr ecx,10 - xor eax,edi - shr edx,10 - xor ebx,ecx - shl edi,13 - xor eax,edx - xor eax,edi - mov ecx,DWORD PTR 320[esp] - mov edx,DWORD PTR 324[esp] - add eax,DWORD PTR [esp] - adc ebx,DWORD PTR 4[esp] - mov esi,DWORD PTR 248[esp] - mov edi,DWORD PTR 252[esp] - add eax,ecx - adc ebx,edx - add eax,esi - adc ebx,edi - mov DWORD PTR 192[esp],eax - mov DWORD PTR 196[esp],ebx - mov ecx,DWORD PTR 40[esp] - mov edx,DWORD PTR 44[esp] - mov esi,ecx - shr ecx,9 - mov edi,edx - shr edx,9 - mov ebx,ecx - shl esi,14 - mov eax,edx - shl edi,14 - xor ebx,esi - shr ecx,5 - xor eax,edi - shr edx,5 - xor eax,ecx - shl esi,4 - xor ebx,edx - shl edi,4 - xor ebx,esi - shr ecx,4 - xor eax,edi - shr edx,4 - xor eax,ecx - shl esi,5 - xor ebx,edx - shl edi,5 - xor eax,esi - xor ebx,edi - mov ecx,DWORD PTR 48[esp] - mov edx,DWORD PTR 52[esp] - mov esi,DWORD PTR 56[esp] - mov edi,DWORD PTR 60[esp] - add eax,DWORD PTR 64[esp] - adc ebx,DWORD PTR 68[esp] - xor ecx,esi - xor edx,edi - and ecx,DWORD PTR 40[esp] - and edx,DWORD PTR 44[esp] - add eax,DWORD PTR 192[esp] - adc ebx,DWORD PTR 196[esp] - xor ecx,esi - xor edx,edi - mov esi,DWORD PTR [ebp] - mov edi,DWORD PTR 4[ebp] - add eax,ecx - adc ebx,edx - mov ecx,DWORD PTR 32[esp] - mov edx,DWORD PTR 36[esp] - add eax,esi - adc ebx,edi - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],ebx - add eax,ecx - adc ebx,edx - mov ecx,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] - mov DWORD PTR 32[esp],eax - mov DWORD PTR 36[esp],ebx - mov esi,ecx - shr ecx,2 - mov edi,edx - shr edx,2 - mov ebx,ecx - shl esi,4 - mov eax,edx - shl edi,4 - xor ebx,esi - shr ecx,5 - xor eax,edi - shr edx,5 - xor ebx,ecx - shl esi,21 - xor eax,edx - shl edi,21 - xor eax,esi - shr ecx,21 - xor ebx,edi - shr edx,21 - xor eax,ecx - shl esi,5 - xor ebx,edx - shl edi,5 - xor eax,esi - xor ebx,edi - mov ecx,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] - mov esi,DWORD PTR 16[esp] - mov edi,DWORD PTR 20[esp] - add eax,DWORD PTR [esp] - adc ebx,DWORD PTR 4[esp] - or ecx,esi - or edx,edi - and ecx,DWORD PTR 24[esp] - and edx,DWORD PTR 28[esp] - and esi,DWORD PTR 8[esp] - and edi,DWORD PTR 12[esp] - or ecx,esi - or edx,edi - add eax,ecx - adc ebx,edx - mov DWORD PTR [esp],eax - mov DWORD PTR 4[esp],ebx - mov dl,BYTE PTR [ebp] - sub esp,8 - lea ebp,DWORD PTR 8[ebp] - cmp dl,23 - jne $L01016_79_x86 - mov esi,DWORD PTR 840[esp] - mov edi,DWORD PTR 844[esp] - mov eax,DWORD PTR [esi] - mov ebx,DWORD PTR 4[esi] - mov ecx,DWORD PTR 8[esi] - mov edx,DWORD PTR 12[esi] - add eax,DWORD PTR 8[esp] - adc ebx,DWORD PTR 12[esp] - mov DWORD PTR [esi],eax - mov DWORD PTR 4[esi],ebx - add ecx,DWORD PTR 16[esp] - adc edx,DWORD PTR 20[esp] - mov DWORD PTR 8[esi],ecx - mov DWORD PTR 12[esi],edx - mov eax,DWORD PTR 16[esi] - mov ebx,DWORD PTR 20[esi] - mov ecx,DWORD PTR 24[esi] - mov edx,DWORD PTR 28[esi] - add eax,DWORD PTR 24[esp] - adc ebx,DWORD PTR 28[esp] - mov DWORD PTR 16[esi],eax - mov DWORD PTR 20[esi],ebx - add ecx,DWORD PTR 32[esp] - adc edx,DWORD PTR 36[esp] - mov DWORD PTR 24[esi],ecx - mov DWORD PTR 28[esi],edx - mov eax,DWORD PTR 32[esi] - mov ebx,DWORD PTR 36[esi] - mov ecx,DWORD PTR 40[esi] - mov edx,DWORD PTR 44[esi] - add eax,DWORD PTR 40[esp] - adc ebx,DWORD PTR 44[esp] - mov DWORD PTR 32[esi],eax - mov DWORD PTR 36[esi],ebx - add ecx,DWORD PTR 48[esp] - adc edx,DWORD PTR 52[esp] - mov DWORD PTR 40[esi],ecx - mov DWORD PTR 44[esi],edx - mov eax,DWORD PTR 48[esi] - mov ebx,DWORD PTR 52[esi] - mov ecx,DWORD PTR 56[esi] - mov edx,DWORD PTR 60[esi] - add eax,DWORD PTR 56[esp] - adc ebx,DWORD PTR 60[esp] - mov DWORD PTR 48[esi],eax - mov DWORD PTR 52[esi],ebx - add ecx,DWORD PTR 64[esp] - adc edx,DWORD PTR 68[esp] - mov DWORD PTR 56[esi],ecx - mov DWORD PTR 60[esi],edx - add esp,840 - sub ebp,640 - cmp edi,DWORD PTR 8[esp] - jb $L002loop_x86 - mov esp,DWORD PTR 12[esp] - pop edi - pop esi - pop ebx - pop ebp - ret -ALIGN 64 -$L001K512: -DD 3609767458,1116352408 -DD 602891725,1899447441 -DD 3964484399,3049323471 -DD 2173295548,3921009573 -DD 4081628472,961987163 -DD 3053834265,1508970993 -DD 2937671579,2453635748 -DD 3664609560,2870763221 -DD 2734883394,3624381080 -DD 1164996542,310598401 -DD 1323610764,607225278 -DD 3590304994,1426881987 -DD 4068182383,1925078388 -DD 991336113,2162078206 -DD 633803317,2614888103 -DD 3479774868,3248222580 -DD 2666613458,3835390401 -DD 944711139,4022224774 -DD 2341262773,264347078 -DD 2007800933,604807628 -DD 1495990901,770255983 -DD 1856431235,1249150122 -DD 3175218132,1555081692 -DD 2198950837,1996064986 -DD 3999719339,2554220882 -DD 766784016,2821834349 -DD 2566594879,2952996808 -DD 3203337956,3210313671 -DD 1034457026,3336571891 -DD 2466948901,3584528711 -DD 3758326383,113926993 -DD 168717936,338241895 -DD 1188179964,666307205 -DD 1546045734,773529912 -DD 1522805485,1294757372 -DD 2643833823,1396182291 -DD 2343527390,1695183700 -DD 1014477480,1986661051 -DD 1206759142,2177026350 -DD 344077627,2456956037 -DD 1290863460,2730485921 -DD 3158454273,2820302411 -DD 3505952657,3259730800 -DD 106217008,3345764771 -DD 3606008344,3516065817 -DD 1432725776,3600352804 -DD 1467031594,4094571909 -DD 851169720,275423344 -DD 3100823752,430227734 -DD 1363258195,506948616 -DD 3750685593,659060556 -DD 3785050280,883997877 -DD 3318307427,958139571 -DD 3812723403,1322822218 -DD 2003034995,1537002063 -DD 3602036899,1747873779 -DD 1575990012,1955562222 -DD 1125592928,2024104815 -DD 2716904306,2227730452 -DD 442776044,2361852424 -DD 593698344,2428436474 -DD 3733110249,2756734187 -DD 2999351573,3204031479 -DD 3815920427,3329325298 -DD 3928383900,3391569614 -DD 566280711,3515267271 -DD 3454069534,3940187606 -DD 4000239992,4118630271 -DD 1914138554,116418474 -DD 2731055270,174292421 -DD 3203993006,289380356 -DD 320620315,460393269 -DD 587496836,685471733 -DD 1086792851,852142971 -DD 365543100,1017036298 -DD 2618297676,1126000580 -DD 3409855158,1288033470 -DD 4234509866,1501505948 -DD 987167468,1607167915 -DD 1246189591,1816402316 -DD 67438087,66051 -DD 202182159,134810123 -_sha512_block_data_order ENDP -DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 -DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32 -DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 -DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 -DB 62,0 -.text$ ENDS -.bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:DWORD:4 -.bss ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +;EXTERN _OPENSSL_ia32cap_P:NEAR +ALIGN 16 +_sha512_block_data_order PROC PUBLIC +$L_sha512_block_data_order_begin:: + push ebp + push ebx + push esi + push edi + mov esi,DWORD PTR 20[esp] + mov edi,DWORD PTR 24[esp] + mov eax,DWORD PTR 28[esp] + mov ebx,esp + call $L000pic_point +$L000pic_point: + pop ebp + lea ebp,DWORD PTR ($L001K512-$L000pic_point)[ebp] + sub esp,16 + and esp,-64 + shl eax,7 + add eax,edi + mov DWORD PTR [esp],esi + mov DWORD PTR 4[esp],edi + mov DWORD PTR 8[esp],eax + mov DWORD PTR 12[esp],ebx + lea edx,DWORD PTR _OPENSSL_ia32cap_P + mov ecx,DWORD PTR [edx] + test ecx,67108864 + jz $L002loop_x86 + mov edx,DWORD PTR 4[edx] + movq mm0,QWORD PTR [esi] + and ecx,16777216 + movq mm1,QWORD PTR 8[esi] + and edx,512 + movq mm2,QWORD PTR 16[esi] + or ecx,edx + movq mm3,QWORD PTR 24[esi] + movq mm4,QWORD PTR 32[esi] + movq mm5,QWORD PTR 40[esi] + movq mm6,QWORD PTR 48[esi] + movq mm7,QWORD PTR 56[esi] + cmp ecx,16777728 + je $L003SSSE3 + sub esp,80 + jmp $L004loop_sse2 +ALIGN 16 +$L004loop_sse2: + movq QWORD PTR 8[esp],mm1 + movq QWORD PTR 16[esp],mm2 + movq QWORD PTR 24[esp],mm3 + movq QWORD PTR 40[esp],mm5 + movq QWORD PTR 48[esp],mm6 + pxor mm2,mm1 + movq QWORD PTR 56[esp],mm7 + movq mm3,mm0 + mov eax,DWORD PTR [edi] + mov ebx,DWORD PTR 4[edi] + add edi,8 + mov edx,15 + bswap eax + bswap ebx + jmp $L00500_14_sse2 +ALIGN 16 +$L00500_14_sse2: + movd mm1,eax + mov eax,DWORD PTR [edi] + movd mm7,ebx + mov ebx,DWORD PTR 4[edi] + add edi,8 + bswap eax + bswap ebx + punpckldq mm7,mm1 + movq mm1,mm4 + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 32[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + movq mm0,mm3 + movq QWORD PTR 72[esp],mm7 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR [esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 56[esp] + pxor mm3,mm1 + psllq mm4,4 + paddq mm7,QWORD PTR [ebp] + pxor mm3,mm4 + movq mm4,QWORD PTR 24[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 8[esp] + psrlq mm5,6 + pxor mm7,mm6 + sub esp,8 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 40[esp] + paddq mm3,mm2 + movq mm2,mm0 + add ebp,8 + paddq mm3,mm6 + movq mm6,QWORD PTR 48[esp] + dec edx + jnz $L00500_14_sse2 + movd mm1,eax + movd mm7,ebx + punpckldq mm7,mm1 + movq mm1,mm4 + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 32[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + movq mm0,mm3 + movq QWORD PTR 72[esp],mm7 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR [esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 56[esp] + pxor mm3,mm1 + psllq mm4,4 + paddq mm7,QWORD PTR [ebp] + pxor mm3,mm4 + movq mm4,QWORD PTR 24[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 8[esp] + psrlq mm5,6 + pxor mm7,mm6 + sub esp,8 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm7,QWORD PTR 192[esp] + paddq mm3,mm2 + movq mm2,mm0 + add ebp,8 + paddq mm3,mm6 + pxor mm0,mm0 + mov edx,32 + jmp $L00616_79_sse2 +ALIGN 16 +$L00616_79_sse2: + movq mm5,QWORD PTR 88[esp] + movq mm1,mm7 + psrlq mm7,1 + movq mm6,mm5 + psrlq mm5,6 + psllq mm1,56 + paddq mm0,mm3 + movq mm3,mm7 + psrlq mm7,6 + pxor mm3,mm1 + psllq mm1,7 + pxor mm3,mm7 + psrlq mm7,1 + pxor mm3,mm1 + movq mm1,mm5 + psrlq mm5,13 + pxor mm7,mm3 + psllq mm6,3 + pxor mm1,mm5 + paddq mm7,QWORD PTR 200[esp] + pxor mm1,mm6 + psrlq mm5,42 + paddq mm7,QWORD PTR 128[esp] + pxor mm1,mm5 + psllq mm6,42 + movq mm5,QWORD PTR 40[esp] + pxor mm1,mm6 + movq mm6,QWORD PTR 48[esp] + paddq mm7,mm1 + movq mm1,mm4 + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 32[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + movq QWORD PTR 72[esp],mm7 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR [esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 56[esp] + pxor mm3,mm1 + psllq mm4,4 + paddq mm7,QWORD PTR [ebp] + pxor mm3,mm4 + movq mm4,QWORD PTR 24[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 8[esp] + psrlq mm5,6 + pxor mm7,mm6 + sub esp,8 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm7,QWORD PTR 192[esp] + paddq mm2,mm6 + add ebp,8 + movq mm5,QWORD PTR 88[esp] + movq mm1,mm7 + psrlq mm7,1 + movq mm6,mm5 + psrlq mm5,6 + psllq mm1,56 + paddq mm2,mm3 + movq mm3,mm7 + psrlq mm7,6 + pxor mm3,mm1 + psllq mm1,7 + pxor mm3,mm7 + psrlq mm7,1 + pxor mm3,mm1 + movq mm1,mm5 + psrlq mm5,13 + pxor mm7,mm3 + psllq mm6,3 + pxor mm1,mm5 + paddq mm7,QWORD PTR 200[esp] + pxor mm1,mm6 + psrlq mm5,42 + paddq mm7,QWORD PTR 128[esp] + pxor mm1,mm5 + psllq mm6,42 + movq mm5,QWORD PTR 40[esp] + pxor mm1,mm6 + movq mm6,QWORD PTR 48[esp] + paddq mm7,mm1 + movq mm1,mm4 + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 32[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + movq QWORD PTR 72[esp],mm7 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR [esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 56[esp] + pxor mm3,mm1 + psllq mm4,4 + paddq mm7,QWORD PTR [ebp] + pxor mm3,mm4 + movq mm4,QWORD PTR 24[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 8[esp] + psrlq mm5,6 + pxor mm7,mm6 + sub esp,8 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm7,QWORD PTR 192[esp] + paddq mm0,mm6 + add ebp,8 + dec edx + jnz $L00616_79_sse2 + paddq mm0,mm3 + movq mm1,QWORD PTR 8[esp] + movq mm3,QWORD PTR 24[esp] + movq mm5,QWORD PTR 40[esp] + movq mm6,QWORD PTR 48[esp] + movq mm7,QWORD PTR 56[esp] + pxor mm2,mm1 + paddq mm0,QWORD PTR [esi] + paddq mm1,QWORD PTR 8[esi] + paddq mm2,QWORD PTR 16[esi] + paddq mm3,QWORD PTR 24[esi] + paddq mm4,QWORD PTR 32[esi] + paddq mm5,QWORD PTR 40[esi] + paddq mm6,QWORD PTR 48[esi] + paddq mm7,QWORD PTR 56[esi] + mov eax,640 + movq QWORD PTR [esi],mm0 + movq QWORD PTR 8[esi],mm1 + movq QWORD PTR 16[esi],mm2 + movq QWORD PTR 24[esi],mm3 + movq QWORD PTR 32[esi],mm4 + movq QWORD PTR 40[esi],mm5 + movq QWORD PTR 48[esi],mm6 + movq QWORD PTR 56[esi],mm7 + lea esp,DWORD PTR [eax*1+esp] + sub ebp,eax + cmp edi,DWORD PTR 88[esp] + jb $L004loop_sse2 + mov esp,DWORD PTR 92[esp] + emms + pop edi + pop esi + pop ebx + pop ebp + ret +ALIGN 32 +$L003SSSE3: + lea edx,DWORD PTR [esp-64] + sub esp,256 + movdqa xmm1,XMMWORD PTR 640[ebp] + movdqu xmm0,XMMWORD PTR [edi] +DB 102,15,56,0,193 + movdqa xmm3,XMMWORD PTR [ebp] + movdqa xmm2,xmm1 + movdqu xmm1,XMMWORD PTR 16[edi] + paddq xmm3,xmm0 +DB 102,15,56,0,202 + movdqa XMMWORD PTR [edx-128],xmm3 + movdqa xmm4,XMMWORD PTR 16[ebp] + movdqa xmm3,xmm2 + movdqu xmm2,XMMWORD PTR 32[edi] + paddq xmm4,xmm1 +DB 102,15,56,0,211 + movdqa XMMWORD PTR [edx-112],xmm4 + movdqa xmm5,XMMWORD PTR 32[ebp] + movdqa xmm4,xmm3 + movdqu xmm3,XMMWORD PTR 48[edi] + paddq xmm5,xmm2 +DB 102,15,56,0,220 + movdqa XMMWORD PTR [edx-96],xmm5 + movdqa xmm6,XMMWORD PTR 48[ebp] + movdqa xmm5,xmm4 + movdqu xmm4,XMMWORD PTR 64[edi] + paddq xmm6,xmm3 +DB 102,15,56,0,229 + movdqa XMMWORD PTR [edx-80],xmm6 + movdqa xmm7,XMMWORD PTR 64[ebp] + movdqa xmm6,xmm5 + movdqu xmm5,XMMWORD PTR 80[edi] + paddq xmm7,xmm4 +DB 102,15,56,0,238 + movdqa XMMWORD PTR [edx-64],xmm7 + movdqa XMMWORD PTR [edx],xmm0 + movdqa xmm0,XMMWORD PTR 80[ebp] + movdqa xmm7,xmm6 + movdqu xmm6,XMMWORD PTR 96[edi] + paddq xmm0,xmm5 +DB 102,15,56,0,247 + movdqa XMMWORD PTR [edx-48],xmm0 + movdqa XMMWORD PTR 16[edx],xmm1 + movdqa xmm1,XMMWORD PTR 96[ebp] + movdqa xmm0,xmm7 + movdqu xmm7,XMMWORD PTR 112[edi] + paddq xmm1,xmm6 +DB 102,15,56,0,248 + movdqa XMMWORD PTR [edx-32],xmm1 + movdqa XMMWORD PTR 32[edx],xmm2 + movdqa xmm2,XMMWORD PTR 112[ebp] + movdqa xmm0,XMMWORD PTR [edx] + paddq xmm2,xmm7 + movdqa XMMWORD PTR [edx-16],xmm2 + nop +ALIGN 32 +$L007loop_ssse3: + movdqa xmm2,XMMWORD PTR 16[edx] + movdqa XMMWORD PTR 48[edx],xmm3 + lea ebp,DWORD PTR 128[ebp] + movq QWORD PTR 8[esp],mm1 + mov ebx,edi + movq QWORD PTR 16[esp],mm2 + lea edi,DWORD PTR 128[edi] + movq QWORD PTR 24[esp],mm3 + cmp edi,eax + movq QWORD PTR 40[esp],mm5 + cmovb ebx,edi + movq QWORD PTR 48[esp],mm6 + mov ecx,4 + pxor mm2,mm1 + movq QWORD PTR 56[esp],mm7 + pxor mm3,mm3 + jmp $L00800_47_ssse3 +ALIGN 32 +$L00800_47_ssse3: + movdqa xmm3,xmm5 + movdqa xmm1,xmm2 +DB 102,15,58,15,208,8 + movdqa XMMWORD PTR [edx],xmm4 +DB 102,15,58,15,220,8 + movdqa xmm4,xmm2 + psrlq xmm2,7 + paddq xmm0,xmm3 + movdqa xmm3,xmm4 + psrlq xmm4,1 + psllq xmm3,56 + pxor xmm2,xmm4 + psrlq xmm4,7 + pxor xmm2,xmm3 + psllq xmm3,7 + pxor xmm2,xmm4 + movdqa xmm4,xmm7 + pxor xmm2,xmm3 + movdqa xmm3,xmm7 + psrlq xmm4,6 + paddq xmm0,xmm2 + movdqa xmm2,xmm7 + psrlq xmm3,19 + psllq xmm2,3 + pxor xmm4,xmm3 + psrlq xmm3,42 + pxor xmm4,xmm2 + psllq xmm2,42 + pxor xmm4,xmm3 + movdqa xmm3,XMMWORD PTR 32[edx] + pxor xmm4,xmm2 + movdqa xmm2,XMMWORD PTR [ebp] + movq mm1,mm4 + paddq xmm0,xmm4 + movq mm7,QWORD PTR [edx-128] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 32[esp],mm4 + paddq xmm2,xmm0 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR [esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 56[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 24[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 8[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 32[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 40[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-120] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 24[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 56[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 48[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 16[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR [esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 24[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 32[esp] + movdqa XMMWORD PTR [edx-128],xmm2 + movdqa xmm4,xmm6 + movdqa xmm2,xmm3 +DB 102,15,58,15,217,8 + movdqa XMMWORD PTR 16[edx],xmm5 +DB 102,15,58,15,229,8 + movdqa xmm5,xmm3 + psrlq xmm3,7 + paddq xmm1,xmm4 + movdqa xmm4,xmm5 + psrlq xmm5,1 + psllq xmm4,56 + pxor xmm3,xmm5 + psrlq xmm5,7 + pxor xmm3,xmm4 + psllq xmm4,7 + pxor xmm3,xmm5 + movdqa xmm5,xmm0 + pxor xmm3,xmm4 + movdqa xmm4,xmm0 + psrlq xmm5,6 + paddq xmm1,xmm3 + movdqa xmm3,xmm0 + psrlq xmm4,19 + psllq xmm3,3 + pxor xmm5,xmm4 + psrlq xmm4,42 + pxor xmm5,xmm3 + psllq xmm3,42 + pxor xmm5,xmm4 + movdqa xmm4,XMMWORD PTR 48[edx] + pxor xmm5,xmm3 + movdqa xmm3,XMMWORD PTR 16[ebp] + movq mm1,mm4 + paddq xmm1,xmm5 + movq mm7,QWORD PTR [edx-112] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 16[esp],mm4 + paddq xmm3,xmm1 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 48[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 40[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 8[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 56[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 16[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 24[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-104] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 8[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 40[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 32[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR [esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 48[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 8[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 16[esp] + movdqa XMMWORD PTR [edx-112],xmm3 + movdqa xmm5,xmm7 + movdqa xmm3,xmm4 +DB 102,15,58,15,226,8 + movdqa XMMWORD PTR 32[edx],xmm6 +DB 102,15,58,15,238,8 + movdqa xmm6,xmm4 + psrlq xmm4,7 + paddq xmm2,xmm5 + movdqa xmm5,xmm6 + psrlq xmm6,1 + psllq xmm5,56 + pxor xmm4,xmm6 + psrlq xmm6,7 + pxor xmm4,xmm5 + psllq xmm5,7 + pxor xmm4,xmm6 + movdqa xmm6,xmm1 + pxor xmm4,xmm5 + movdqa xmm5,xmm1 + psrlq xmm6,6 + paddq xmm2,xmm4 + movdqa xmm4,xmm1 + psrlq xmm5,19 + psllq xmm4,3 + pxor xmm6,xmm5 + psrlq xmm5,42 + pxor xmm6,xmm4 + psllq xmm4,42 + pxor xmm6,xmm5 + movdqa xmm5,XMMWORD PTR [edx] + pxor xmm6,xmm4 + movdqa xmm4,XMMWORD PTR 32[ebp] + movq mm1,mm4 + paddq xmm2,xmm6 + movq mm7,QWORD PTR [edx-96] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR [esp],mm4 + paddq xmm4,xmm2 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 32[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 24[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 56[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 40[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR [esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 8[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-88] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 56[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 24[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 16[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 48[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 32[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 56[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR [esp] + movdqa XMMWORD PTR [edx-96],xmm4 + movdqa xmm6,xmm0 + movdqa xmm4,xmm5 +DB 102,15,58,15,235,8 + movdqa XMMWORD PTR 48[edx],xmm7 +DB 102,15,58,15,247,8 + movdqa xmm7,xmm5 + psrlq xmm5,7 + paddq xmm3,xmm6 + movdqa xmm6,xmm7 + psrlq xmm7,1 + psllq xmm6,56 + pxor xmm5,xmm7 + psrlq xmm7,7 + pxor xmm5,xmm6 + psllq xmm6,7 + pxor xmm5,xmm7 + movdqa xmm7,xmm2 + pxor xmm5,xmm6 + movdqa xmm6,xmm2 + psrlq xmm7,6 + paddq xmm3,xmm5 + movdqa xmm5,xmm2 + psrlq xmm6,19 + psllq xmm5,3 + pxor xmm7,xmm6 + psrlq xmm6,42 + pxor xmm7,xmm5 + psllq xmm5,42 + pxor xmm7,xmm6 + movdqa xmm6,XMMWORD PTR 16[edx] + pxor xmm7,xmm5 + movdqa xmm5,XMMWORD PTR 48[ebp] + movq mm1,mm4 + paddq xmm3,xmm7 + movq mm7,QWORD PTR [edx-80] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 48[esp],mm4 + paddq xmm5,xmm3 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 16[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 8[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 40[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 24[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 48[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 56[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-72] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 40[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 8[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR [esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 32[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 16[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 40[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 48[esp] + movdqa XMMWORD PTR [edx-80],xmm5 + movdqa xmm7,xmm1 + movdqa xmm5,xmm6 +DB 102,15,58,15,244,8 + movdqa XMMWORD PTR [edx],xmm0 +DB 102,15,58,15,248,8 + movdqa xmm0,xmm6 + psrlq xmm6,7 + paddq xmm4,xmm7 + movdqa xmm7,xmm0 + psrlq xmm0,1 + psllq xmm7,56 + pxor xmm6,xmm0 + psrlq xmm0,7 + pxor xmm6,xmm7 + psllq xmm7,7 + pxor xmm6,xmm0 + movdqa xmm0,xmm3 + pxor xmm6,xmm7 + movdqa xmm7,xmm3 + psrlq xmm0,6 + paddq xmm4,xmm6 + movdqa xmm6,xmm3 + psrlq xmm7,19 + psllq xmm6,3 + pxor xmm0,xmm7 + psrlq xmm7,42 + pxor xmm0,xmm6 + psllq xmm6,42 + pxor xmm0,xmm7 + movdqa xmm7,XMMWORD PTR 32[edx] + pxor xmm0,xmm6 + movdqa xmm6,XMMWORD PTR 64[ebp] + movq mm1,mm4 + paddq xmm4,xmm0 + movq mm7,QWORD PTR [edx-64] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 32[esp],mm4 + paddq xmm6,xmm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR [esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 56[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 24[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 8[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 32[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 40[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-56] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 24[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 56[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 48[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 16[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR [esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 24[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 32[esp] + movdqa XMMWORD PTR [edx-64],xmm6 + movdqa xmm0,xmm2 + movdqa xmm6,xmm7 +DB 102,15,58,15,253,8 + movdqa XMMWORD PTR 16[edx],xmm1 +DB 102,15,58,15,193,8 + movdqa xmm1,xmm7 + psrlq xmm7,7 + paddq xmm5,xmm0 + movdqa xmm0,xmm1 + psrlq xmm1,1 + psllq xmm0,56 + pxor xmm7,xmm1 + psrlq xmm1,7 + pxor xmm7,xmm0 + psllq xmm0,7 + pxor xmm7,xmm1 + movdqa xmm1,xmm4 + pxor xmm7,xmm0 + movdqa xmm0,xmm4 + psrlq xmm1,6 + paddq xmm5,xmm7 + movdqa xmm7,xmm4 + psrlq xmm0,19 + psllq xmm7,3 + pxor xmm1,xmm0 + psrlq xmm0,42 + pxor xmm1,xmm7 + psllq xmm7,42 + pxor xmm1,xmm0 + movdqa xmm0,XMMWORD PTR 48[edx] + pxor xmm1,xmm7 + movdqa xmm7,XMMWORD PTR 80[ebp] + movq mm1,mm4 + paddq xmm5,xmm1 + movq mm7,QWORD PTR [edx-48] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 16[esp],mm4 + paddq xmm7,xmm5 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 48[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 40[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 8[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 56[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 16[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 24[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-40] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 8[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 40[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 32[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR [esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 48[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 8[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 16[esp] + movdqa XMMWORD PTR [edx-48],xmm7 + movdqa xmm1,xmm3 + movdqa xmm7,xmm0 +DB 102,15,58,15,198,8 + movdqa XMMWORD PTR 32[edx],xmm2 +DB 102,15,58,15,202,8 + movdqa xmm2,xmm0 + psrlq xmm0,7 + paddq xmm6,xmm1 + movdqa xmm1,xmm2 + psrlq xmm2,1 + psllq xmm1,56 + pxor xmm0,xmm2 + psrlq xmm2,7 + pxor xmm0,xmm1 + psllq xmm1,7 + pxor xmm0,xmm2 + movdqa xmm2,xmm5 + pxor xmm0,xmm1 + movdqa xmm1,xmm5 + psrlq xmm2,6 + paddq xmm6,xmm0 + movdqa xmm0,xmm5 + psrlq xmm1,19 + psllq xmm0,3 + pxor xmm2,xmm1 + psrlq xmm1,42 + pxor xmm2,xmm0 + psllq xmm0,42 + pxor xmm2,xmm1 + movdqa xmm1,XMMWORD PTR [edx] + pxor xmm2,xmm0 + movdqa xmm0,XMMWORD PTR 96[ebp] + movq mm1,mm4 + paddq xmm6,xmm2 + movq mm7,QWORD PTR [edx-32] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR [esp],mm4 + paddq xmm0,xmm6 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 32[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 24[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 56[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 40[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR [esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 8[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-24] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 56[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 24[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 16[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 48[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 32[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 56[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR [esp] + movdqa XMMWORD PTR [edx-32],xmm0 + movdqa xmm2,xmm4 + movdqa xmm0,xmm1 +DB 102,15,58,15,207,8 + movdqa XMMWORD PTR 48[edx],xmm3 +DB 102,15,58,15,211,8 + movdqa xmm3,xmm1 + psrlq xmm1,7 + paddq xmm7,xmm2 + movdqa xmm2,xmm3 + psrlq xmm3,1 + psllq xmm2,56 + pxor xmm1,xmm3 + psrlq xmm3,7 + pxor xmm1,xmm2 + psllq xmm2,7 + pxor xmm1,xmm3 + movdqa xmm3,xmm6 + pxor xmm1,xmm2 + movdqa xmm2,xmm6 + psrlq xmm3,6 + paddq xmm7,xmm1 + movdqa xmm1,xmm6 + psrlq xmm2,19 + psllq xmm1,3 + pxor xmm3,xmm2 + psrlq xmm2,42 + pxor xmm3,xmm1 + psllq xmm1,42 + pxor xmm3,xmm2 + movdqa xmm2,XMMWORD PTR 16[edx] + pxor xmm3,xmm1 + movdqa xmm1,XMMWORD PTR 112[ebp] + movq mm1,mm4 + paddq xmm7,xmm3 + movq mm7,QWORD PTR [edx-16] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 48[esp],mm4 + paddq xmm1,xmm7 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 16[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 8[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 40[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 24[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 48[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 56[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-8] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 40[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 8[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR [esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 32[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 16[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 40[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 48[esp] + movdqa XMMWORD PTR [edx-16],xmm1 + lea ebp,DWORD PTR 128[ebp] + dec ecx + jnz $L00800_47_ssse3 + movdqa xmm1,XMMWORD PTR [ebp] + lea ebp,DWORD PTR [ebp-640] + movdqu xmm0,XMMWORD PTR [ebx] +DB 102,15,56,0,193 + movdqa xmm3,XMMWORD PTR [ebp] + movdqa xmm2,xmm1 + movdqu xmm1,XMMWORD PTR 16[ebx] + paddq xmm3,xmm0 +DB 102,15,56,0,202 + movq mm1,mm4 + movq mm7,QWORD PTR [edx-128] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 32[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR [esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 56[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 24[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 8[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 32[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 40[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-120] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 24[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 56[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 48[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 16[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR [esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 24[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 32[esp] + movdqa XMMWORD PTR [edx-128],xmm3 + movdqa xmm4,XMMWORD PTR 16[ebp] + movdqa xmm3,xmm2 + movdqu xmm2,XMMWORD PTR 32[ebx] + paddq xmm4,xmm1 +DB 102,15,56,0,211 + movq mm1,mm4 + movq mm7,QWORD PTR [edx-112] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 16[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 48[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 40[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 8[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 56[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 16[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 24[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-104] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 8[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 40[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 32[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR [esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 48[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 8[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 16[esp] + movdqa XMMWORD PTR [edx-112],xmm4 + movdqa xmm5,XMMWORD PTR 32[ebp] + movdqa xmm4,xmm3 + movdqu xmm3,XMMWORD PTR 48[ebx] + paddq xmm5,xmm2 +DB 102,15,56,0,220 + movq mm1,mm4 + movq mm7,QWORD PTR [edx-96] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR [esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 32[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 24[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 56[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 40[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR [esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 8[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-88] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 56[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 24[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 16[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 48[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 32[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 56[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR [esp] + movdqa XMMWORD PTR [edx-96],xmm5 + movdqa xmm6,XMMWORD PTR 48[ebp] + movdqa xmm5,xmm4 + movdqu xmm4,XMMWORD PTR 64[ebx] + paddq xmm6,xmm3 +DB 102,15,56,0,229 + movq mm1,mm4 + movq mm7,QWORD PTR [edx-80] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 48[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 16[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 8[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 40[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 24[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 48[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 56[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-72] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 40[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 8[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR [esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 32[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 16[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 40[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 48[esp] + movdqa XMMWORD PTR [edx-80],xmm6 + movdqa xmm7,XMMWORD PTR 64[ebp] + movdqa xmm6,xmm5 + movdqu xmm5,XMMWORD PTR 80[ebx] + paddq xmm7,xmm4 +DB 102,15,56,0,238 + movq mm1,mm4 + movq mm7,QWORD PTR [edx-64] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 32[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR [esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 56[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 24[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 8[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 32[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 40[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-56] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 24[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 56[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 48[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 16[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR [esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 24[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 32[esp] + movdqa XMMWORD PTR [edx-64],xmm7 + movdqa XMMWORD PTR [edx],xmm0 + movdqa xmm0,XMMWORD PTR 80[ebp] + movdqa xmm7,xmm6 + movdqu xmm6,XMMWORD PTR 96[ebx] + paddq xmm0,xmm5 +DB 102,15,56,0,247 + movq mm1,mm4 + movq mm7,QWORD PTR [edx-48] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 16[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 48[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 40[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 8[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 56[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 16[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 24[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-40] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 8[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 40[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 32[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR [esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 48[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 8[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 16[esp] + movdqa XMMWORD PTR [edx-48],xmm0 + movdqa XMMWORD PTR 16[edx],xmm1 + movdqa xmm1,XMMWORD PTR 96[ebp] + movdqa xmm0,xmm7 + movdqu xmm7,XMMWORD PTR 112[ebx] + paddq xmm1,xmm6 +DB 102,15,56,0,248 + movq mm1,mm4 + movq mm7,QWORD PTR [edx-32] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR [esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 32[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 24[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 56[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 40[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR [esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 8[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-24] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 56[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 24[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 16[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 48[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 32[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 56[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR [esp] + movdqa XMMWORD PTR [edx-32],xmm1 + movdqa XMMWORD PTR 32[edx],xmm2 + movdqa xmm2,XMMWORD PTR 112[ebp] + movdqa xmm0,XMMWORD PTR [edx] + paddq xmm2,xmm7 + movq mm1,mm4 + movq mm7,QWORD PTR [edx-16] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 48[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm0,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 16[esp],mm0 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR 8[esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 40[esp] + paddq mm3,mm7 + movq mm5,mm0 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm0 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 24[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm0,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm2,mm0 + psllq mm6,6 + pxor mm7,mm5 + pxor mm2,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 48[esp] + paddq mm2,mm6 + movq mm6,QWORD PTR 56[esp] + movq mm1,mm4 + movq mm7,QWORD PTR [edx-8] + pxor mm5,mm6 + psrlq mm1,14 + movq QWORD PTR 40[esp],mm4 + pand mm5,mm4 + psllq mm4,23 + paddq mm2,mm3 + movq mm3,mm1 + psrlq mm1,4 + pxor mm5,mm6 + pxor mm3,mm4 + psllq mm4,23 + pxor mm3,mm1 + movq QWORD PTR 8[esp],mm2 + paddq mm7,mm5 + pxor mm3,mm4 + psrlq mm1,23 + paddq mm7,QWORD PTR [esp] + pxor mm3,mm1 + psllq mm4,4 + pxor mm3,mm4 + movq mm4,QWORD PTR 32[esp] + paddq mm3,mm7 + movq mm5,mm2 + psrlq mm5,28 + paddq mm4,mm3 + movq mm6,mm2 + movq mm7,mm5 + psllq mm6,25 + movq mm1,QWORD PTR 16[esp] + psrlq mm5,6 + pxor mm7,mm6 + psllq mm6,5 + pxor mm7,mm5 + pxor mm2,mm1 + psrlq mm5,5 + pxor mm7,mm6 + pand mm0,mm2 + psllq mm6,6 + pxor mm7,mm5 + pxor mm0,mm1 + pxor mm6,mm7 + movq mm5,QWORD PTR 40[esp] + paddq mm0,mm6 + movq mm6,QWORD PTR 48[esp] + movdqa XMMWORD PTR [edx-16],xmm2 + movq mm1,QWORD PTR 8[esp] + paddq mm0,mm3 + movq mm3,QWORD PTR 24[esp] + movq mm7,QWORD PTR 56[esp] + pxor mm2,mm1 + paddq mm0,QWORD PTR [esi] + paddq mm1,QWORD PTR 8[esi] + paddq mm2,QWORD PTR 16[esi] + paddq mm3,QWORD PTR 24[esi] + paddq mm4,QWORD PTR 32[esi] + paddq mm5,QWORD PTR 40[esi] + paddq mm6,QWORD PTR 48[esi] + paddq mm7,QWORD PTR 56[esi] + movq QWORD PTR [esi],mm0 + movq QWORD PTR 8[esi],mm1 + movq QWORD PTR 16[esi],mm2 + movq QWORD PTR 24[esi],mm3 + movq QWORD PTR 32[esi],mm4 + movq QWORD PTR 40[esi],mm5 + movq QWORD PTR 48[esi],mm6 + movq QWORD PTR 56[esi],mm7 + cmp edi,eax + jb $L007loop_ssse3 + mov esp,DWORD PTR 76[edx] + emms + pop edi + pop esi + pop ebx + pop ebp + ret +ALIGN 16 +$L002loop_x86: + mov eax,DWORD PTR [edi] + mov ebx,DWORD PTR 4[edi] + mov ecx,DWORD PTR 8[edi] + mov edx,DWORD PTR 12[edi] + bswap eax + bswap ebx + bswap ecx + bswap edx + push eax + push ebx + push ecx + push edx + mov eax,DWORD PTR 16[edi] + mov ebx,DWORD PTR 20[edi] + mov ecx,DWORD PTR 24[edi] + mov edx,DWORD PTR 28[edi] + bswap eax + bswap ebx + bswap ecx + bswap edx + push eax + push ebx + push ecx + push edx + mov eax,DWORD PTR 32[edi] + mov ebx,DWORD PTR 36[edi] + mov ecx,DWORD PTR 40[edi] + mov edx,DWORD PTR 44[edi] + bswap eax + bswap ebx + bswap ecx + bswap edx + push eax + push ebx + push ecx + push edx + mov eax,DWORD PTR 48[edi] + mov ebx,DWORD PTR 52[edi] + mov ecx,DWORD PTR 56[edi] + mov edx,DWORD PTR 60[edi] + bswap eax + bswap ebx + bswap ecx + bswap edx + push eax + push ebx + push ecx + push edx + mov eax,DWORD PTR 64[edi] + mov ebx,DWORD PTR 68[edi] + mov ecx,DWORD PTR 72[edi] + mov edx,DWORD PTR 76[edi] + bswap eax + bswap ebx + bswap ecx + bswap edx + push eax + push ebx + push ecx + push edx + mov eax,DWORD PTR 80[edi] + mov ebx,DWORD PTR 84[edi] + mov ecx,DWORD PTR 88[edi] + mov edx,DWORD PTR 92[edi] + bswap eax + bswap ebx + bswap ecx + bswap edx + push eax + push ebx + push ecx + push edx + mov eax,DWORD PTR 96[edi] + mov ebx,DWORD PTR 100[edi] + mov ecx,DWORD PTR 104[edi] + mov edx,DWORD PTR 108[edi] + bswap eax + bswap ebx + bswap ecx + bswap edx + push eax + push ebx + push ecx + push edx + mov eax,DWORD PTR 112[edi] + mov ebx,DWORD PTR 116[edi] + mov ecx,DWORD PTR 120[edi] + mov edx,DWORD PTR 124[edi] + bswap eax + bswap ebx + bswap ecx + bswap edx + push eax + push ebx + push ecx + push edx + add edi,128 + sub esp,72 + mov DWORD PTR 204[esp],edi + lea edi,DWORD PTR 8[esp] + mov ecx,16 +DD 2784229001 +ALIGN 16 +$L00900_15_x86: + mov ecx,DWORD PTR 40[esp] + mov edx,DWORD PTR 44[esp] + mov esi,ecx + shr ecx,9 + mov edi,edx + shr edx,9 + mov ebx,ecx + shl esi,14 + mov eax,edx + shl edi,14 + xor ebx,esi + shr ecx,5 + xor eax,edi + shr edx,5 + xor eax,ecx + shl esi,4 + xor ebx,edx + shl edi,4 + xor ebx,esi + shr ecx,4 + xor eax,edi + shr edx,4 + xor eax,ecx + shl esi,5 + xor ebx,edx + shl edi,5 + xor eax,esi + xor ebx,edi + mov ecx,DWORD PTR 48[esp] + mov edx,DWORD PTR 52[esp] + mov esi,DWORD PTR 56[esp] + mov edi,DWORD PTR 60[esp] + add eax,DWORD PTR 64[esp] + adc ebx,DWORD PTR 68[esp] + xor ecx,esi + xor edx,edi + and ecx,DWORD PTR 40[esp] + and edx,DWORD PTR 44[esp] + add eax,DWORD PTR 192[esp] + adc ebx,DWORD PTR 196[esp] + xor ecx,esi + xor edx,edi + mov esi,DWORD PTR [ebp] + mov edi,DWORD PTR 4[ebp] + add eax,ecx + adc ebx,edx + mov ecx,DWORD PTR 32[esp] + mov edx,DWORD PTR 36[esp] + add eax,esi + adc ebx,edi + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],ebx + add eax,ecx + adc ebx,edx + mov ecx,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] + mov DWORD PTR 32[esp],eax + mov DWORD PTR 36[esp],ebx + mov esi,ecx + shr ecx,2 + mov edi,edx + shr edx,2 + mov ebx,ecx + shl esi,4 + mov eax,edx + shl edi,4 + xor ebx,esi + shr ecx,5 + xor eax,edi + shr edx,5 + xor ebx,ecx + shl esi,21 + xor eax,edx + shl edi,21 + xor eax,esi + shr ecx,21 + xor ebx,edi + shr edx,21 + xor eax,ecx + shl esi,5 + xor ebx,edx + shl edi,5 + xor eax,esi + xor ebx,edi + mov ecx,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov edi,DWORD PTR 20[esp] + add eax,DWORD PTR [esp] + adc ebx,DWORD PTR 4[esp] + or ecx,esi + or edx,edi + and ecx,DWORD PTR 24[esp] + and edx,DWORD PTR 28[esp] + and esi,DWORD PTR 8[esp] + and edi,DWORD PTR 12[esp] + or ecx,esi + or edx,edi + add eax,ecx + adc ebx,edx + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],ebx + mov dl,BYTE PTR [ebp] + sub esp,8 + lea ebp,DWORD PTR 8[ebp] + cmp dl,148 + jne $L00900_15_x86 +ALIGN 16 +$L01016_79_x86: + mov ecx,DWORD PTR 312[esp] + mov edx,DWORD PTR 316[esp] + mov esi,ecx + shr ecx,1 + mov edi,edx + shr edx,1 + mov eax,ecx + shl esi,24 + mov ebx,edx + shl edi,24 + xor ebx,esi + shr ecx,6 + xor eax,edi + shr edx,6 + xor eax,ecx + shl esi,7 + xor ebx,edx + shl edi,1 + xor ebx,esi + shr ecx,1 + xor eax,edi + shr edx,1 + xor eax,ecx + shl edi,6 + xor ebx,edx + xor eax,edi + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],ebx + mov ecx,DWORD PTR 208[esp] + mov edx,DWORD PTR 212[esp] + mov esi,ecx + shr ecx,6 + mov edi,edx + shr edx,6 + mov eax,ecx + shl esi,3 + mov ebx,edx + shl edi,3 + xor eax,esi + shr ecx,13 + xor ebx,edi + shr edx,13 + xor eax,ecx + shl esi,10 + xor ebx,edx + shl edi,10 + xor ebx,esi + shr ecx,10 + xor eax,edi + shr edx,10 + xor ebx,ecx + shl edi,13 + xor eax,edx + xor eax,edi + mov ecx,DWORD PTR 320[esp] + mov edx,DWORD PTR 324[esp] + add eax,DWORD PTR [esp] + adc ebx,DWORD PTR 4[esp] + mov esi,DWORD PTR 248[esp] + mov edi,DWORD PTR 252[esp] + add eax,ecx + adc ebx,edx + add eax,esi + adc ebx,edi + mov DWORD PTR 192[esp],eax + mov DWORD PTR 196[esp],ebx + mov ecx,DWORD PTR 40[esp] + mov edx,DWORD PTR 44[esp] + mov esi,ecx + shr ecx,9 + mov edi,edx + shr edx,9 + mov ebx,ecx + shl esi,14 + mov eax,edx + shl edi,14 + xor ebx,esi + shr ecx,5 + xor eax,edi + shr edx,5 + xor eax,ecx + shl esi,4 + xor ebx,edx + shl edi,4 + xor ebx,esi + shr ecx,4 + xor eax,edi + shr edx,4 + xor eax,ecx + shl esi,5 + xor ebx,edx + shl edi,5 + xor eax,esi + xor ebx,edi + mov ecx,DWORD PTR 48[esp] + mov edx,DWORD PTR 52[esp] + mov esi,DWORD PTR 56[esp] + mov edi,DWORD PTR 60[esp] + add eax,DWORD PTR 64[esp] + adc ebx,DWORD PTR 68[esp] + xor ecx,esi + xor edx,edi + and ecx,DWORD PTR 40[esp] + and edx,DWORD PTR 44[esp] + add eax,DWORD PTR 192[esp] + adc ebx,DWORD PTR 196[esp] + xor ecx,esi + xor edx,edi + mov esi,DWORD PTR [ebp] + mov edi,DWORD PTR 4[ebp] + add eax,ecx + adc ebx,edx + mov ecx,DWORD PTR 32[esp] + mov edx,DWORD PTR 36[esp] + add eax,esi + adc ebx,edi + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],ebx + add eax,ecx + adc ebx,edx + mov ecx,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] + mov DWORD PTR 32[esp],eax + mov DWORD PTR 36[esp],ebx + mov esi,ecx + shr ecx,2 + mov edi,edx + shr edx,2 + mov ebx,ecx + shl esi,4 + mov eax,edx + shl edi,4 + xor ebx,esi + shr ecx,5 + xor eax,edi + shr edx,5 + xor ebx,ecx + shl esi,21 + xor eax,edx + shl edi,21 + xor eax,esi + shr ecx,21 + xor ebx,edi + shr edx,21 + xor eax,ecx + shl esi,5 + xor ebx,edx + shl edi,5 + xor eax,esi + xor ebx,edi + mov ecx,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov edi,DWORD PTR 20[esp] + add eax,DWORD PTR [esp] + adc ebx,DWORD PTR 4[esp] + or ecx,esi + or edx,edi + and ecx,DWORD PTR 24[esp] + and edx,DWORD PTR 28[esp] + and esi,DWORD PTR 8[esp] + and edi,DWORD PTR 12[esp] + or ecx,esi + or edx,edi + add eax,ecx + adc ebx,edx + mov DWORD PTR [esp],eax + mov DWORD PTR 4[esp],ebx + mov dl,BYTE PTR [ebp] + sub esp,8 + lea ebp,DWORD PTR 8[ebp] + cmp dl,23 + jne $L01016_79_x86 + mov esi,DWORD PTR 840[esp] + mov edi,DWORD PTR 844[esp] + mov eax,DWORD PTR [esi] + mov ebx,DWORD PTR 4[esi] + mov ecx,DWORD PTR 8[esi] + mov edx,DWORD PTR 12[esi] + add eax,DWORD PTR 8[esp] + adc ebx,DWORD PTR 12[esp] + mov DWORD PTR [esi],eax + mov DWORD PTR 4[esi],ebx + add ecx,DWORD PTR 16[esp] + adc edx,DWORD PTR 20[esp] + mov DWORD PTR 8[esi],ecx + mov DWORD PTR 12[esi],edx + mov eax,DWORD PTR 16[esi] + mov ebx,DWORD PTR 20[esi] + mov ecx,DWORD PTR 24[esi] + mov edx,DWORD PTR 28[esi] + add eax,DWORD PTR 24[esp] + adc ebx,DWORD PTR 28[esp] + mov DWORD PTR 16[esi],eax + mov DWORD PTR 20[esi],ebx + add ecx,DWORD PTR 32[esp] + adc edx,DWORD PTR 36[esp] + mov DWORD PTR 24[esi],ecx + mov DWORD PTR 28[esi],edx + mov eax,DWORD PTR 32[esi] + mov ebx,DWORD PTR 36[esi] + mov ecx,DWORD PTR 40[esi] + mov edx,DWORD PTR 44[esi] + add eax,DWORD PTR 40[esp] + adc ebx,DWORD PTR 44[esp] + mov DWORD PTR 32[esi],eax + mov DWORD PTR 36[esi],ebx + add ecx,DWORD PTR 48[esp] + adc edx,DWORD PTR 52[esp] + mov DWORD PTR 40[esi],ecx + mov DWORD PTR 44[esi],edx + mov eax,DWORD PTR 48[esi] + mov ebx,DWORD PTR 52[esi] + mov ecx,DWORD PTR 56[esi] + mov edx,DWORD PTR 60[esi] + add eax,DWORD PTR 56[esp] + adc ebx,DWORD PTR 60[esp] + mov DWORD PTR 48[esi],eax + mov DWORD PTR 52[esi],ebx + add ecx,DWORD PTR 64[esp] + adc edx,DWORD PTR 68[esp] + mov DWORD PTR 56[esi],ecx + mov DWORD PTR 60[esi],edx + add esp,840 + sub ebp,640 + cmp edi,DWORD PTR 8[esp] + jb $L002loop_x86 + mov esp,DWORD PTR 12[esp] + pop edi + pop esi + pop ebx + pop ebp + ret +ALIGN 64 +$L001K512: +DD 3609767458,1116352408 +DD 602891725,1899447441 +DD 3964484399,3049323471 +DD 2173295548,3921009573 +DD 4081628472,961987163 +DD 3053834265,1508970993 +DD 2937671579,2453635748 +DD 3664609560,2870763221 +DD 2734883394,3624381080 +DD 1164996542,310598401 +DD 1323610764,607225278 +DD 3590304994,1426881987 +DD 4068182383,1925078388 +DD 991336113,2162078206 +DD 633803317,2614888103 +DD 3479774868,3248222580 +DD 2666613458,3835390401 +DD 944711139,4022224774 +DD 2341262773,264347078 +DD 2007800933,604807628 +DD 1495990901,770255983 +DD 1856431235,1249150122 +DD 3175218132,1555081692 +DD 2198950837,1996064986 +DD 3999719339,2554220882 +DD 766784016,2821834349 +DD 2566594879,2952996808 +DD 3203337956,3210313671 +DD 1034457026,3336571891 +DD 2466948901,3584528711 +DD 3758326383,113926993 +DD 168717936,338241895 +DD 1188179964,666307205 +DD 1546045734,773529912 +DD 1522805485,1294757372 +DD 2643833823,1396182291 +DD 2343527390,1695183700 +DD 1014477480,1986661051 +DD 1206759142,2177026350 +DD 344077627,2456956037 +DD 1290863460,2730485921 +DD 3158454273,2820302411 +DD 3505952657,3259730800 +DD 106217008,3345764771 +DD 3606008344,3516065817 +DD 1432725776,3600352804 +DD 1467031594,4094571909 +DD 851169720,275423344 +DD 3100823752,430227734 +DD 1363258195,506948616 +DD 3750685593,659060556 +DD 3785050280,883997877 +DD 3318307427,958139571 +DD 3812723403,1322822218 +DD 2003034995,1537002063 +DD 3602036899,1747873779 +DD 1575990012,1955562222 +DD 1125592928,2024104815 +DD 2716904306,2227730452 +DD 442776044,2361852424 +DD 593698344,2428436474 +DD 3733110249,2756734187 +DD 2999351573,3204031479 +DD 3815920427,3329325298 +DD 3928383900,3391569614 +DD 566280711,3515267271 +DD 3454069534,3940187606 +DD 4000239992,4118630271 +DD 1914138554,116418474 +DD 2731055270,174292421 +DD 3203993006,289380356 +DD 320620315,460393269 +DD 587496836,685471733 +DD 1086792851,852142971 +DD 365543100,1017036298 +DD 2618297676,1126000580 +DD 3409855158,1288033470 +DD 4234509866,1501505948 +DD 987167468,1607167915 +DD 1246189591,1816402316 +DD 67438087,66051 +DD 202182159,134810123 +_sha512_block_data_order ENDP +DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97 +DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32 +DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97 +DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103 +DB 62,0 +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +END diff --git a/contrib/libs/openssl/asm/windows/crypto/x86cpuid.masm b/contrib/libs/openssl/asm/windows/crypto/x86cpuid.masm index 1549b80cc8..2097c47e47 100644 --- a/contrib/libs/openssl/asm/windows/crypto/x86cpuid.masm +++ b/contrib/libs/openssl/asm/windows/crypto/x86cpuid.masm @@ -1,521 +1,521 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -ALIGN 16 -_OPENSSL_ia32_cpuid PROC PUBLIC -$L_OPENSSL_ia32_cpuid_begin:: - push ebp - push ebx - push esi - push edi - xor edx,edx - pushfd - pop eax - mov ecx,eax - xor eax,2097152 - push eax - popfd - pushfd - pop eax - xor ecx,eax - xor eax,eax - mov esi,DWORD PTR 20[esp] - mov DWORD PTR 8[esi],eax - bt ecx,21 - jnc $L000nocpuid - cpuid - mov edi,eax - xor eax,eax - cmp ebx,1970169159 - setne al - mov ebp,eax - cmp edx,1231384169 - setne al - or ebp,eax - cmp ecx,1818588270 - setne al - or ebp,eax - jz $L001intel - cmp ebx,1752462657 - setne al - mov esi,eax - cmp edx,1769238117 - setne al - or esi,eax - cmp ecx,1145913699 - setne al - or esi,eax - jnz $L001intel - mov eax,2147483648 - cpuid - cmp eax,2147483649 - jb $L001intel - mov esi,eax - mov eax,2147483649 - cpuid - or ebp,ecx - and ebp,2049 - cmp esi,2147483656 - jb $L001intel - mov eax,2147483656 - cpuid - movzx esi,cl - inc esi - mov eax,1 - xor ecx,ecx - cpuid - bt edx,28 - jnc $L002generic - shr ebx,16 - and ebx,255 - cmp ebx,esi - ja $L002generic - and edx,4026531839 - jmp $L002generic -$L001intel: - cmp edi,4 - mov esi,-1 - jb $L003nocacheinfo - mov eax,4 - mov ecx,0 - cpuid - mov esi,eax - shr esi,14 - and esi,4095 -$L003nocacheinfo: - mov eax,1 - xor ecx,ecx - cpuid - and edx,3220176895 - cmp ebp,0 - jne $L004notintel - or edx,1073741824 - and ah,15 - cmp ah,15 - jne $L004notintel - or edx,1048576 -$L004notintel: - bt edx,28 - jnc $L002generic - and edx,4026531839 - cmp esi,0 - je $L002generic - or edx,268435456 - shr ebx,16 - cmp bl,1 - ja $L002generic - and edx,4026531839 -$L002generic: - and ebp,2048 - and ecx,4294965247 - mov esi,edx - or ebp,ecx - cmp edi,7 - mov edi,DWORD PTR 20[esp] - jb $L005no_extended_info - mov eax,7 - xor ecx,ecx - cpuid - mov DWORD PTR 8[edi],ebx -$L005no_extended_info: - bt ebp,27 - jnc $L006clear_avx - xor ecx,ecx -DB 15,1,208 - and eax,6 - cmp eax,6 - je $L007done - cmp eax,2 - je $L006clear_avx -$L008clear_xmm: - and ebp,4261412861 - and esi,4278190079 -$L006clear_avx: - and ebp,4026525695 - and DWORD PTR 8[edi],4294967263 -$L007done: - mov eax,esi - mov edx,ebp -$L000nocpuid: - pop edi - pop esi - pop ebx - pop ebp - ret -_OPENSSL_ia32_cpuid ENDP -;EXTERN _OPENSSL_ia32cap_P:NEAR -ALIGN 16 -_OPENSSL_rdtsc PROC PUBLIC -$L_OPENSSL_rdtsc_begin:: - xor eax,eax - xor edx,edx - lea ecx,DWORD PTR _OPENSSL_ia32cap_P - bt DWORD PTR [ecx],4 - jnc $L009notsc - rdtsc -$L009notsc: - ret -_OPENSSL_rdtsc ENDP -ALIGN 16 -_OPENSSL_instrument_halt PROC PUBLIC -$L_OPENSSL_instrument_halt_begin:: - lea ecx,DWORD PTR _OPENSSL_ia32cap_P - bt DWORD PTR [ecx],4 - jnc $L010nohalt -DD 2421723150 - and eax,3 - jnz $L010nohalt - pushfd - pop eax - bt eax,9 - jnc $L010nohalt - rdtsc - push edx - push eax - hlt - rdtsc - sub eax,DWORD PTR [esp] - sbb edx,DWORD PTR 4[esp] - add esp,8 - ret -$L010nohalt: - xor eax,eax - xor edx,edx - ret -_OPENSSL_instrument_halt ENDP -ALIGN 16 -_OPENSSL_far_spin PROC PUBLIC -$L_OPENSSL_far_spin_begin:: - pushfd - pop eax - bt eax,9 - jnc $L011nospin - mov eax,DWORD PTR 4[esp] - mov ecx,DWORD PTR 8[esp] -DD 2430111262 - xor eax,eax - mov edx,DWORD PTR [ecx] - jmp $L012spin -ALIGN 16 -$L012spin: - inc eax - cmp edx,DWORD PTR [ecx] - je $L012spin -DD 529567888 - ret -$L011nospin: - xor eax,eax - xor edx,edx - ret -_OPENSSL_far_spin ENDP -ALIGN 16 -_OPENSSL_wipe_cpu PROC PUBLIC -$L_OPENSSL_wipe_cpu_begin:: - xor eax,eax - xor edx,edx - lea ecx,DWORD PTR _OPENSSL_ia32cap_P - mov ecx,DWORD PTR [ecx] - bt DWORD PTR [ecx],1 - jnc $L013no_x87 - and ecx,83886080 - cmp ecx,83886080 - jne $L014no_sse2 - pxor xmm0,xmm0 - pxor xmm1,xmm1 - pxor xmm2,xmm2 - pxor xmm3,xmm3 - pxor xmm4,xmm4 - pxor xmm5,xmm5 - pxor xmm6,xmm6 - pxor xmm7,xmm7 -$L014no_sse2: -DD 4007259865,4007259865,4007259865,4007259865 -DD 2430851995 -$L013no_x87: - lea eax,DWORD PTR 4[esp] - ret -_OPENSSL_wipe_cpu ENDP -ALIGN 16 -_OPENSSL_atomic_add PROC PUBLIC -$L_OPENSSL_atomic_add_begin:: - mov edx,DWORD PTR 4[esp] - mov ecx,DWORD PTR 8[esp] - push ebx - nop - mov eax,DWORD PTR [edx] -$L015spin: - lea ebx,DWORD PTR [ecx*1+eax] - nop -DD 447811568 - jne $L015spin - mov eax,ebx - pop ebx - ret -_OPENSSL_atomic_add ENDP -ALIGN 16 -_OPENSSL_cleanse PROC PUBLIC -$L_OPENSSL_cleanse_begin:: - mov edx,DWORD PTR 4[esp] - mov ecx,DWORD PTR 8[esp] - xor eax,eax - cmp ecx,7 - jae $L016lot - cmp ecx,0 - je $L017ret -$L018little: - mov BYTE PTR [edx],al - sub ecx,1 - lea edx,DWORD PTR 1[edx] - jnz $L018little -$L017ret: - ret -ALIGN 16 -$L016lot: - test edx,3 - jz $L019aligned - mov BYTE PTR [edx],al - lea ecx,DWORD PTR [ecx-1] - lea edx,DWORD PTR 1[edx] - jmp $L016lot -$L019aligned: - mov DWORD PTR [edx],eax - lea ecx,DWORD PTR [ecx-4] - test ecx,-4 - lea edx,DWORD PTR 4[edx] - jnz $L019aligned - cmp ecx,0 - jne $L018little - ret -_OPENSSL_cleanse ENDP -ALIGN 16 -_CRYPTO_memcmp PROC PUBLIC -$L_CRYPTO_memcmp_begin:: - push esi - push edi - mov esi,DWORD PTR 12[esp] - mov edi,DWORD PTR 16[esp] - mov ecx,DWORD PTR 20[esp] - xor eax,eax - xor edx,edx - cmp ecx,0 - je $L020no_data -$L021loop: - mov dl,BYTE PTR [esi] - lea esi,DWORD PTR 1[esi] - xor dl,BYTE PTR [edi] - lea edi,DWORD PTR 1[edi] - or al,dl - dec ecx - jnz $L021loop - neg eax - shr eax,31 -$L020no_data: - pop edi - pop esi - ret -_CRYPTO_memcmp ENDP -ALIGN 16 -_OPENSSL_instrument_bus PROC PUBLIC -$L_OPENSSL_instrument_bus_begin:: - push ebp - push ebx - push esi - push edi - mov eax,0 - lea edx,DWORD PTR _OPENSSL_ia32cap_P - bt DWORD PTR [edx],4 - jnc $L022nogo - bt DWORD PTR [edx],19 - jnc $L022nogo - mov edi,DWORD PTR 20[esp] - mov ecx,DWORD PTR 24[esp] - rdtsc - mov esi,eax - mov ebx,0 - clflush DWORD PTR [edi] -DB 240 - add DWORD PTR [edi],ebx - jmp $L023loop -ALIGN 16 -$L023loop: - rdtsc - mov edx,eax - sub eax,esi - mov esi,edx - mov ebx,eax - clflush DWORD PTR [edi] -DB 240 - add DWORD PTR [edi],eax - lea edi,DWORD PTR 4[edi] - sub ecx,1 - jnz $L023loop - mov eax,DWORD PTR 24[esp] -$L022nogo: - pop edi - pop esi - pop ebx - pop ebp - ret -_OPENSSL_instrument_bus ENDP -ALIGN 16 -_OPENSSL_instrument_bus2 PROC PUBLIC -$L_OPENSSL_instrument_bus2_begin:: - push ebp - push ebx - push esi - push edi - mov eax,0 - lea edx,DWORD PTR _OPENSSL_ia32cap_P - bt DWORD PTR [edx],4 - jnc $L024nogo - bt DWORD PTR [edx],19 - jnc $L024nogo - mov edi,DWORD PTR 20[esp] - mov ecx,DWORD PTR 24[esp] - mov ebp,DWORD PTR 28[esp] - rdtsc - mov esi,eax - mov ebx,0 - clflush DWORD PTR [edi] -DB 240 - add DWORD PTR [edi],ebx - rdtsc - mov edx,eax - sub eax,esi - mov esi,edx - mov ebx,eax - jmp $L025loop2 -ALIGN 16 -$L025loop2: - clflush DWORD PTR [edi] -DB 240 - add DWORD PTR [edi],eax - sub ebp,1 - jz $L026done2 - rdtsc - mov edx,eax - sub eax,esi - mov esi,edx - cmp eax,ebx - mov ebx,eax - mov edx,0 - setne dl - sub ecx,edx - lea edi,DWORD PTR [edx*4+edi] - jnz $L025loop2 -$L026done2: - mov eax,DWORD PTR 24[esp] - sub eax,ecx -$L024nogo: - pop edi - pop esi - pop ebx - pop ebp - ret -_OPENSSL_instrument_bus2 ENDP -ALIGN 16 -_OPENSSL_ia32_rdrand_bytes PROC PUBLIC -$L_OPENSSL_ia32_rdrand_bytes_begin:: - push edi - push ebx - xor eax,eax - mov edi,DWORD PTR 12[esp] - mov ebx,DWORD PTR 16[esp] - cmp ebx,0 - je $L027done - mov ecx,8 -$L028loop: -DB 15,199,242 - jc $L029break - loop $L028loop - jmp $L027done -ALIGN 16 -$L029break: - cmp ebx,4 - jb $L030tail - mov DWORD PTR [edi],edx - lea edi,DWORD PTR 4[edi] - add eax,4 - sub ebx,4 - jz $L027done - mov ecx,8 - jmp $L028loop -ALIGN 16 -$L030tail: - mov BYTE PTR [edi],dl - lea edi,DWORD PTR 1[edi] - inc eax - shr edx,8 - dec ebx - jnz $L030tail -$L027done: - xor edx,edx - pop ebx - pop edi - ret -_OPENSSL_ia32_rdrand_bytes ENDP -ALIGN 16 -_OPENSSL_ia32_rdseed_bytes PROC PUBLIC -$L_OPENSSL_ia32_rdseed_bytes_begin:: - push edi - push ebx - xor eax,eax - mov edi,DWORD PTR 12[esp] - mov ebx,DWORD PTR 16[esp] - cmp ebx,0 - je $L031done - mov ecx,8 -$L032loop: -DB 15,199,250 - jc $L033break - loop $L032loop - jmp $L031done -ALIGN 16 -$L033break: - cmp ebx,4 - jb $L034tail - mov DWORD PTR [edi],edx - lea edi,DWORD PTR 4[edi] - add eax,4 - sub ebx,4 - jz $L031done - mov ecx,8 - jmp $L032loop -ALIGN 16 -$L034tail: - mov BYTE PTR [edi],dl - lea edi,DWORD PTR 1[edi] - inc eax - shr edx,8 - dec ebx - jnz $L034tail -$L031done: - xor edx,edx - pop ebx - pop edi - ret -_OPENSSL_ia32_rdseed_bytes ENDP -.text$ ENDS -.bss SEGMENT 'BSS' -COMM _OPENSSL_ia32cap_P:DWORD:4 -.bss ENDS -.CRT$XCU SEGMENT DWORD PUBLIC 'DATA' -EXTERN _OPENSSL_cpuid_setup:NEAR -DD _OPENSSL_cpuid_setup -.CRT$XCU ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +ALIGN 16 +_OPENSSL_ia32_cpuid PROC PUBLIC +$L_OPENSSL_ia32_cpuid_begin:: + push ebp + push ebx + push esi + push edi + xor edx,edx + pushfd + pop eax + mov ecx,eax + xor eax,2097152 + push eax + popfd + pushfd + pop eax + xor ecx,eax + xor eax,eax + mov esi,DWORD PTR 20[esp] + mov DWORD PTR 8[esi],eax + bt ecx,21 + jnc $L000nocpuid + cpuid + mov edi,eax + xor eax,eax + cmp ebx,1970169159 + setne al + mov ebp,eax + cmp edx,1231384169 + setne al + or ebp,eax + cmp ecx,1818588270 + setne al + or ebp,eax + jz $L001intel + cmp ebx,1752462657 + setne al + mov esi,eax + cmp edx,1769238117 + setne al + or esi,eax + cmp ecx,1145913699 + setne al + or esi,eax + jnz $L001intel + mov eax,2147483648 + cpuid + cmp eax,2147483649 + jb $L001intel + mov esi,eax + mov eax,2147483649 + cpuid + or ebp,ecx + and ebp,2049 + cmp esi,2147483656 + jb $L001intel + mov eax,2147483656 + cpuid + movzx esi,cl + inc esi + mov eax,1 + xor ecx,ecx + cpuid + bt edx,28 + jnc $L002generic + shr ebx,16 + and ebx,255 + cmp ebx,esi + ja $L002generic + and edx,4026531839 + jmp $L002generic +$L001intel: + cmp edi,4 + mov esi,-1 + jb $L003nocacheinfo + mov eax,4 + mov ecx,0 + cpuid + mov esi,eax + shr esi,14 + and esi,4095 +$L003nocacheinfo: + mov eax,1 + xor ecx,ecx + cpuid + and edx,3220176895 + cmp ebp,0 + jne $L004notintel + or edx,1073741824 + and ah,15 + cmp ah,15 + jne $L004notintel + or edx,1048576 +$L004notintel: + bt edx,28 + jnc $L002generic + and edx,4026531839 + cmp esi,0 + je $L002generic + or edx,268435456 + shr ebx,16 + cmp bl,1 + ja $L002generic + and edx,4026531839 +$L002generic: + and ebp,2048 + and ecx,4294965247 + mov esi,edx + or ebp,ecx + cmp edi,7 + mov edi,DWORD PTR 20[esp] + jb $L005no_extended_info + mov eax,7 + xor ecx,ecx + cpuid + mov DWORD PTR 8[edi],ebx +$L005no_extended_info: + bt ebp,27 + jnc $L006clear_avx + xor ecx,ecx +DB 15,1,208 + and eax,6 + cmp eax,6 + je $L007done + cmp eax,2 + je $L006clear_avx +$L008clear_xmm: + and ebp,4261412861 + and esi,4278190079 +$L006clear_avx: + and ebp,4026525695 + and DWORD PTR 8[edi],4294967263 +$L007done: + mov eax,esi + mov edx,ebp +$L000nocpuid: + pop edi + pop esi + pop ebx + pop ebp + ret +_OPENSSL_ia32_cpuid ENDP +;EXTERN _OPENSSL_ia32cap_P:NEAR +ALIGN 16 +_OPENSSL_rdtsc PROC PUBLIC +$L_OPENSSL_rdtsc_begin:: + xor eax,eax + xor edx,edx + lea ecx,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [ecx],4 + jnc $L009notsc + rdtsc +$L009notsc: + ret +_OPENSSL_rdtsc ENDP +ALIGN 16 +_OPENSSL_instrument_halt PROC PUBLIC +$L_OPENSSL_instrument_halt_begin:: + lea ecx,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [ecx],4 + jnc $L010nohalt +DD 2421723150 + and eax,3 + jnz $L010nohalt + pushfd + pop eax + bt eax,9 + jnc $L010nohalt + rdtsc + push edx + push eax + hlt + rdtsc + sub eax,DWORD PTR [esp] + sbb edx,DWORD PTR 4[esp] + add esp,8 + ret +$L010nohalt: + xor eax,eax + xor edx,edx + ret +_OPENSSL_instrument_halt ENDP +ALIGN 16 +_OPENSSL_far_spin PROC PUBLIC +$L_OPENSSL_far_spin_begin:: + pushfd + pop eax + bt eax,9 + jnc $L011nospin + mov eax,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] +DD 2430111262 + xor eax,eax + mov edx,DWORD PTR [ecx] + jmp $L012spin +ALIGN 16 +$L012spin: + inc eax + cmp edx,DWORD PTR [ecx] + je $L012spin +DD 529567888 + ret +$L011nospin: + xor eax,eax + xor edx,edx + ret +_OPENSSL_far_spin ENDP +ALIGN 16 +_OPENSSL_wipe_cpu PROC PUBLIC +$L_OPENSSL_wipe_cpu_begin:: + xor eax,eax + xor edx,edx + lea ecx,DWORD PTR _OPENSSL_ia32cap_P + mov ecx,DWORD PTR [ecx] + bt DWORD PTR [ecx],1 + jnc $L013no_x87 + and ecx,83886080 + cmp ecx,83886080 + jne $L014no_sse2 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + pxor xmm6,xmm6 + pxor xmm7,xmm7 +$L014no_sse2: +DD 4007259865,4007259865,4007259865,4007259865 +DD 2430851995 +$L013no_x87: + lea eax,DWORD PTR 4[esp] + ret +_OPENSSL_wipe_cpu ENDP +ALIGN 16 +_OPENSSL_atomic_add PROC PUBLIC +$L_OPENSSL_atomic_add_begin:: + mov edx,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] + push ebx + nop + mov eax,DWORD PTR [edx] +$L015spin: + lea ebx,DWORD PTR [ecx*1+eax] + nop +DD 447811568 + jne $L015spin + mov eax,ebx + pop ebx + ret +_OPENSSL_atomic_add ENDP +ALIGN 16 +_OPENSSL_cleanse PROC PUBLIC +$L_OPENSSL_cleanse_begin:: + mov edx,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] + xor eax,eax + cmp ecx,7 + jae $L016lot + cmp ecx,0 + je $L017ret +$L018little: + mov BYTE PTR [edx],al + sub ecx,1 + lea edx,DWORD PTR 1[edx] + jnz $L018little +$L017ret: + ret +ALIGN 16 +$L016lot: + test edx,3 + jz $L019aligned + mov BYTE PTR [edx],al + lea ecx,DWORD PTR [ecx-1] + lea edx,DWORD PTR 1[edx] + jmp $L016lot +$L019aligned: + mov DWORD PTR [edx],eax + lea ecx,DWORD PTR [ecx-4] + test ecx,-4 + lea edx,DWORD PTR 4[edx] + jnz $L019aligned + cmp ecx,0 + jne $L018little + ret +_OPENSSL_cleanse ENDP +ALIGN 16 +_CRYPTO_memcmp PROC PUBLIC +$L_CRYPTO_memcmp_begin:: + push esi + push edi + mov esi,DWORD PTR 12[esp] + mov edi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + xor eax,eax + xor edx,edx + cmp ecx,0 + je $L020no_data +$L021loop: + mov dl,BYTE PTR [esi] + lea esi,DWORD PTR 1[esi] + xor dl,BYTE PTR [edi] + lea edi,DWORD PTR 1[edi] + or al,dl + dec ecx + jnz $L021loop + neg eax + shr eax,31 +$L020no_data: + pop edi + pop esi + ret +_CRYPTO_memcmp ENDP +ALIGN 16 +_OPENSSL_instrument_bus PROC PUBLIC +$L_OPENSSL_instrument_bus_begin:: + push ebp + push ebx + push esi + push edi + mov eax,0 + lea edx,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [edx],4 + jnc $L022nogo + bt DWORD PTR [edx],19 + jnc $L022nogo + mov edi,DWORD PTR 20[esp] + mov ecx,DWORD PTR 24[esp] + rdtsc + mov esi,eax + mov ebx,0 + clflush DWORD PTR [edi] +DB 240 + add DWORD PTR [edi],ebx + jmp $L023loop +ALIGN 16 +$L023loop: + rdtsc + mov edx,eax + sub eax,esi + mov esi,edx + mov ebx,eax + clflush DWORD PTR [edi] +DB 240 + add DWORD PTR [edi],eax + lea edi,DWORD PTR 4[edi] + sub ecx,1 + jnz $L023loop + mov eax,DWORD PTR 24[esp] +$L022nogo: + pop edi + pop esi + pop ebx + pop ebp + ret +_OPENSSL_instrument_bus ENDP +ALIGN 16 +_OPENSSL_instrument_bus2 PROC PUBLIC +$L_OPENSSL_instrument_bus2_begin:: + push ebp + push ebx + push esi + push edi + mov eax,0 + lea edx,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [edx],4 + jnc $L024nogo + bt DWORD PTR [edx],19 + jnc $L024nogo + mov edi,DWORD PTR 20[esp] + mov ecx,DWORD PTR 24[esp] + mov ebp,DWORD PTR 28[esp] + rdtsc + mov esi,eax + mov ebx,0 + clflush DWORD PTR [edi] +DB 240 + add DWORD PTR [edi],ebx + rdtsc + mov edx,eax + sub eax,esi + mov esi,edx + mov ebx,eax + jmp $L025loop2 +ALIGN 16 +$L025loop2: + clflush DWORD PTR [edi] +DB 240 + add DWORD PTR [edi],eax + sub ebp,1 + jz $L026done2 + rdtsc + mov edx,eax + sub eax,esi + mov esi,edx + cmp eax,ebx + mov ebx,eax + mov edx,0 + setne dl + sub ecx,edx + lea edi,DWORD PTR [edx*4+edi] + jnz $L025loop2 +$L026done2: + mov eax,DWORD PTR 24[esp] + sub eax,ecx +$L024nogo: + pop edi + pop esi + pop ebx + pop ebp + ret +_OPENSSL_instrument_bus2 ENDP +ALIGN 16 +_OPENSSL_ia32_rdrand_bytes PROC PUBLIC +$L_OPENSSL_ia32_rdrand_bytes_begin:: + push edi + push ebx + xor eax,eax + mov edi,DWORD PTR 12[esp] + mov ebx,DWORD PTR 16[esp] + cmp ebx,0 + je $L027done + mov ecx,8 +$L028loop: +DB 15,199,242 + jc $L029break + loop $L028loop + jmp $L027done +ALIGN 16 +$L029break: + cmp ebx,4 + jb $L030tail + mov DWORD PTR [edi],edx + lea edi,DWORD PTR 4[edi] + add eax,4 + sub ebx,4 + jz $L027done + mov ecx,8 + jmp $L028loop +ALIGN 16 +$L030tail: + mov BYTE PTR [edi],dl + lea edi,DWORD PTR 1[edi] + inc eax + shr edx,8 + dec ebx + jnz $L030tail +$L027done: + xor edx,edx + pop ebx + pop edi + ret +_OPENSSL_ia32_rdrand_bytes ENDP +ALIGN 16 +_OPENSSL_ia32_rdseed_bytes PROC PUBLIC +$L_OPENSSL_ia32_rdseed_bytes_begin:: + push edi + push ebx + xor eax,eax + mov edi,DWORD PTR 12[esp] + mov ebx,DWORD PTR 16[esp] + cmp ebx,0 + je $L031done + mov ecx,8 +$L032loop: +DB 15,199,250 + jc $L033break + loop $L032loop + jmp $L031done +ALIGN 16 +$L033break: + cmp ebx,4 + jb $L034tail + mov DWORD PTR [edi],edx + lea edi,DWORD PTR 4[edi] + add eax,4 + sub ebx,4 + jz $L031done + mov ecx,8 + jmp $L032loop +ALIGN 16 +$L034tail: + mov BYTE PTR [edi],dl + lea edi,DWORD PTR 1[edi] + inc eax + shr edx,8 + dec ebx + jnz $L034tail +$L031done: + xor edx,edx + pop ebx + pop edi + ret +_OPENSSL_ia32_rdseed_bytes ENDP +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +.CRT$XCU SEGMENT DWORD PUBLIC 'DATA' +EXTERN _OPENSSL_cpuid_setup:NEAR +DD _OPENSSL_cpuid_setup +.CRT$XCU ENDS +END diff --git a/contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm b/contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm index cd8dbcbb15..ed83a736f2 100644 --- a/contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm +++ b/contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm @@ -1,1037 +1,1037 @@ -IF @Version LT 800 -ECHO MASM version 8.00 or later is strongly recommended. -ENDIF -.686 -.XMM -IF @Version LT 800 -XMMWORD STRUCT 16 -DQ 2 dup (?) -XMMWORD ENDS -ENDIF - -.MODEL FLAT -OPTION DOTNAME -IF @Version LT 800 -.text$ SEGMENT PAGE 'CODE' -ELSE -.text$ SEGMENT ALIGN(64) 'CODE' -ENDIF -ALIGN 16 -_padlock_capability PROC PUBLIC -$L_padlock_capability_begin:: - push ebx - pushfd - pop eax - mov ecx,eax - xor eax,2097152 - push eax - popfd - pushfd - pop eax - xor ecx,eax - xor eax,eax - bt ecx,21 - jnc $L000noluck - cpuid - xor eax,eax - cmp ebx,0746e6543h - jne $L001zhaoxin - cmp edx,048727561h - jne $L000noluck - cmp ecx,0736c7561h - jne $L000noluck - jmp $L002zhaoxinEnd -$L001zhaoxin: - cmp ebx,068532020h - jne $L000noluck - cmp edx,068676e61h - jne $L000noluck - cmp ecx,020206961h - jne $L000noluck -$L002zhaoxinEnd: - mov eax,3221225472 - cpuid - mov edx,eax - xor eax,eax - cmp edx,3221225473 - jb $L000noluck - mov eax,1 - cpuid - or eax,15 - xor ebx,ebx - and eax,4095 - cmp eax,1791 - sete bl - mov eax,3221225473 - push ebx - cpuid - pop ebx - mov eax,edx - shl ebx,4 - and eax,4294967279 - or eax,ebx -$L000noluck: - pop ebx - ret -_padlock_capability ENDP -ALIGN 16 -_padlock_key_bswap PROC PUBLIC -$L_padlock_key_bswap_begin:: - mov edx,DWORD PTR 4[esp] - mov ecx,DWORD PTR 240[edx] -$L003bswap_loop: - mov eax,DWORD PTR [edx] - bswap eax - mov DWORD PTR [edx],eax - lea edx,DWORD PTR 4[edx] - sub ecx,1 - jnz $L003bswap_loop - ret -_padlock_key_bswap ENDP -ALIGN 16 -_padlock_verify_context PROC PUBLIC -$L_padlock_verify_context_begin:: - mov edx,DWORD PTR 4[esp] - lea eax,DWORD PTR $Lpadlock_saved_context - pushfd - call __padlock_verify_ctx -$L004verify_pic_point: - lea esp,DWORD PTR 4[esp] - ret -_padlock_verify_context ENDP -ALIGN 16 -__padlock_verify_ctx PROC PRIVATE - bt DWORD PTR 4[esp],30 - jnc $L005verified - cmp edx,DWORD PTR [eax] - je $L005verified - pushfd - popfd -$L005verified: - mov DWORD PTR [eax],edx - ret -__padlock_verify_ctx ENDP -ALIGN 16 -_padlock_reload_key PROC PUBLIC -$L_padlock_reload_key_begin:: - pushfd - popfd - ret -_padlock_reload_key ENDP -ALIGN 16 -_padlock_aes_block PROC PUBLIC -$L_padlock_aes_block_begin:: - push edi - push esi - push ebx - mov edi,DWORD PTR 16[esp] - mov esi,DWORD PTR 20[esp] - mov edx,DWORD PTR 24[esp] - mov ecx,1 - lea ebx,DWORD PTR 32[edx] - lea edx,DWORD PTR 16[edx] -DB 243,15,167,200 - pop ebx - pop esi - pop edi - ret -_padlock_aes_block ENDP -ALIGN 16 -_padlock_ecb_encrypt PROC PUBLIC -$L_padlock_ecb_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov edi,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov edx,DWORD PTR 28[esp] - mov ecx,DWORD PTR 32[esp] - test edx,15 - jnz $L006ecb_abort - test ecx,15 - jnz $L006ecb_abort - lea eax,DWORD PTR $Lpadlock_saved_context - pushfd - cld - call __padlock_verify_ctx -$L007ecb_pic_point: - lea edx,DWORD PTR 16[edx] - xor eax,eax - xor ebx,ebx - test DWORD PTR [edx],32 - jnz $L008ecb_aligned - test edi,15 - setz al - test esi,15 - setz bl - test eax,ebx - jnz $L008ecb_aligned - neg eax - mov ebx,512 - not eax - lea ebp,DWORD PTR [esp-24] - cmp ecx,ebx - cmovc ebx,ecx - and eax,ebx - mov ebx,ecx - neg eax - and ebx,511 - lea esp,DWORD PTR [ebp*1+eax] - mov eax,512 - cmovz ebx,eax - mov eax,ebp - and ebp,-16 - and esp,-16 - mov DWORD PTR 16[ebp],eax - cmp ecx,ebx - ja $L009ecb_loop - mov eax,esi - cmp ebp,esp - cmove eax,edi - add eax,ecx - neg eax - and eax,4095 - cmp eax,128 - mov eax,-128 - cmovae eax,ebx - and ebx,eax - jz $L010ecb_unaligned_tail - jmp $L009ecb_loop -ALIGN 16 -$L009ecb_loop: - mov DWORD PTR [ebp],edi - mov DWORD PTR 4[ebp],esi - mov DWORD PTR 8[ebp],ecx - mov ecx,ebx - mov DWORD PTR 12[ebp],ebx - test edi,15 - cmovnz edi,esp - test esi,15 - jz $L011ecb_inp_aligned - shr ecx,2 -DB 243,165 - sub edi,ebx - mov ecx,ebx - mov esi,edi -$L011ecb_inp_aligned: - lea eax,DWORD PTR [edx-16] - lea ebx,DWORD PTR 16[edx] - shr ecx,4 -DB 243,15,167,200 - mov edi,DWORD PTR [ebp] - mov ebx,DWORD PTR 12[ebp] - test edi,15 - jz $L012ecb_out_aligned - mov ecx,ebx - lea esi,DWORD PTR [esp] - shr ecx,2 -DB 243,165 - sub edi,ebx -$L012ecb_out_aligned: - mov esi,DWORD PTR 4[ebp] - mov ecx,DWORD PTR 8[ebp] - add edi,ebx - add esi,ebx - sub ecx,ebx - mov ebx,512 - jz $L013ecb_break - cmp ecx,ebx - jae $L009ecb_loop -$L010ecb_unaligned_tail: - xor eax,eax - cmp esp,ebp - cmove eax,ecx - sub esp,eax - mov eax,edi - mov ebx,ecx - shr ecx,2 - lea edi,DWORD PTR [esp] -DB 243,165 - mov esi,esp - mov edi,eax - mov ecx,ebx - jmp $L009ecb_loop -ALIGN 16 -$L013ecb_break: - cmp esp,ebp - je $L014ecb_done - pxor xmm0,xmm0 - lea eax,DWORD PTR [esp] -$L015ecb_bzero: - movaps XMMWORD PTR [eax],xmm0 - lea eax,DWORD PTR 16[eax] - cmp ebp,eax - ja $L015ecb_bzero -$L014ecb_done: - mov ebp,DWORD PTR 16[ebp] - lea esp,DWORD PTR 24[ebp] - jmp $L016ecb_exit -ALIGN 16 -$L008ecb_aligned: - lea ebp,DWORD PTR [ecx*1+esi] - neg ebp - and ebp,4095 - xor eax,eax - cmp ebp,128 - mov ebp,127 - cmovae ebp,eax - and ebp,ecx - sub ecx,ebp - jz $L017ecb_aligned_tail - lea eax,DWORD PTR [edx-16] - lea ebx,DWORD PTR 16[edx] - shr ecx,4 -DB 243,15,167,200 - test ebp,ebp - jz $L016ecb_exit -$L017ecb_aligned_tail: - mov ecx,ebp - lea ebp,DWORD PTR [esp-24] - mov esp,ebp - mov eax,ebp - sub esp,ecx - and ebp,-16 - and esp,-16 - mov DWORD PTR 16[ebp],eax - mov eax,edi - mov ebx,ecx - shr ecx,2 - lea edi,DWORD PTR [esp] -DB 243,165 - mov esi,esp - mov edi,eax - mov ecx,ebx - jmp $L009ecb_loop -$L016ecb_exit: - mov eax,1 - lea esp,DWORD PTR 4[esp] -$L006ecb_abort: - pop edi - pop esi - pop ebx - pop ebp - ret -_padlock_ecb_encrypt ENDP -ALIGN 16 -_padlock_cbc_encrypt PROC PUBLIC -$L_padlock_cbc_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov edi,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov edx,DWORD PTR 28[esp] - mov ecx,DWORD PTR 32[esp] - test edx,15 - jnz $L018cbc_abort - test ecx,15 - jnz $L018cbc_abort - lea eax,DWORD PTR $Lpadlock_saved_context - pushfd - cld - call __padlock_verify_ctx -$L019cbc_pic_point: - lea edx,DWORD PTR 16[edx] - xor eax,eax - xor ebx,ebx - test DWORD PTR [edx],32 - jnz $L020cbc_aligned - test edi,15 - setz al - test esi,15 - setz bl - test eax,ebx - jnz $L020cbc_aligned - neg eax - mov ebx,512 - not eax - lea ebp,DWORD PTR [esp-24] - cmp ecx,ebx - cmovc ebx,ecx - and eax,ebx - mov ebx,ecx - neg eax - and ebx,511 - lea esp,DWORD PTR [ebp*1+eax] - mov eax,512 - cmovz ebx,eax - mov eax,ebp - and ebp,-16 - and esp,-16 - mov DWORD PTR 16[ebp],eax - cmp ecx,ebx - ja $L021cbc_loop - mov eax,esi - cmp ebp,esp - cmove eax,edi - add eax,ecx - neg eax - and eax,4095 - cmp eax,64 - mov eax,-64 - cmovae eax,ebx - and ebx,eax - jz $L022cbc_unaligned_tail - jmp $L021cbc_loop -ALIGN 16 -$L021cbc_loop: - mov DWORD PTR [ebp],edi - mov DWORD PTR 4[ebp],esi - mov DWORD PTR 8[ebp],ecx - mov ecx,ebx - mov DWORD PTR 12[ebp],ebx - test edi,15 - cmovnz edi,esp - test esi,15 - jz $L023cbc_inp_aligned - shr ecx,2 -DB 243,165 - sub edi,ebx - mov ecx,ebx - mov esi,edi -$L023cbc_inp_aligned: - lea eax,DWORD PTR [edx-16] - lea ebx,DWORD PTR 16[edx] - shr ecx,4 -DB 243,15,167,208 - movaps xmm0,XMMWORD PTR [eax] - movaps XMMWORD PTR [edx-16],xmm0 - mov edi,DWORD PTR [ebp] - mov ebx,DWORD PTR 12[ebp] - test edi,15 - jz $L024cbc_out_aligned - mov ecx,ebx - lea esi,DWORD PTR [esp] - shr ecx,2 -DB 243,165 - sub edi,ebx -$L024cbc_out_aligned: - mov esi,DWORD PTR 4[ebp] - mov ecx,DWORD PTR 8[ebp] - add edi,ebx - add esi,ebx - sub ecx,ebx - mov ebx,512 - jz $L025cbc_break - cmp ecx,ebx - jae $L021cbc_loop -$L022cbc_unaligned_tail: - xor eax,eax - cmp esp,ebp - cmove eax,ecx - sub esp,eax - mov eax,edi - mov ebx,ecx - shr ecx,2 - lea edi,DWORD PTR [esp] -DB 243,165 - mov esi,esp - mov edi,eax - mov ecx,ebx - jmp $L021cbc_loop -ALIGN 16 -$L025cbc_break: - cmp esp,ebp - je $L026cbc_done - pxor xmm0,xmm0 - lea eax,DWORD PTR [esp] -$L027cbc_bzero: - movaps XMMWORD PTR [eax],xmm0 - lea eax,DWORD PTR 16[eax] - cmp ebp,eax - ja $L027cbc_bzero -$L026cbc_done: - mov ebp,DWORD PTR 16[ebp] - lea esp,DWORD PTR 24[ebp] - jmp $L028cbc_exit -ALIGN 16 -$L020cbc_aligned: - lea ebp,DWORD PTR [ecx*1+esi] - neg ebp - and ebp,4095 - xor eax,eax - cmp ebp,64 - mov ebp,63 - cmovae ebp,eax - and ebp,ecx - sub ecx,ebp - jz $L029cbc_aligned_tail - lea eax,DWORD PTR [edx-16] - lea ebx,DWORD PTR 16[edx] - shr ecx,4 -DB 243,15,167,208 - movaps xmm0,XMMWORD PTR [eax] - movaps XMMWORD PTR [edx-16],xmm0 - test ebp,ebp - jz $L028cbc_exit -$L029cbc_aligned_tail: - mov ecx,ebp - lea ebp,DWORD PTR [esp-24] - mov esp,ebp - mov eax,ebp - sub esp,ecx - and ebp,-16 - and esp,-16 - mov DWORD PTR 16[ebp],eax - mov eax,edi - mov ebx,ecx - shr ecx,2 - lea edi,DWORD PTR [esp] -DB 243,165 - mov esi,esp - mov edi,eax - mov ecx,ebx - jmp $L021cbc_loop -$L028cbc_exit: - mov eax,1 - lea esp,DWORD PTR 4[esp] -$L018cbc_abort: - pop edi - pop esi - pop ebx - pop ebp - ret -_padlock_cbc_encrypt ENDP -ALIGN 16 -_padlock_cfb_encrypt PROC PUBLIC -$L_padlock_cfb_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov edi,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov edx,DWORD PTR 28[esp] - mov ecx,DWORD PTR 32[esp] - test edx,15 - jnz $L030cfb_abort - test ecx,15 - jnz $L030cfb_abort - lea eax,DWORD PTR $Lpadlock_saved_context - pushfd - cld - call __padlock_verify_ctx -$L031cfb_pic_point: - lea edx,DWORD PTR 16[edx] - xor eax,eax - xor ebx,ebx - test DWORD PTR [edx],32 - jnz $L032cfb_aligned - test edi,15 - setz al - test esi,15 - setz bl - test eax,ebx - jnz $L032cfb_aligned - neg eax - mov ebx,512 - not eax - lea ebp,DWORD PTR [esp-24] - cmp ecx,ebx - cmovc ebx,ecx - and eax,ebx - mov ebx,ecx - neg eax - and ebx,511 - lea esp,DWORD PTR [ebp*1+eax] - mov eax,512 - cmovz ebx,eax - mov eax,ebp - and ebp,-16 - and esp,-16 - mov DWORD PTR 16[ebp],eax - jmp $L033cfb_loop -ALIGN 16 -$L033cfb_loop: - mov DWORD PTR [ebp],edi - mov DWORD PTR 4[ebp],esi - mov DWORD PTR 8[ebp],ecx - mov ecx,ebx - mov DWORD PTR 12[ebp],ebx - test edi,15 - cmovnz edi,esp - test esi,15 - jz $L034cfb_inp_aligned - shr ecx,2 -DB 243,165 - sub edi,ebx - mov ecx,ebx - mov esi,edi -$L034cfb_inp_aligned: - lea eax,DWORD PTR [edx-16] - lea ebx,DWORD PTR 16[edx] - shr ecx,4 -DB 243,15,167,224 - movaps xmm0,XMMWORD PTR [eax] - movaps XMMWORD PTR [edx-16],xmm0 - mov edi,DWORD PTR [ebp] - mov ebx,DWORD PTR 12[ebp] - test edi,15 - jz $L035cfb_out_aligned - mov ecx,ebx - lea esi,DWORD PTR [esp] - shr ecx,2 -DB 243,165 - sub edi,ebx -$L035cfb_out_aligned: - mov esi,DWORD PTR 4[ebp] - mov ecx,DWORD PTR 8[ebp] - add edi,ebx - add esi,ebx - sub ecx,ebx - mov ebx,512 - jnz $L033cfb_loop - cmp esp,ebp - je $L036cfb_done - pxor xmm0,xmm0 - lea eax,DWORD PTR [esp] -$L037cfb_bzero: - movaps XMMWORD PTR [eax],xmm0 - lea eax,DWORD PTR 16[eax] - cmp ebp,eax - ja $L037cfb_bzero -$L036cfb_done: - mov ebp,DWORD PTR 16[ebp] - lea esp,DWORD PTR 24[ebp] - jmp $L038cfb_exit -ALIGN 16 -$L032cfb_aligned: - lea eax,DWORD PTR [edx-16] - lea ebx,DWORD PTR 16[edx] - shr ecx,4 -DB 243,15,167,224 - movaps xmm0,XMMWORD PTR [eax] - movaps XMMWORD PTR [edx-16],xmm0 -$L038cfb_exit: - mov eax,1 - lea esp,DWORD PTR 4[esp] -$L030cfb_abort: - pop edi - pop esi - pop ebx - pop ebp - ret -_padlock_cfb_encrypt ENDP -ALIGN 16 -_padlock_ofb_encrypt PROC PUBLIC -$L_padlock_ofb_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov edi,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov edx,DWORD PTR 28[esp] - mov ecx,DWORD PTR 32[esp] - test edx,15 - jnz $L039ofb_abort - test ecx,15 - jnz $L039ofb_abort - lea eax,DWORD PTR $Lpadlock_saved_context - pushfd - cld - call __padlock_verify_ctx -$L040ofb_pic_point: - lea edx,DWORD PTR 16[edx] - xor eax,eax - xor ebx,ebx - test DWORD PTR [edx],32 - jnz $L041ofb_aligned - test edi,15 - setz al - test esi,15 - setz bl - test eax,ebx - jnz $L041ofb_aligned - neg eax - mov ebx,512 - not eax - lea ebp,DWORD PTR [esp-24] - cmp ecx,ebx - cmovc ebx,ecx - and eax,ebx - mov ebx,ecx - neg eax - and ebx,511 - lea esp,DWORD PTR [ebp*1+eax] - mov eax,512 - cmovz ebx,eax - mov eax,ebp - and ebp,-16 - and esp,-16 - mov DWORD PTR 16[ebp],eax - jmp $L042ofb_loop -ALIGN 16 -$L042ofb_loop: - mov DWORD PTR [ebp],edi - mov DWORD PTR 4[ebp],esi - mov DWORD PTR 8[ebp],ecx - mov ecx,ebx - mov DWORD PTR 12[ebp],ebx - test edi,15 - cmovnz edi,esp - test esi,15 - jz $L043ofb_inp_aligned - shr ecx,2 -DB 243,165 - sub edi,ebx - mov ecx,ebx - mov esi,edi -$L043ofb_inp_aligned: - lea eax,DWORD PTR [edx-16] - lea ebx,DWORD PTR 16[edx] - shr ecx,4 -DB 243,15,167,232 - movaps xmm0,XMMWORD PTR [eax] - movaps XMMWORD PTR [edx-16],xmm0 - mov edi,DWORD PTR [ebp] - mov ebx,DWORD PTR 12[ebp] - test edi,15 - jz $L044ofb_out_aligned - mov ecx,ebx - lea esi,DWORD PTR [esp] - shr ecx,2 -DB 243,165 - sub edi,ebx -$L044ofb_out_aligned: - mov esi,DWORD PTR 4[ebp] - mov ecx,DWORD PTR 8[ebp] - add edi,ebx - add esi,ebx - sub ecx,ebx - mov ebx,512 - jnz $L042ofb_loop - cmp esp,ebp - je $L045ofb_done - pxor xmm0,xmm0 - lea eax,DWORD PTR [esp] -$L046ofb_bzero: - movaps XMMWORD PTR [eax],xmm0 - lea eax,DWORD PTR 16[eax] - cmp ebp,eax - ja $L046ofb_bzero -$L045ofb_done: - mov ebp,DWORD PTR 16[ebp] - lea esp,DWORD PTR 24[ebp] - jmp $L047ofb_exit -ALIGN 16 -$L041ofb_aligned: - lea eax,DWORD PTR [edx-16] - lea ebx,DWORD PTR 16[edx] - shr ecx,4 -DB 243,15,167,232 - movaps xmm0,XMMWORD PTR [eax] - movaps XMMWORD PTR [edx-16],xmm0 -$L047ofb_exit: - mov eax,1 - lea esp,DWORD PTR 4[esp] -$L039ofb_abort: - pop edi - pop esi - pop ebx - pop ebp - ret -_padlock_ofb_encrypt ENDP -ALIGN 16 -_padlock_ctr32_encrypt PROC PUBLIC -$L_padlock_ctr32_encrypt_begin:: - push ebp - push ebx - push esi - push edi - mov edi,DWORD PTR 20[esp] - mov esi,DWORD PTR 24[esp] - mov edx,DWORD PTR 28[esp] - mov ecx,DWORD PTR 32[esp] - test edx,15 - jnz $L048ctr32_abort - test ecx,15 - jnz $L048ctr32_abort - lea eax,DWORD PTR $Lpadlock_saved_context - pushfd - cld - call __padlock_verify_ctx -$L049ctr32_pic_point: - lea edx,DWORD PTR 16[edx] - xor eax,eax - movq mm0,QWORD PTR [edx-16] - mov ebx,512 - not eax - lea ebp,DWORD PTR [esp-24] - cmp ecx,ebx - cmovc ebx,ecx - and eax,ebx - mov ebx,ecx - neg eax - and ebx,511 - lea esp,DWORD PTR [ebp*1+eax] - mov eax,512 - cmovz ebx,eax - mov eax,ebp - and ebp,-16 - and esp,-16 - mov DWORD PTR 16[ebp],eax - jmp $L050ctr32_loop -ALIGN 16 -$L050ctr32_loop: - mov DWORD PTR [ebp],edi - mov DWORD PTR 4[ebp],esi - mov DWORD PTR 8[ebp],ecx - mov ecx,ebx - mov DWORD PTR 12[ebp],ebx - mov ecx,DWORD PTR [edx-4] - xor edi,edi - mov eax,DWORD PTR [edx-8] -$L051ctr32_prepare: - mov DWORD PTR 12[edi*1+esp],ecx - bswap ecx - movq QWORD PTR [edi*1+esp],mm0 - inc ecx - mov DWORD PTR 8[edi*1+esp],eax - bswap ecx - lea edi,DWORD PTR 16[edi] - cmp edi,ebx - jb $L051ctr32_prepare - mov DWORD PTR [edx-4],ecx - lea esi,DWORD PTR [esp] - lea edi,DWORD PTR [esp] - mov ecx,ebx - lea eax,DWORD PTR [edx-16] - lea ebx,DWORD PTR 16[edx] - shr ecx,4 -DB 243,15,167,200 - mov edi,DWORD PTR [ebp] - mov ebx,DWORD PTR 12[ebp] - mov esi,DWORD PTR 4[ebp] - xor ecx,ecx -$L052ctr32_xor: - movups xmm1,XMMWORD PTR [ecx*1+esi] - lea ecx,DWORD PTR 16[ecx] - pxor xmm1,XMMWORD PTR [ecx*1+esp-16] - movups XMMWORD PTR [ecx*1+edi-16],xmm1 - cmp ecx,ebx - jb $L052ctr32_xor - mov ecx,DWORD PTR 8[ebp] - add edi,ebx - add esi,ebx - sub ecx,ebx - mov ebx,512 - jnz $L050ctr32_loop - pxor xmm0,xmm0 - lea eax,DWORD PTR [esp] -$L053ctr32_bzero: - movaps XMMWORD PTR [eax],xmm0 - lea eax,DWORD PTR 16[eax] - cmp ebp,eax - ja $L053ctr32_bzero -$L054ctr32_done: - mov ebp,DWORD PTR 16[ebp] - lea esp,DWORD PTR 24[ebp] - mov eax,1 - lea esp,DWORD PTR 4[esp] - emms -$L048ctr32_abort: - pop edi - pop esi - pop ebx - pop ebp - ret -_padlock_ctr32_encrypt ENDP -ALIGN 16 -_padlock_xstore PROC PUBLIC -$L_padlock_xstore_begin:: - push edi - mov edi,DWORD PTR 8[esp] - mov edx,DWORD PTR 12[esp] -DB 15,167,192 - pop edi - ret -_padlock_xstore ENDP -ALIGN 16 -__win32_segv_handler PROC PRIVATE - mov eax,1 - mov edx,DWORD PTR 4[esp] - mov ecx,DWORD PTR 12[esp] - cmp DWORD PTR [edx],3221225477 - jne $L055ret - add DWORD PTR 184[ecx],4 - mov eax,0 -$L055ret: - ret -__win32_segv_handler ENDP -IF @Version GE 710 -.SAFESEH __win32_segv_handler -ENDIF -ALIGN 16 -_padlock_sha1_oneshot PROC PUBLIC -$L_padlock_sha1_oneshot_begin:: - push edi - push esi - xor eax,eax - mov edi,DWORD PTR 12[esp] - mov esi,DWORD PTR 16[esp] - mov ecx,DWORD PTR 20[esp] - push __win32_segv_handler -DB 100,255,48 -DB 100,137,32 - mov edx,esp - add esp,-128 - movups xmm0,XMMWORD PTR [edi] - and esp,-16 - mov eax,DWORD PTR 16[edi] - movaps XMMWORD PTR [esp],xmm0 - mov edi,esp - mov DWORD PTR 16[esp],eax - xor eax,eax -DB 243,15,166,200 - movaps xmm0,XMMWORD PTR [esp] - mov eax,DWORD PTR 16[esp] - mov esp,edx -DB 100,143,5,0,0,0,0 - lea esp,DWORD PTR 4[esp] - mov edi,DWORD PTR 16[esp] - movups XMMWORD PTR [edi],xmm0 - mov DWORD PTR 16[edi],eax - pop esi - pop edi - ret -_padlock_sha1_oneshot ENDP -ALIGN 16 -_padlock_sha1_blocks PROC PUBLIC -$L_padlock_sha1_blocks_begin:: - push edi - push esi - mov edi,DWORD PTR 12[esp] - mov esi,DWORD PTR 16[esp] - mov edx,esp - mov ecx,DWORD PTR 20[esp] - add esp,-128 - movups xmm0,XMMWORD PTR [edi] - and esp,-16 - mov eax,DWORD PTR 16[edi] - movaps XMMWORD PTR [esp],xmm0 - mov edi,esp - mov DWORD PTR 16[esp],eax - mov eax,-1 -DB 243,15,166,200 - movaps xmm0,XMMWORD PTR [esp] - mov eax,DWORD PTR 16[esp] - mov esp,edx - mov edi,DWORD PTR 12[esp] - movups XMMWORD PTR [edi],xmm0 - mov DWORD PTR 16[edi],eax - pop esi - pop edi - ret -_padlock_sha1_blocks ENDP -ALIGN 16 -_padlock_sha256_oneshot PROC PUBLIC -$L_padlock_sha256_oneshot_begin:: - push edi - push esi - xor eax,eax - mov edi,DWORD PTR 12[esp] - mov esi,DWORD PTR 16[esp] - mov ecx,DWORD PTR 20[esp] - push __win32_segv_handler -DB 100,255,48 -DB 100,137,32 - mov edx,esp - add esp,-128 - movups xmm0,XMMWORD PTR [edi] - and esp,-16 - movups xmm1,XMMWORD PTR 16[edi] - movaps XMMWORD PTR [esp],xmm0 - mov edi,esp - movaps XMMWORD PTR 16[esp],xmm1 - xor eax,eax -DB 243,15,166,208 - movaps xmm0,XMMWORD PTR [esp] - movaps xmm1,XMMWORD PTR 16[esp] - mov esp,edx -DB 100,143,5,0,0,0,0 - lea esp,DWORD PTR 4[esp] - mov edi,DWORD PTR 16[esp] - movups XMMWORD PTR [edi],xmm0 - movups XMMWORD PTR 16[edi],xmm1 - pop esi - pop edi - ret -_padlock_sha256_oneshot ENDP -ALIGN 16 -_padlock_sha256_blocks PROC PUBLIC -$L_padlock_sha256_blocks_begin:: - push edi - push esi - mov edi,DWORD PTR 12[esp] - mov esi,DWORD PTR 16[esp] - mov ecx,DWORD PTR 20[esp] - mov edx,esp - add esp,-128 - movups xmm0,XMMWORD PTR [edi] - and esp,-16 - movups xmm1,XMMWORD PTR 16[edi] - movaps XMMWORD PTR [esp],xmm0 - mov edi,esp - movaps XMMWORD PTR 16[esp],xmm1 - mov eax,-1 -DB 243,15,166,208 - movaps xmm0,XMMWORD PTR [esp] - movaps xmm1,XMMWORD PTR 16[esp] - mov esp,edx - mov edi,DWORD PTR 12[esp] - movups XMMWORD PTR [edi],xmm0 - movups XMMWORD PTR 16[edi],xmm1 - pop esi - pop edi - ret -_padlock_sha256_blocks ENDP -ALIGN 16 -_padlock_sha512_blocks PROC PUBLIC -$L_padlock_sha512_blocks_begin:: - push edi - push esi - mov edi,DWORD PTR 12[esp] - mov esi,DWORD PTR 16[esp] - mov ecx,DWORD PTR 20[esp] - mov edx,esp - add esp,-128 - movups xmm0,XMMWORD PTR [edi] - and esp,-16 - movups xmm1,XMMWORD PTR 16[edi] - movups xmm2,XMMWORD PTR 32[edi] - movups xmm3,XMMWORD PTR 48[edi] - movaps XMMWORD PTR [esp],xmm0 - mov edi,esp - movaps XMMWORD PTR 16[esp],xmm1 - movaps XMMWORD PTR 32[esp],xmm2 - movaps XMMWORD PTR 48[esp],xmm3 -DB 243,15,166,224 - movaps xmm0,XMMWORD PTR [esp] - movaps xmm1,XMMWORD PTR 16[esp] - movaps xmm2,XMMWORD PTR 32[esp] - movaps xmm3,XMMWORD PTR 48[esp] - mov esp,edx - mov edi,DWORD PTR 12[esp] - movups XMMWORD PTR [edi],xmm0 - movups XMMWORD PTR 16[edi],xmm1 - movups XMMWORD PTR 32[edi],xmm2 - movups XMMWORD PTR 48[edi],xmm3 - pop esi - pop edi - ret -_padlock_sha512_blocks ENDP -DB 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32 -DB 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65 -DB 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101 -DB 110,115,115,108,46,111,114,103,62,0 -ALIGN 16 -.text$ ENDS -_DATA SEGMENT -ALIGN 4 -$Lpadlock_saved_context:: -DD 0 -_DATA ENDS -END +IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +ALIGN 16 +_padlock_capability PROC PUBLIC +$L_padlock_capability_begin:: + push ebx + pushfd + pop eax + mov ecx,eax + xor eax,2097152 + push eax + popfd + pushfd + pop eax + xor ecx,eax + xor eax,eax + bt ecx,21 + jnc $L000noluck + cpuid + xor eax,eax + cmp ebx,0746e6543h + jne $L001zhaoxin + cmp edx,048727561h + jne $L000noluck + cmp ecx,0736c7561h + jne $L000noluck + jmp $L002zhaoxinEnd +$L001zhaoxin: + cmp ebx,068532020h + jne $L000noluck + cmp edx,068676e61h + jne $L000noluck + cmp ecx,020206961h + jne $L000noluck +$L002zhaoxinEnd: + mov eax,3221225472 + cpuid + mov edx,eax + xor eax,eax + cmp edx,3221225473 + jb $L000noluck + mov eax,1 + cpuid + or eax,15 + xor ebx,ebx + and eax,4095 + cmp eax,1791 + sete bl + mov eax,3221225473 + push ebx + cpuid + pop ebx + mov eax,edx + shl ebx,4 + and eax,4294967279 + or eax,ebx +$L000noluck: + pop ebx + ret +_padlock_capability ENDP +ALIGN 16 +_padlock_key_bswap PROC PUBLIC +$L_padlock_key_bswap_begin:: + mov edx,DWORD PTR 4[esp] + mov ecx,DWORD PTR 240[edx] +$L003bswap_loop: + mov eax,DWORD PTR [edx] + bswap eax + mov DWORD PTR [edx],eax + lea edx,DWORD PTR 4[edx] + sub ecx,1 + jnz $L003bswap_loop + ret +_padlock_key_bswap ENDP +ALIGN 16 +_padlock_verify_context PROC PUBLIC +$L_padlock_verify_context_begin:: + mov edx,DWORD PTR 4[esp] + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + call __padlock_verify_ctx +$L004verify_pic_point: + lea esp,DWORD PTR 4[esp] + ret +_padlock_verify_context ENDP +ALIGN 16 +__padlock_verify_ctx PROC PRIVATE + bt DWORD PTR 4[esp],30 + jnc $L005verified + cmp edx,DWORD PTR [eax] + je $L005verified + pushfd + popfd +$L005verified: + mov DWORD PTR [eax],edx + ret +__padlock_verify_ctx ENDP +ALIGN 16 +_padlock_reload_key PROC PUBLIC +$L_padlock_reload_key_begin:: + pushfd + popfd + ret +_padlock_reload_key ENDP +ALIGN 16 +_padlock_aes_block PROC PUBLIC +$L_padlock_aes_block_begin:: + push edi + push esi + push ebx + mov edi,DWORD PTR 16[esp] + mov esi,DWORD PTR 20[esp] + mov edx,DWORD PTR 24[esp] + mov ecx,1 + lea ebx,DWORD PTR 32[edx] + lea edx,DWORD PTR 16[edx] +DB 243,15,167,200 + pop ebx + pop esi + pop edi + ret +_padlock_aes_block ENDP +ALIGN 16 +_padlock_ecb_encrypt PROC PUBLIC +$L_padlock_ecb_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L006ecb_abort + test ecx,15 + jnz $L006ecb_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L007ecb_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + xor ebx,ebx + test DWORD PTR [edx],32 + jnz $L008ecb_aligned + test edi,15 + setz al + test esi,15 + setz bl + test eax,ebx + jnz $L008ecb_aligned + neg eax + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + cmp ecx,ebx + ja $L009ecb_loop + mov eax,esi + cmp ebp,esp + cmove eax,edi + add eax,ecx + neg eax + and eax,4095 + cmp eax,128 + mov eax,-128 + cmovae eax,ebx + and ebx,eax + jz $L010ecb_unaligned_tail + jmp $L009ecb_loop +ALIGN 16 +$L009ecb_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + test edi,15 + cmovnz edi,esp + test esi,15 + jz $L011ecb_inp_aligned + shr ecx,2 +DB 243,165 + sub edi,ebx + mov ecx,ebx + mov esi,edi +$L011ecb_inp_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,200 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + test edi,15 + jz $L012ecb_out_aligned + mov ecx,ebx + lea esi,DWORD PTR [esp] + shr ecx,2 +DB 243,165 + sub edi,ebx +$L012ecb_out_aligned: + mov esi,DWORD PTR 4[ebp] + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jz $L013ecb_break + cmp ecx,ebx + jae $L009ecb_loop +$L010ecb_unaligned_tail: + xor eax,eax + cmp esp,ebp + cmove eax,ecx + sub esp,eax + mov eax,edi + mov ebx,ecx + shr ecx,2 + lea edi,DWORD PTR [esp] +DB 243,165 + mov esi,esp + mov edi,eax + mov ecx,ebx + jmp $L009ecb_loop +ALIGN 16 +$L013ecb_break: + cmp esp,ebp + je $L014ecb_done + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L015ecb_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L015ecb_bzero +$L014ecb_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + jmp $L016ecb_exit +ALIGN 16 +$L008ecb_aligned: + lea ebp,DWORD PTR [ecx*1+esi] + neg ebp + and ebp,4095 + xor eax,eax + cmp ebp,128 + mov ebp,127 + cmovae ebp,eax + and ebp,ecx + sub ecx,ebp + jz $L017ecb_aligned_tail + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,200 + test ebp,ebp + jz $L016ecb_exit +$L017ecb_aligned_tail: + mov ecx,ebp + lea ebp,DWORD PTR [esp-24] + mov esp,ebp + mov eax,ebp + sub esp,ecx + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + mov eax,edi + mov ebx,ecx + shr ecx,2 + lea edi,DWORD PTR [esp] +DB 243,165 + mov esi,esp + mov edi,eax + mov ecx,ebx + jmp $L009ecb_loop +$L016ecb_exit: + mov eax,1 + lea esp,DWORD PTR 4[esp] +$L006ecb_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_ecb_encrypt ENDP +ALIGN 16 +_padlock_cbc_encrypt PROC PUBLIC +$L_padlock_cbc_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L018cbc_abort + test ecx,15 + jnz $L018cbc_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L019cbc_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + xor ebx,ebx + test DWORD PTR [edx],32 + jnz $L020cbc_aligned + test edi,15 + setz al + test esi,15 + setz bl + test eax,ebx + jnz $L020cbc_aligned + neg eax + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + cmp ecx,ebx + ja $L021cbc_loop + mov eax,esi + cmp ebp,esp + cmove eax,edi + add eax,ecx + neg eax + and eax,4095 + cmp eax,64 + mov eax,-64 + cmovae eax,ebx + and ebx,eax + jz $L022cbc_unaligned_tail + jmp $L021cbc_loop +ALIGN 16 +$L021cbc_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + test edi,15 + cmovnz edi,esp + test esi,15 + jz $L023cbc_inp_aligned + shr ecx,2 +DB 243,165 + sub edi,ebx + mov ecx,ebx + mov esi,edi +$L023cbc_inp_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,208 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + test edi,15 + jz $L024cbc_out_aligned + mov ecx,ebx + lea esi,DWORD PTR [esp] + shr ecx,2 +DB 243,165 + sub edi,ebx +$L024cbc_out_aligned: + mov esi,DWORD PTR 4[ebp] + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jz $L025cbc_break + cmp ecx,ebx + jae $L021cbc_loop +$L022cbc_unaligned_tail: + xor eax,eax + cmp esp,ebp + cmove eax,ecx + sub esp,eax + mov eax,edi + mov ebx,ecx + shr ecx,2 + lea edi,DWORD PTR [esp] +DB 243,165 + mov esi,esp + mov edi,eax + mov ecx,ebx + jmp $L021cbc_loop +ALIGN 16 +$L025cbc_break: + cmp esp,ebp + je $L026cbc_done + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L027cbc_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L027cbc_bzero +$L026cbc_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + jmp $L028cbc_exit +ALIGN 16 +$L020cbc_aligned: + lea ebp,DWORD PTR [ecx*1+esi] + neg ebp + and ebp,4095 + xor eax,eax + cmp ebp,64 + mov ebp,63 + cmovae ebp,eax + and ebp,ecx + sub ecx,ebp + jz $L029cbc_aligned_tail + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,208 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 + test ebp,ebp + jz $L028cbc_exit +$L029cbc_aligned_tail: + mov ecx,ebp + lea ebp,DWORD PTR [esp-24] + mov esp,ebp + mov eax,ebp + sub esp,ecx + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + mov eax,edi + mov ebx,ecx + shr ecx,2 + lea edi,DWORD PTR [esp] +DB 243,165 + mov esi,esp + mov edi,eax + mov ecx,ebx + jmp $L021cbc_loop +$L028cbc_exit: + mov eax,1 + lea esp,DWORD PTR 4[esp] +$L018cbc_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_cbc_encrypt ENDP +ALIGN 16 +_padlock_cfb_encrypt PROC PUBLIC +$L_padlock_cfb_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L030cfb_abort + test ecx,15 + jnz $L030cfb_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L031cfb_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + xor ebx,ebx + test DWORD PTR [edx],32 + jnz $L032cfb_aligned + test edi,15 + setz al + test esi,15 + setz bl + test eax,ebx + jnz $L032cfb_aligned + neg eax + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + jmp $L033cfb_loop +ALIGN 16 +$L033cfb_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + test edi,15 + cmovnz edi,esp + test esi,15 + jz $L034cfb_inp_aligned + shr ecx,2 +DB 243,165 + sub edi,ebx + mov ecx,ebx + mov esi,edi +$L034cfb_inp_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,224 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + test edi,15 + jz $L035cfb_out_aligned + mov ecx,ebx + lea esi,DWORD PTR [esp] + shr ecx,2 +DB 243,165 + sub edi,ebx +$L035cfb_out_aligned: + mov esi,DWORD PTR 4[ebp] + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jnz $L033cfb_loop + cmp esp,ebp + je $L036cfb_done + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L037cfb_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L037cfb_bzero +$L036cfb_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + jmp $L038cfb_exit +ALIGN 16 +$L032cfb_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,224 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 +$L038cfb_exit: + mov eax,1 + lea esp,DWORD PTR 4[esp] +$L030cfb_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_cfb_encrypt ENDP +ALIGN 16 +_padlock_ofb_encrypt PROC PUBLIC +$L_padlock_ofb_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L039ofb_abort + test ecx,15 + jnz $L039ofb_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L040ofb_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + xor ebx,ebx + test DWORD PTR [edx],32 + jnz $L041ofb_aligned + test edi,15 + setz al + test esi,15 + setz bl + test eax,ebx + jnz $L041ofb_aligned + neg eax + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + jmp $L042ofb_loop +ALIGN 16 +$L042ofb_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + test edi,15 + cmovnz edi,esp + test esi,15 + jz $L043ofb_inp_aligned + shr ecx,2 +DB 243,165 + sub edi,ebx + mov ecx,ebx + mov esi,edi +$L043ofb_inp_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,232 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + test edi,15 + jz $L044ofb_out_aligned + mov ecx,ebx + lea esi,DWORD PTR [esp] + shr ecx,2 +DB 243,165 + sub edi,ebx +$L044ofb_out_aligned: + mov esi,DWORD PTR 4[ebp] + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jnz $L042ofb_loop + cmp esp,ebp + je $L045ofb_done + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L046ofb_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L046ofb_bzero +$L045ofb_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + jmp $L047ofb_exit +ALIGN 16 +$L041ofb_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,232 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 +$L047ofb_exit: + mov eax,1 + lea esp,DWORD PTR 4[esp] +$L039ofb_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_ofb_encrypt ENDP +ALIGN 16 +_padlock_ctr32_encrypt PROC PUBLIC +$L_padlock_ctr32_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L048ctr32_abort + test ecx,15 + jnz $L048ctr32_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L049ctr32_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + movq mm0,QWORD PTR [edx-16] + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + jmp $L050ctr32_loop +ALIGN 16 +$L050ctr32_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + mov ecx,DWORD PTR [edx-4] + xor edi,edi + mov eax,DWORD PTR [edx-8] +$L051ctr32_prepare: + mov DWORD PTR 12[edi*1+esp],ecx + bswap ecx + movq QWORD PTR [edi*1+esp],mm0 + inc ecx + mov DWORD PTR 8[edi*1+esp],eax + bswap ecx + lea edi,DWORD PTR 16[edi] + cmp edi,ebx + jb $L051ctr32_prepare + mov DWORD PTR [edx-4],ecx + lea esi,DWORD PTR [esp] + lea edi,DWORD PTR [esp] + mov ecx,ebx + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,200 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + mov esi,DWORD PTR 4[ebp] + xor ecx,ecx +$L052ctr32_xor: + movups xmm1,XMMWORD PTR [ecx*1+esi] + lea ecx,DWORD PTR 16[ecx] + pxor xmm1,XMMWORD PTR [ecx*1+esp-16] + movups XMMWORD PTR [ecx*1+edi-16],xmm1 + cmp ecx,ebx + jb $L052ctr32_xor + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jnz $L050ctr32_loop + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L053ctr32_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L053ctr32_bzero +$L054ctr32_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + mov eax,1 + lea esp,DWORD PTR 4[esp] + emms +$L048ctr32_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_ctr32_encrypt ENDP +ALIGN 16 +_padlock_xstore PROC PUBLIC +$L_padlock_xstore_begin:: + push edi + mov edi,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] +DB 15,167,192 + pop edi + ret +_padlock_xstore ENDP +ALIGN 16 +__win32_segv_handler PROC PRIVATE + mov eax,1 + mov edx,DWORD PTR 4[esp] + mov ecx,DWORD PTR 12[esp] + cmp DWORD PTR [edx],3221225477 + jne $L055ret + add DWORD PTR 184[ecx],4 + mov eax,0 +$L055ret: + ret +__win32_segv_handler ENDP +IF @Version GE 710 +.SAFESEH __win32_segv_handler +ENDIF +ALIGN 16 +_padlock_sha1_oneshot PROC PUBLIC +$L_padlock_sha1_oneshot_begin:: + push edi + push esi + xor eax,eax + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + push __win32_segv_handler +DB 100,255,48 +DB 100,137,32 + mov edx,esp + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + mov eax,DWORD PTR 16[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + mov DWORD PTR 16[esp],eax + xor eax,eax +DB 243,15,166,200 + movaps xmm0,XMMWORD PTR [esp] + mov eax,DWORD PTR 16[esp] + mov esp,edx +DB 100,143,5,0,0,0,0 + lea esp,DWORD PTR 4[esp] + mov edi,DWORD PTR 16[esp] + movups XMMWORD PTR [edi],xmm0 + mov DWORD PTR 16[edi],eax + pop esi + pop edi + ret +_padlock_sha1_oneshot ENDP +ALIGN 16 +_padlock_sha1_blocks PROC PUBLIC +$L_padlock_sha1_blocks_begin:: + push edi + push esi + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov edx,esp + mov ecx,DWORD PTR 20[esp] + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + mov eax,DWORD PTR 16[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + mov DWORD PTR 16[esp],eax + mov eax,-1 +DB 243,15,166,200 + movaps xmm0,XMMWORD PTR [esp] + mov eax,DWORD PTR 16[esp] + mov esp,edx + mov edi,DWORD PTR 12[esp] + movups XMMWORD PTR [edi],xmm0 + mov DWORD PTR 16[edi],eax + pop esi + pop edi + ret +_padlock_sha1_blocks ENDP +ALIGN 16 +_padlock_sha256_oneshot PROC PUBLIC +$L_padlock_sha256_oneshot_begin:: + push edi + push esi + xor eax,eax + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + push __win32_segv_handler +DB 100,255,48 +DB 100,137,32 + mov edx,esp + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + movups xmm1,XMMWORD PTR 16[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + movaps XMMWORD PTR 16[esp],xmm1 + xor eax,eax +DB 243,15,166,208 + movaps xmm0,XMMWORD PTR [esp] + movaps xmm1,XMMWORD PTR 16[esp] + mov esp,edx +DB 100,143,5,0,0,0,0 + lea esp,DWORD PTR 4[esp] + mov edi,DWORD PTR 16[esp] + movups XMMWORD PTR [edi],xmm0 + movups XMMWORD PTR 16[edi],xmm1 + pop esi + pop edi + ret +_padlock_sha256_oneshot ENDP +ALIGN 16 +_padlock_sha256_blocks PROC PUBLIC +$L_padlock_sha256_blocks_begin:: + push edi + push esi + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + mov edx,esp + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + movups xmm1,XMMWORD PTR 16[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + movaps XMMWORD PTR 16[esp],xmm1 + mov eax,-1 +DB 243,15,166,208 + movaps xmm0,XMMWORD PTR [esp] + movaps xmm1,XMMWORD PTR 16[esp] + mov esp,edx + mov edi,DWORD PTR 12[esp] + movups XMMWORD PTR [edi],xmm0 + movups XMMWORD PTR 16[edi],xmm1 + pop esi + pop edi + ret +_padlock_sha256_blocks ENDP +ALIGN 16 +_padlock_sha512_blocks PROC PUBLIC +$L_padlock_sha512_blocks_begin:: + push edi + push esi + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + mov edx,esp + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + movups xmm1,XMMWORD PTR 16[edi] + movups xmm2,XMMWORD PTR 32[edi] + movups xmm3,XMMWORD PTR 48[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + movaps XMMWORD PTR 16[esp],xmm1 + movaps XMMWORD PTR 32[esp],xmm2 + movaps XMMWORD PTR 48[esp],xmm3 +DB 243,15,166,224 + movaps xmm0,XMMWORD PTR [esp] + movaps xmm1,XMMWORD PTR 16[esp] + movaps xmm2,XMMWORD PTR 32[esp] + movaps xmm3,XMMWORD PTR 48[esp] + mov esp,edx + mov edi,DWORD PTR 12[esp] + movups XMMWORD PTR [edi],xmm0 + movups XMMWORD PTR 16[edi],xmm1 + movups XMMWORD PTR 32[edi],xmm2 + movups XMMWORD PTR 48[edi],xmm3 + pop esi + pop edi + ret +_padlock_sha512_blocks ENDP +DB 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32 +DB 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65 +DB 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101 +DB 110,115,115,108,46,111,114,103,62,0 +ALIGN 16 +.text$ ENDS +_DATA SEGMENT +ALIGN 4 +$Lpadlock_saved_context:: +DD 0 +_DATA ENDS +END |