aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/openssl/asm/windows/crypto
diff options
context:
space:
mode:
authorvalbon <valbon@yandex-team.ru>2022-02-10 16:47:59 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:47:59 +0300
commitf3cec1df1d3c7b149508f3807eff6c27b593bfaa (patch)
treeb222e5ac2e2e98872661c51ccceee5da0d291e13 /contrib/libs/openssl/asm/windows/crypto
parent480c782666ba932a651f049537e8b89f2a382a29 (diff)
downloadydb-f3cec1df1d3c7b149508f3807eff6c27b593bfaa.tar.gz
Restoring authorship annotation for <valbon@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/openssl/asm/windows/crypto')
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/aes/aesni-x86.masm6448
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/aes/vpaes-x86.masm1322
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/bn/x86-gf2m.masm720
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/bn/x86-mont.masm984
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/camellia/cmll-x86.masm4738
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/chacha/chacha-x86.masm2046
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/md5/md5-586.masm1376
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/modes/ghash-x86.masm2546
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/rc4/rc4-586.masm774
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/sha/sha1-586.masm7972
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/sha/sha256-586.masm13634
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/sha/sha512-586.masm5696
-rw-r--r--contrib/libs/openssl/asm/windows/crypto/x86cpuid.masm1042
13 files changed, 24649 insertions, 24649 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