diff options
author | valbon <valbon@yandex-team.ru> | 2022-02-10 16:47:59 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:59 +0300 |
commit | 480c782666ba932a651f049537e8b89f2a382a29 (patch) | |
tree | 5d0e632203c450243e28d32549b6016a8ce93d1b /contrib/libs/openssl/asm/windows | |
parent | f860932520ce9bc8540a3c19e84c0109c3437dc5 (diff) | |
download | ydb-480c782666ba932a651f049537e8b89f2a382a29.tar.gz |
Restoring authorship annotation for <valbon@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/openssl/asm/windows')
14 files changed, 25686 insertions, 25686 deletions
diff --git a/contrib/libs/openssl/asm/windows/crypto/aes/aesni-x86.masm b/contrib/libs/openssl/asm/windows/crypto/aes/aesni-x86.masm index 160f536ffa..40063e77c3 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 e242a0c5df..c64633d72d 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 7a42c0259b..837446b32c 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 23c6825567..d47d1f849d 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 47dc26439c..122df1de15 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 96ee56b7ae..2d436b36c3 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 c183c2506d..f04a1f5a75 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 954bb943f4..a92ca04f61 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 46eadde77b..eade96c447 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 9cbefb962b..0a96e04b7c 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 7810ba8b84..8f166befb1 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 d7af6c00a5..cfe416f509 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 2a7b1fd55e..1549b80cc8 100644 --- a/contrib/libs/openssl/asm/windows/crypto/x86cpuid.masm +++ b/contrib/libs/openssl/asm/windows/crypto/x86cpuid.masm @@ -1,521 +1,521 @@ -IF @Version LT 800
-ECHO MASM version 8.00 or later is strongly recommended.
-ENDIF
-.686
-.XMM
-IF @Version LT 800
-XMMWORD STRUCT 16
-DQ 2 dup (?)
-XMMWORD ENDS
-ENDIF
-
-.MODEL FLAT
-OPTION DOTNAME
-IF @Version LT 800
-.text$ SEGMENT PAGE 'CODE'
-ELSE
-.text$ SEGMENT ALIGN(64) 'CODE'
-ENDIF
-ALIGN 16
-_OPENSSL_ia32_cpuid PROC PUBLIC
-$L_OPENSSL_ia32_cpuid_begin::
- push ebp
- push ebx
- push esi
- push edi
- xor edx,edx
- pushfd
- pop eax
- mov ecx,eax
- xor eax,2097152
- push eax
- popfd
- pushfd
- pop eax
- xor ecx,eax
- xor eax,eax
- mov esi,DWORD PTR 20[esp]
- mov DWORD PTR 8[esi],eax
- bt ecx,21
- jnc $L000nocpuid
- cpuid
- mov edi,eax
- xor eax,eax
- cmp ebx,1970169159
- setne al
- mov ebp,eax
- cmp edx,1231384169
- setne al
- or ebp,eax
- cmp ecx,1818588270
- setne al
- or ebp,eax
- jz $L001intel
- cmp ebx,1752462657
- setne al
- mov esi,eax
- cmp edx,1769238117
- setne al
- or esi,eax
- cmp ecx,1145913699
- setne al
- or esi,eax
- jnz $L001intel
- mov eax,2147483648
- cpuid
- cmp eax,2147483649
- jb $L001intel
- mov esi,eax
- mov eax,2147483649
- cpuid
- or ebp,ecx
- and ebp,2049
- cmp esi,2147483656
- jb $L001intel
- mov eax,2147483656
- cpuid
- movzx esi,cl
- inc esi
- mov eax,1
- xor ecx,ecx
- cpuid
- bt edx,28
- jnc $L002generic
- shr ebx,16
- and ebx,255
- cmp ebx,esi
- ja $L002generic
- and edx,4026531839
- jmp $L002generic
-$L001intel:
- cmp edi,4
- mov esi,-1
- jb $L003nocacheinfo
- mov eax,4
- mov ecx,0
- cpuid
- mov esi,eax
- shr esi,14
- and esi,4095
-$L003nocacheinfo:
- mov eax,1
- xor ecx,ecx
- cpuid
- and edx,3220176895
- cmp ebp,0
- jne $L004notintel
- or edx,1073741824
- and ah,15
- cmp ah,15
- jne $L004notintel
- or edx,1048576
-$L004notintel:
- bt edx,28
- jnc $L002generic
- and edx,4026531839
- cmp esi,0
- je $L002generic
- or edx,268435456
- shr ebx,16
- cmp bl,1
- ja $L002generic
- and edx,4026531839
-$L002generic:
- and ebp,2048
- and ecx,4294965247
- mov esi,edx
- or ebp,ecx
- cmp edi,7
- mov edi,DWORD PTR 20[esp]
- jb $L005no_extended_info
- mov eax,7
- xor ecx,ecx
- cpuid
- mov DWORD PTR 8[edi],ebx
-$L005no_extended_info:
- bt ebp,27
- jnc $L006clear_avx
- xor ecx,ecx
-DB 15,1,208
- and eax,6
- cmp eax,6
- je $L007done
- cmp eax,2
- je $L006clear_avx
-$L008clear_xmm:
- and ebp,4261412861
- and esi,4278190079
-$L006clear_avx:
- and ebp,4026525695
- and DWORD PTR 8[edi],4294967263
-$L007done:
- mov eax,esi
- mov edx,ebp
-$L000nocpuid:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_OPENSSL_ia32_cpuid ENDP
-;EXTERN _OPENSSL_ia32cap_P:NEAR
-ALIGN 16
-_OPENSSL_rdtsc PROC PUBLIC
-$L_OPENSSL_rdtsc_begin::
- xor eax,eax
- xor edx,edx
- lea ecx,DWORD PTR _OPENSSL_ia32cap_P
- bt DWORD PTR [ecx],4
- jnc $L009notsc
- rdtsc
-$L009notsc:
- ret
-_OPENSSL_rdtsc ENDP
-ALIGN 16
-_OPENSSL_instrument_halt PROC PUBLIC
-$L_OPENSSL_instrument_halt_begin::
- lea ecx,DWORD PTR _OPENSSL_ia32cap_P
- bt DWORD PTR [ecx],4
- jnc $L010nohalt
-DD 2421723150
- and eax,3
- jnz $L010nohalt
- pushfd
- pop eax
- bt eax,9
- jnc $L010nohalt
- rdtsc
- push edx
- push eax
- hlt
- rdtsc
- sub eax,DWORD PTR [esp]
- sbb edx,DWORD PTR 4[esp]
- add esp,8
- ret
-$L010nohalt:
- xor eax,eax
- xor edx,edx
- ret
-_OPENSSL_instrument_halt ENDP
-ALIGN 16
-_OPENSSL_far_spin PROC PUBLIC
-$L_OPENSSL_far_spin_begin::
- pushfd
- pop eax
- bt eax,9
- jnc $L011nospin
- mov eax,DWORD PTR 4[esp]
- mov ecx,DWORD PTR 8[esp]
-DD 2430111262
- xor eax,eax
- mov edx,DWORD PTR [ecx]
- jmp $L012spin
-ALIGN 16
-$L012spin:
- inc eax
- cmp edx,DWORD PTR [ecx]
- je $L012spin
-DD 529567888
- ret
-$L011nospin:
- xor eax,eax
- xor edx,edx
- ret
-_OPENSSL_far_spin ENDP
-ALIGN 16
-_OPENSSL_wipe_cpu PROC PUBLIC
-$L_OPENSSL_wipe_cpu_begin::
- xor eax,eax
- xor edx,edx
- lea ecx,DWORD PTR _OPENSSL_ia32cap_P
- mov ecx,DWORD PTR [ecx]
- bt DWORD PTR [ecx],1
- jnc $L013no_x87
- and ecx,83886080
- cmp ecx,83886080
- jne $L014no_sse2
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
- pxor xmm6,xmm6
- pxor xmm7,xmm7
-$L014no_sse2:
-DD 4007259865,4007259865,4007259865,4007259865
-DD 2430851995
-$L013no_x87:
- lea eax,DWORD PTR 4[esp]
- ret
-_OPENSSL_wipe_cpu ENDP
-ALIGN 16
-_OPENSSL_atomic_add PROC PUBLIC
-$L_OPENSSL_atomic_add_begin::
- mov edx,DWORD PTR 4[esp]
- mov ecx,DWORD PTR 8[esp]
- push ebx
- nop
- mov eax,DWORD PTR [edx]
-$L015spin:
- lea ebx,DWORD PTR [ecx*1+eax]
- nop
-DD 447811568
- jne $L015spin
- mov eax,ebx
- pop ebx
- ret
-_OPENSSL_atomic_add ENDP
-ALIGN 16
-_OPENSSL_cleanse PROC PUBLIC
-$L_OPENSSL_cleanse_begin::
- mov edx,DWORD PTR 4[esp]
- mov ecx,DWORD PTR 8[esp]
- xor eax,eax
- cmp ecx,7
- jae $L016lot
- cmp ecx,0
- je $L017ret
-$L018little:
- mov BYTE PTR [edx],al
- sub ecx,1
- lea edx,DWORD PTR 1[edx]
- jnz $L018little
-$L017ret:
- ret
-ALIGN 16
-$L016lot:
- test edx,3
- jz $L019aligned
- mov BYTE PTR [edx],al
- lea ecx,DWORD PTR [ecx-1]
- lea edx,DWORD PTR 1[edx]
- jmp $L016lot
-$L019aligned:
- mov DWORD PTR [edx],eax
- lea ecx,DWORD PTR [ecx-4]
- test ecx,-4
- lea edx,DWORD PTR 4[edx]
- jnz $L019aligned
- cmp ecx,0
- jne $L018little
- ret
-_OPENSSL_cleanse ENDP
-ALIGN 16
-_CRYPTO_memcmp PROC PUBLIC
-$L_CRYPTO_memcmp_begin::
- push esi
- push edi
- mov esi,DWORD PTR 12[esp]
- mov edi,DWORD PTR 16[esp]
- mov ecx,DWORD PTR 20[esp]
- xor eax,eax
- xor edx,edx
- cmp ecx,0
- je $L020no_data
-$L021loop:
- mov dl,BYTE PTR [esi]
- lea esi,DWORD PTR 1[esi]
- xor dl,BYTE PTR [edi]
- lea edi,DWORD PTR 1[edi]
- or al,dl
- dec ecx
- jnz $L021loop
- neg eax
- shr eax,31
-$L020no_data:
- pop edi
- pop esi
- ret
-_CRYPTO_memcmp ENDP
-ALIGN 16
-_OPENSSL_instrument_bus PROC PUBLIC
-$L_OPENSSL_instrument_bus_begin::
- push ebp
- push ebx
- push esi
- push edi
- mov eax,0
- lea edx,DWORD PTR _OPENSSL_ia32cap_P
- bt DWORD PTR [edx],4
- jnc $L022nogo
- bt DWORD PTR [edx],19
- jnc $L022nogo
- mov edi,DWORD PTR 20[esp]
- mov ecx,DWORD PTR 24[esp]
- rdtsc
- mov esi,eax
- mov ebx,0
- clflush DWORD PTR [edi]
-DB 240
- add DWORD PTR [edi],ebx
- jmp $L023loop
-ALIGN 16
-$L023loop:
- rdtsc
- mov edx,eax
- sub eax,esi
- mov esi,edx
- mov ebx,eax
- clflush DWORD PTR [edi]
-DB 240
- add DWORD PTR [edi],eax
- lea edi,DWORD PTR 4[edi]
- sub ecx,1
- jnz $L023loop
- mov eax,DWORD PTR 24[esp]
-$L022nogo:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_OPENSSL_instrument_bus ENDP
-ALIGN 16
-_OPENSSL_instrument_bus2 PROC PUBLIC
-$L_OPENSSL_instrument_bus2_begin::
- push ebp
- push ebx
- push esi
- push edi
- mov eax,0
- lea edx,DWORD PTR _OPENSSL_ia32cap_P
- bt DWORD PTR [edx],4
- jnc $L024nogo
- bt DWORD PTR [edx],19
- jnc $L024nogo
- mov edi,DWORD PTR 20[esp]
- mov ecx,DWORD PTR 24[esp]
- mov ebp,DWORD PTR 28[esp]
- rdtsc
- mov esi,eax
- mov ebx,0
- clflush DWORD PTR [edi]
-DB 240
- add DWORD PTR [edi],ebx
- rdtsc
- mov edx,eax
- sub eax,esi
- mov esi,edx
- mov ebx,eax
- jmp $L025loop2
-ALIGN 16
-$L025loop2:
- clflush DWORD PTR [edi]
-DB 240
- add DWORD PTR [edi],eax
- sub ebp,1
- jz $L026done2
- rdtsc
- mov edx,eax
- sub eax,esi
- mov esi,edx
- cmp eax,ebx
- mov ebx,eax
- mov edx,0
- setne dl
- sub ecx,edx
- lea edi,DWORD PTR [edx*4+edi]
- jnz $L025loop2
-$L026done2:
- mov eax,DWORD PTR 24[esp]
- sub eax,ecx
-$L024nogo:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_OPENSSL_instrument_bus2 ENDP
-ALIGN 16
-_OPENSSL_ia32_rdrand_bytes PROC PUBLIC
-$L_OPENSSL_ia32_rdrand_bytes_begin::
- push edi
- push ebx
- xor eax,eax
- mov edi,DWORD PTR 12[esp]
- mov ebx,DWORD PTR 16[esp]
- cmp ebx,0
- je $L027done
- mov ecx,8
-$L028loop:
-DB 15,199,242
- jc $L029break
- loop $L028loop
- jmp $L027done
-ALIGN 16
-$L029break:
- cmp ebx,4
- jb $L030tail
- mov DWORD PTR [edi],edx
- lea edi,DWORD PTR 4[edi]
- add eax,4
- sub ebx,4
- jz $L027done
- mov ecx,8
- jmp $L028loop
-ALIGN 16
-$L030tail:
- mov BYTE PTR [edi],dl
- lea edi,DWORD PTR 1[edi]
- inc eax
- shr edx,8
- dec ebx
- jnz $L030tail
-$L027done:
- xor edx,edx
- pop ebx
- pop edi
- ret
-_OPENSSL_ia32_rdrand_bytes ENDP
-ALIGN 16
-_OPENSSL_ia32_rdseed_bytes PROC PUBLIC
-$L_OPENSSL_ia32_rdseed_bytes_begin::
- push edi
- push ebx
- xor eax,eax
- mov edi,DWORD PTR 12[esp]
- mov ebx,DWORD PTR 16[esp]
- cmp ebx,0
- je $L031done
- mov ecx,8
-$L032loop:
-DB 15,199,250
- jc $L033break
- loop $L032loop
- jmp $L031done
-ALIGN 16
-$L033break:
- cmp ebx,4
- jb $L034tail
- mov DWORD PTR [edi],edx
- lea edi,DWORD PTR 4[edi]
- add eax,4
- sub ebx,4
- jz $L031done
- mov ecx,8
- jmp $L032loop
-ALIGN 16
-$L034tail:
- mov BYTE PTR [edi],dl
- lea edi,DWORD PTR 1[edi]
- inc eax
- shr edx,8
- dec ebx
- jnz $L034tail
-$L031done:
- xor edx,edx
- pop ebx
- pop edi
- ret
-_OPENSSL_ia32_rdseed_bytes ENDP
-.text$ ENDS
-.bss SEGMENT 'BSS'
-COMM _OPENSSL_ia32cap_P:DWORD:4
-.bss ENDS
-.CRT$XCU SEGMENT DWORD PUBLIC 'DATA'
-EXTERN _OPENSSL_cpuid_setup:NEAR
-DD _OPENSSL_cpuid_setup
-.CRT$XCU ENDS
-END
+IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +ALIGN 16 +_OPENSSL_ia32_cpuid PROC PUBLIC +$L_OPENSSL_ia32_cpuid_begin:: + push ebp + push ebx + push esi + push edi + xor edx,edx + pushfd + pop eax + mov ecx,eax + xor eax,2097152 + push eax + popfd + pushfd + pop eax + xor ecx,eax + xor eax,eax + mov esi,DWORD PTR 20[esp] + mov DWORD PTR 8[esi],eax + bt ecx,21 + jnc $L000nocpuid + cpuid + mov edi,eax + xor eax,eax + cmp ebx,1970169159 + setne al + mov ebp,eax + cmp edx,1231384169 + setne al + or ebp,eax + cmp ecx,1818588270 + setne al + or ebp,eax + jz $L001intel + cmp ebx,1752462657 + setne al + mov esi,eax + cmp edx,1769238117 + setne al + or esi,eax + cmp ecx,1145913699 + setne al + or esi,eax + jnz $L001intel + mov eax,2147483648 + cpuid + cmp eax,2147483649 + jb $L001intel + mov esi,eax + mov eax,2147483649 + cpuid + or ebp,ecx + and ebp,2049 + cmp esi,2147483656 + jb $L001intel + mov eax,2147483656 + cpuid + movzx esi,cl + inc esi + mov eax,1 + xor ecx,ecx + cpuid + bt edx,28 + jnc $L002generic + shr ebx,16 + and ebx,255 + cmp ebx,esi + ja $L002generic + and edx,4026531839 + jmp $L002generic +$L001intel: + cmp edi,4 + mov esi,-1 + jb $L003nocacheinfo + mov eax,4 + mov ecx,0 + cpuid + mov esi,eax + shr esi,14 + and esi,4095 +$L003nocacheinfo: + mov eax,1 + xor ecx,ecx + cpuid + and edx,3220176895 + cmp ebp,0 + jne $L004notintel + or edx,1073741824 + and ah,15 + cmp ah,15 + jne $L004notintel + or edx,1048576 +$L004notintel: + bt edx,28 + jnc $L002generic + and edx,4026531839 + cmp esi,0 + je $L002generic + or edx,268435456 + shr ebx,16 + cmp bl,1 + ja $L002generic + and edx,4026531839 +$L002generic: + and ebp,2048 + and ecx,4294965247 + mov esi,edx + or ebp,ecx + cmp edi,7 + mov edi,DWORD PTR 20[esp] + jb $L005no_extended_info + mov eax,7 + xor ecx,ecx + cpuid + mov DWORD PTR 8[edi],ebx +$L005no_extended_info: + bt ebp,27 + jnc $L006clear_avx + xor ecx,ecx +DB 15,1,208 + and eax,6 + cmp eax,6 + je $L007done + cmp eax,2 + je $L006clear_avx +$L008clear_xmm: + and ebp,4261412861 + and esi,4278190079 +$L006clear_avx: + and ebp,4026525695 + and DWORD PTR 8[edi],4294967263 +$L007done: + mov eax,esi + mov edx,ebp +$L000nocpuid: + pop edi + pop esi + pop ebx + pop ebp + ret +_OPENSSL_ia32_cpuid ENDP +;EXTERN _OPENSSL_ia32cap_P:NEAR +ALIGN 16 +_OPENSSL_rdtsc PROC PUBLIC +$L_OPENSSL_rdtsc_begin:: + xor eax,eax + xor edx,edx + lea ecx,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [ecx],4 + jnc $L009notsc + rdtsc +$L009notsc: + ret +_OPENSSL_rdtsc ENDP +ALIGN 16 +_OPENSSL_instrument_halt PROC PUBLIC +$L_OPENSSL_instrument_halt_begin:: + lea ecx,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [ecx],4 + jnc $L010nohalt +DD 2421723150 + and eax,3 + jnz $L010nohalt + pushfd + pop eax + bt eax,9 + jnc $L010nohalt + rdtsc + push edx + push eax + hlt + rdtsc + sub eax,DWORD PTR [esp] + sbb edx,DWORD PTR 4[esp] + add esp,8 + ret +$L010nohalt: + xor eax,eax + xor edx,edx + ret +_OPENSSL_instrument_halt ENDP +ALIGN 16 +_OPENSSL_far_spin PROC PUBLIC +$L_OPENSSL_far_spin_begin:: + pushfd + pop eax + bt eax,9 + jnc $L011nospin + mov eax,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] +DD 2430111262 + xor eax,eax + mov edx,DWORD PTR [ecx] + jmp $L012spin +ALIGN 16 +$L012spin: + inc eax + cmp edx,DWORD PTR [ecx] + je $L012spin +DD 529567888 + ret +$L011nospin: + xor eax,eax + xor edx,edx + ret +_OPENSSL_far_spin ENDP +ALIGN 16 +_OPENSSL_wipe_cpu PROC PUBLIC +$L_OPENSSL_wipe_cpu_begin:: + xor eax,eax + xor edx,edx + lea ecx,DWORD PTR _OPENSSL_ia32cap_P + mov ecx,DWORD PTR [ecx] + bt DWORD PTR [ecx],1 + jnc $L013no_x87 + and ecx,83886080 + cmp ecx,83886080 + jne $L014no_sse2 + pxor xmm0,xmm0 + pxor xmm1,xmm1 + pxor xmm2,xmm2 + pxor xmm3,xmm3 + pxor xmm4,xmm4 + pxor xmm5,xmm5 + pxor xmm6,xmm6 + pxor xmm7,xmm7 +$L014no_sse2: +DD 4007259865,4007259865,4007259865,4007259865 +DD 2430851995 +$L013no_x87: + lea eax,DWORD PTR 4[esp] + ret +_OPENSSL_wipe_cpu ENDP +ALIGN 16 +_OPENSSL_atomic_add PROC PUBLIC +$L_OPENSSL_atomic_add_begin:: + mov edx,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] + push ebx + nop + mov eax,DWORD PTR [edx] +$L015spin: + lea ebx,DWORD PTR [ecx*1+eax] + nop +DD 447811568 + jne $L015spin + mov eax,ebx + pop ebx + ret +_OPENSSL_atomic_add ENDP +ALIGN 16 +_OPENSSL_cleanse PROC PUBLIC +$L_OPENSSL_cleanse_begin:: + mov edx,DWORD PTR 4[esp] + mov ecx,DWORD PTR 8[esp] + xor eax,eax + cmp ecx,7 + jae $L016lot + cmp ecx,0 + je $L017ret +$L018little: + mov BYTE PTR [edx],al + sub ecx,1 + lea edx,DWORD PTR 1[edx] + jnz $L018little +$L017ret: + ret +ALIGN 16 +$L016lot: + test edx,3 + jz $L019aligned + mov BYTE PTR [edx],al + lea ecx,DWORD PTR [ecx-1] + lea edx,DWORD PTR 1[edx] + jmp $L016lot +$L019aligned: + mov DWORD PTR [edx],eax + lea ecx,DWORD PTR [ecx-4] + test ecx,-4 + lea edx,DWORD PTR 4[edx] + jnz $L019aligned + cmp ecx,0 + jne $L018little + ret +_OPENSSL_cleanse ENDP +ALIGN 16 +_CRYPTO_memcmp PROC PUBLIC +$L_CRYPTO_memcmp_begin:: + push esi + push edi + mov esi,DWORD PTR 12[esp] + mov edi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + xor eax,eax + xor edx,edx + cmp ecx,0 + je $L020no_data +$L021loop: + mov dl,BYTE PTR [esi] + lea esi,DWORD PTR 1[esi] + xor dl,BYTE PTR [edi] + lea edi,DWORD PTR 1[edi] + or al,dl + dec ecx + jnz $L021loop + neg eax + shr eax,31 +$L020no_data: + pop edi + pop esi + ret +_CRYPTO_memcmp ENDP +ALIGN 16 +_OPENSSL_instrument_bus PROC PUBLIC +$L_OPENSSL_instrument_bus_begin:: + push ebp + push ebx + push esi + push edi + mov eax,0 + lea edx,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [edx],4 + jnc $L022nogo + bt DWORD PTR [edx],19 + jnc $L022nogo + mov edi,DWORD PTR 20[esp] + mov ecx,DWORD PTR 24[esp] + rdtsc + mov esi,eax + mov ebx,0 + clflush DWORD PTR [edi] +DB 240 + add DWORD PTR [edi],ebx + jmp $L023loop +ALIGN 16 +$L023loop: + rdtsc + mov edx,eax + sub eax,esi + mov esi,edx + mov ebx,eax + clflush DWORD PTR [edi] +DB 240 + add DWORD PTR [edi],eax + lea edi,DWORD PTR 4[edi] + sub ecx,1 + jnz $L023loop + mov eax,DWORD PTR 24[esp] +$L022nogo: + pop edi + pop esi + pop ebx + pop ebp + ret +_OPENSSL_instrument_bus ENDP +ALIGN 16 +_OPENSSL_instrument_bus2 PROC PUBLIC +$L_OPENSSL_instrument_bus2_begin:: + push ebp + push ebx + push esi + push edi + mov eax,0 + lea edx,DWORD PTR _OPENSSL_ia32cap_P + bt DWORD PTR [edx],4 + jnc $L024nogo + bt DWORD PTR [edx],19 + jnc $L024nogo + mov edi,DWORD PTR 20[esp] + mov ecx,DWORD PTR 24[esp] + mov ebp,DWORD PTR 28[esp] + rdtsc + mov esi,eax + mov ebx,0 + clflush DWORD PTR [edi] +DB 240 + add DWORD PTR [edi],ebx + rdtsc + mov edx,eax + sub eax,esi + mov esi,edx + mov ebx,eax + jmp $L025loop2 +ALIGN 16 +$L025loop2: + clflush DWORD PTR [edi] +DB 240 + add DWORD PTR [edi],eax + sub ebp,1 + jz $L026done2 + rdtsc + mov edx,eax + sub eax,esi + mov esi,edx + cmp eax,ebx + mov ebx,eax + mov edx,0 + setne dl + sub ecx,edx + lea edi,DWORD PTR [edx*4+edi] + jnz $L025loop2 +$L026done2: + mov eax,DWORD PTR 24[esp] + sub eax,ecx +$L024nogo: + pop edi + pop esi + pop ebx + pop ebp + ret +_OPENSSL_instrument_bus2 ENDP +ALIGN 16 +_OPENSSL_ia32_rdrand_bytes PROC PUBLIC +$L_OPENSSL_ia32_rdrand_bytes_begin:: + push edi + push ebx + xor eax,eax + mov edi,DWORD PTR 12[esp] + mov ebx,DWORD PTR 16[esp] + cmp ebx,0 + je $L027done + mov ecx,8 +$L028loop: +DB 15,199,242 + jc $L029break + loop $L028loop + jmp $L027done +ALIGN 16 +$L029break: + cmp ebx,4 + jb $L030tail + mov DWORD PTR [edi],edx + lea edi,DWORD PTR 4[edi] + add eax,4 + sub ebx,4 + jz $L027done + mov ecx,8 + jmp $L028loop +ALIGN 16 +$L030tail: + mov BYTE PTR [edi],dl + lea edi,DWORD PTR 1[edi] + inc eax + shr edx,8 + dec ebx + jnz $L030tail +$L027done: + xor edx,edx + pop ebx + pop edi + ret +_OPENSSL_ia32_rdrand_bytes ENDP +ALIGN 16 +_OPENSSL_ia32_rdseed_bytes PROC PUBLIC +$L_OPENSSL_ia32_rdseed_bytes_begin:: + push edi + push ebx + xor eax,eax + mov edi,DWORD PTR 12[esp] + mov ebx,DWORD PTR 16[esp] + cmp ebx,0 + je $L031done + mov ecx,8 +$L032loop: +DB 15,199,250 + jc $L033break + loop $L032loop + jmp $L031done +ALIGN 16 +$L033break: + cmp ebx,4 + jb $L034tail + mov DWORD PTR [edi],edx + lea edi,DWORD PTR 4[edi] + add eax,4 + sub ebx,4 + jz $L031done + mov ecx,8 + jmp $L032loop +ALIGN 16 +$L034tail: + mov BYTE PTR [edi],dl + lea edi,DWORD PTR 1[edi] + inc eax + shr edx,8 + dec ebx + jnz $L034tail +$L031done: + xor edx,edx + pop ebx + pop edi + ret +_OPENSSL_ia32_rdseed_bytes ENDP +.text$ ENDS +.bss SEGMENT 'BSS' +COMM _OPENSSL_ia32cap_P:DWORD:4 +.bss ENDS +.CRT$XCU SEGMENT DWORD PUBLIC 'DATA' +EXTERN _OPENSSL_cpuid_setup:NEAR +DD _OPENSSL_cpuid_setup +.CRT$XCU ENDS +END diff --git a/contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm b/contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm index c4c322d12e..cd8dbcbb15 100644 --- a/contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm +++ b/contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm @@ -1,1037 +1,1037 @@ -IF @Version LT 800
-ECHO MASM version 8.00 or later is strongly recommended.
-ENDIF
-.686
-.XMM
-IF @Version LT 800
-XMMWORD STRUCT 16
-DQ 2 dup (?)
-XMMWORD ENDS
-ENDIF
-
-.MODEL FLAT
-OPTION DOTNAME
-IF @Version LT 800
-.text$ SEGMENT PAGE 'CODE'
-ELSE
-.text$ SEGMENT ALIGN(64) 'CODE'
-ENDIF
-ALIGN 16
-_padlock_capability PROC PUBLIC
-$L_padlock_capability_begin::
- push ebx
- pushfd
- pop eax
- mov ecx,eax
- xor eax,2097152
- push eax
- popfd
- pushfd
- pop eax
- xor ecx,eax
- xor eax,eax
- bt ecx,21
- jnc $L000noluck
- cpuid
- xor eax,eax
- cmp ebx,0746e6543h
- jne $L001zhaoxin
- cmp edx,048727561h
- jne $L000noluck
- cmp ecx,0736c7561h
- jne $L000noluck
- jmp $L002zhaoxinEnd
-$L001zhaoxin:
- cmp ebx,068532020h
- jne $L000noluck
- cmp edx,068676e61h
- jne $L000noluck
- cmp ecx,020206961h
- jne $L000noluck
-$L002zhaoxinEnd:
- mov eax,3221225472
- cpuid
- mov edx,eax
- xor eax,eax
- cmp edx,3221225473
- jb $L000noluck
- mov eax,1
- cpuid
- or eax,15
- xor ebx,ebx
- and eax,4095
- cmp eax,1791
- sete bl
- mov eax,3221225473
- push ebx
- cpuid
- pop ebx
- mov eax,edx
- shl ebx,4
- and eax,4294967279
- or eax,ebx
-$L000noluck:
- pop ebx
- ret
-_padlock_capability ENDP
-ALIGN 16
-_padlock_key_bswap PROC PUBLIC
-$L_padlock_key_bswap_begin::
- mov edx,DWORD PTR 4[esp]
- mov ecx,DWORD PTR 240[edx]
-$L003bswap_loop:
- mov eax,DWORD PTR [edx]
- bswap eax
- mov DWORD PTR [edx],eax
- lea edx,DWORD PTR 4[edx]
- sub ecx,1
- jnz $L003bswap_loop
- ret
-_padlock_key_bswap ENDP
-ALIGN 16
-_padlock_verify_context PROC PUBLIC
-$L_padlock_verify_context_begin::
- mov edx,DWORD PTR 4[esp]
- lea eax,DWORD PTR $Lpadlock_saved_context
- pushfd
- call __padlock_verify_ctx
-$L004verify_pic_point:
- lea esp,DWORD PTR 4[esp]
- ret
-_padlock_verify_context ENDP
-ALIGN 16
-__padlock_verify_ctx PROC PRIVATE
- bt DWORD PTR 4[esp],30
- jnc $L005verified
- cmp edx,DWORD PTR [eax]
- je $L005verified
- pushfd
- popfd
-$L005verified:
- mov DWORD PTR [eax],edx
- ret
-__padlock_verify_ctx ENDP
-ALIGN 16
-_padlock_reload_key PROC PUBLIC
-$L_padlock_reload_key_begin::
- pushfd
- popfd
- ret
-_padlock_reload_key ENDP
-ALIGN 16
-_padlock_aes_block PROC PUBLIC
-$L_padlock_aes_block_begin::
- push edi
- push esi
- push ebx
- mov edi,DWORD PTR 16[esp]
- mov esi,DWORD PTR 20[esp]
- mov edx,DWORD PTR 24[esp]
- mov ecx,1
- lea ebx,DWORD PTR 32[edx]
- lea edx,DWORD PTR 16[edx]
-DB 243,15,167,200
- pop ebx
- pop esi
- pop edi
- ret
-_padlock_aes_block ENDP
-ALIGN 16
-_padlock_ecb_encrypt PROC PUBLIC
-$L_padlock_ecb_encrypt_begin::
- push ebp
- push ebx
- push esi
- push edi
- mov edi,DWORD PTR 20[esp]
- mov esi,DWORD PTR 24[esp]
- mov edx,DWORD PTR 28[esp]
- mov ecx,DWORD PTR 32[esp]
- test edx,15
- jnz $L006ecb_abort
- test ecx,15
- jnz $L006ecb_abort
- lea eax,DWORD PTR $Lpadlock_saved_context
- pushfd
- cld
- call __padlock_verify_ctx
-$L007ecb_pic_point:
- lea edx,DWORD PTR 16[edx]
- xor eax,eax
- xor ebx,ebx
- test DWORD PTR [edx],32
- jnz $L008ecb_aligned
- test edi,15
- setz al
- test esi,15
- setz bl
- test eax,ebx
- jnz $L008ecb_aligned
- neg eax
- mov ebx,512
- not eax
- lea ebp,DWORD PTR [esp-24]
- cmp ecx,ebx
- cmovc ebx,ecx
- and eax,ebx
- mov ebx,ecx
- neg eax
- and ebx,511
- lea esp,DWORD PTR [ebp*1+eax]
- mov eax,512
- cmovz ebx,eax
- mov eax,ebp
- and ebp,-16
- and esp,-16
- mov DWORD PTR 16[ebp],eax
- cmp ecx,ebx
- ja $L009ecb_loop
- mov eax,esi
- cmp ebp,esp
- cmove eax,edi
- add eax,ecx
- neg eax
- and eax,4095
- cmp eax,128
- mov eax,-128
- cmovae eax,ebx
- and ebx,eax
- jz $L010ecb_unaligned_tail
- jmp $L009ecb_loop
-ALIGN 16
-$L009ecb_loop:
- mov DWORD PTR [ebp],edi
- mov DWORD PTR 4[ebp],esi
- mov DWORD PTR 8[ebp],ecx
- mov ecx,ebx
- mov DWORD PTR 12[ebp],ebx
- test edi,15
- cmovnz edi,esp
- test esi,15
- jz $L011ecb_inp_aligned
- shr ecx,2
-DB 243,165
- sub edi,ebx
- mov ecx,ebx
- mov esi,edi
-$L011ecb_inp_aligned:
- lea eax,DWORD PTR [edx-16]
- lea ebx,DWORD PTR 16[edx]
- shr ecx,4
-DB 243,15,167,200
- mov edi,DWORD PTR [ebp]
- mov ebx,DWORD PTR 12[ebp]
- test edi,15
- jz $L012ecb_out_aligned
- mov ecx,ebx
- lea esi,DWORD PTR [esp]
- shr ecx,2
-DB 243,165
- sub edi,ebx
-$L012ecb_out_aligned:
- mov esi,DWORD PTR 4[ebp]
- mov ecx,DWORD PTR 8[ebp]
- add edi,ebx
- add esi,ebx
- sub ecx,ebx
- mov ebx,512
- jz $L013ecb_break
- cmp ecx,ebx
- jae $L009ecb_loop
-$L010ecb_unaligned_tail:
- xor eax,eax
- cmp esp,ebp
- cmove eax,ecx
- sub esp,eax
- mov eax,edi
- mov ebx,ecx
- shr ecx,2
- lea edi,DWORD PTR [esp]
-DB 243,165
- mov esi,esp
- mov edi,eax
- mov ecx,ebx
- jmp $L009ecb_loop
-ALIGN 16
-$L013ecb_break:
- cmp esp,ebp
- je $L014ecb_done
- pxor xmm0,xmm0
- lea eax,DWORD PTR [esp]
-$L015ecb_bzero:
- movaps XMMWORD PTR [eax],xmm0
- lea eax,DWORD PTR 16[eax]
- cmp ebp,eax
- ja $L015ecb_bzero
-$L014ecb_done:
- mov ebp,DWORD PTR 16[ebp]
- lea esp,DWORD PTR 24[ebp]
- jmp $L016ecb_exit
-ALIGN 16
-$L008ecb_aligned:
- lea ebp,DWORD PTR [ecx*1+esi]
- neg ebp
- and ebp,4095
- xor eax,eax
- cmp ebp,128
- mov ebp,127
- cmovae ebp,eax
- and ebp,ecx
- sub ecx,ebp
- jz $L017ecb_aligned_tail
- lea eax,DWORD PTR [edx-16]
- lea ebx,DWORD PTR 16[edx]
- shr ecx,4
-DB 243,15,167,200
- test ebp,ebp
- jz $L016ecb_exit
-$L017ecb_aligned_tail:
- mov ecx,ebp
- lea ebp,DWORD PTR [esp-24]
- mov esp,ebp
- mov eax,ebp
- sub esp,ecx
- and ebp,-16
- and esp,-16
- mov DWORD PTR 16[ebp],eax
- mov eax,edi
- mov ebx,ecx
- shr ecx,2
- lea edi,DWORD PTR [esp]
-DB 243,165
- mov esi,esp
- mov edi,eax
- mov ecx,ebx
- jmp $L009ecb_loop
-$L016ecb_exit:
- mov eax,1
- lea esp,DWORD PTR 4[esp]
-$L006ecb_abort:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_padlock_ecb_encrypt ENDP
-ALIGN 16
-_padlock_cbc_encrypt PROC PUBLIC
-$L_padlock_cbc_encrypt_begin::
- push ebp
- push ebx
- push esi
- push edi
- mov edi,DWORD PTR 20[esp]
- mov esi,DWORD PTR 24[esp]
- mov edx,DWORD PTR 28[esp]
- mov ecx,DWORD PTR 32[esp]
- test edx,15
- jnz $L018cbc_abort
- test ecx,15
- jnz $L018cbc_abort
- lea eax,DWORD PTR $Lpadlock_saved_context
- pushfd
- cld
- call __padlock_verify_ctx
-$L019cbc_pic_point:
- lea edx,DWORD PTR 16[edx]
- xor eax,eax
- xor ebx,ebx
- test DWORD PTR [edx],32
- jnz $L020cbc_aligned
- test edi,15
- setz al
- test esi,15
- setz bl
- test eax,ebx
- jnz $L020cbc_aligned
- neg eax
- mov ebx,512
- not eax
- lea ebp,DWORD PTR [esp-24]
- cmp ecx,ebx
- cmovc ebx,ecx
- and eax,ebx
- mov ebx,ecx
- neg eax
- and ebx,511
- lea esp,DWORD PTR [ebp*1+eax]
- mov eax,512
- cmovz ebx,eax
- mov eax,ebp
- and ebp,-16
- and esp,-16
- mov DWORD PTR 16[ebp],eax
- cmp ecx,ebx
- ja $L021cbc_loop
- mov eax,esi
- cmp ebp,esp
- cmove eax,edi
- add eax,ecx
- neg eax
- and eax,4095
- cmp eax,64
- mov eax,-64
- cmovae eax,ebx
- and ebx,eax
- jz $L022cbc_unaligned_tail
- jmp $L021cbc_loop
-ALIGN 16
-$L021cbc_loop:
- mov DWORD PTR [ebp],edi
- mov DWORD PTR 4[ebp],esi
- mov DWORD PTR 8[ebp],ecx
- mov ecx,ebx
- mov DWORD PTR 12[ebp],ebx
- test edi,15
- cmovnz edi,esp
- test esi,15
- jz $L023cbc_inp_aligned
- shr ecx,2
-DB 243,165
- sub edi,ebx
- mov ecx,ebx
- mov esi,edi
-$L023cbc_inp_aligned:
- lea eax,DWORD PTR [edx-16]
- lea ebx,DWORD PTR 16[edx]
- shr ecx,4
-DB 243,15,167,208
- movaps xmm0,XMMWORD PTR [eax]
- movaps XMMWORD PTR [edx-16],xmm0
- mov edi,DWORD PTR [ebp]
- mov ebx,DWORD PTR 12[ebp]
- test edi,15
- jz $L024cbc_out_aligned
- mov ecx,ebx
- lea esi,DWORD PTR [esp]
- shr ecx,2
-DB 243,165
- sub edi,ebx
-$L024cbc_out_aligned:
- mov esi,DWORD PTR 4[ebp]
- mov ecx,DWORD PTR 8[ebp]
- add edi,ebx
- add esi,ebx
- sub ecx,ebx
- mov ebx,512
- jz $L025cbc_break
- cmp ecx,ebx
- jae $L021cbc_loop
-$L022cbc_unaligned_tail:
- xor eax,eax
- cmp esp,ebp
- cmove eax,ecx
- sub esp,eax
- mov eax,edi
- mov ebx,ecx
- shr ecx,2
- lea edi,DWORD PTR [esp]
-DB 243,165
- mov esi,esp
- mov edi,eax
- mov ecx,ebx
- jmp $L021cbc_loop
-ALIGN 16
-$L025cbc_break:
- cmp esp,ebp
- je $L026cbc_done
- pxor xmm0,xmm0
- lea eax,DWORD PTR [esp]
-$L027cbc_bzero:
- movaps XMMWORD PTR [eax],xmm0
- lea eax,DWORD PTR 16[eax]
- cmp ebp,eax
- ja $L027cbc_bzero
-$L026cbc_done:
- mov ebp,DWORD PTR 16[ebp]
- lea esp,DWORD PTR 24[ebp]
- jmp $L028cbc_exit
-ALIGN 16
-$L020cbc_aligned:
- lea ebp,DWORD PTR [ecx*1+esi]
- neg ebp
- and ebp,4095
- xor eax,eax
- cmp ebp,64
- mov ebp,63
- cmovae ebp,eax
- and ebp,ecx
- sub ecx,ebp
- jz $L029cbc_aligned_tail
- lea eax,DWORD PTR [edx-16]
- lea ebx,DWORD PTR 16[edx]
- shr ecx,4
-DB 243,15,167,208
- movaps xmm0,XMMWORD PTR [eax]
- movaps XMMWORD PTR [edx-16],xmm0
- test ebp,ebp
- jz $L028cbc_exit
-$L029cbc_aligned_tail:
- mov ecx,ebp
- lea ebp,DWORD PTR [esp-24]
- mov esp,ebp
- mov eax,ebp
- sub esp,ecx
- and ebp,-16
- and esp,-16
- mov DWORD PTR 16[ebp],eax
- mov eax,edi
- mov ebx,ecx
- shr ecx,2
- lea edi,DWORD PTR [esp]
-DB 243,165
- mov esi,esp
- mov edi,eax
- mov ecx,ebx
- jmp $L021cbc_loop
-$L028cbc_exit:
- mov eax,1
- lea esp,DWORD PTR 4[esp]
-$L018cbc_abort:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_padlock_cbc_encrypt ENDP
-ALIGN 16
-_padlock_cfb_encrypt PROC PUBLIC
-$L_padlock_cfb_encrypt_begin::
- push ebp
- push ebx
- push esi
- push edi
- mov edi,DWORD PTR 20[esp]
- mov esi,DWORD PTR 24[esp]
- mov edx,DWORD PTR 28[esp]
- mov ecx,DWORD PTR 32[esp]
- test edx,15
- jnz $L030cfb_abort
- test ecx,15
- jnz $L030cfb_abort
- lea eax,DWORD PTR $Lpadlock_saved_context
- pushfd
- cld
- call __padlock_verify_ctx
-$L031cfb_pic_point:
- lea edx,DWORD PTR 16[edx]
- xor eax,eax
- xor ebx,ebx
- test DWORD PTR [edx],32
- jnz $L032cfb_aligned
- test edi,15
- setz al
- test esi,15
- setz bl
- test eax,ebx
- jnz $L032cfb_aligned
- neg eax
- mov ebx,512
- not eax
- lea ebp,DWORD PTR [esp-24]
- cmp ecx,ebx
- cmovc ebx,ecx
- and eax,ebx
- mov ebx,ecx
- neg eax
- and ebx,511
- lea esp,DWORD PTR [ebp*1+eax]
- mov eax,512
- cmovz ebx,eax
- mov eax,ebp
- and ebp,-16
- and esp,-16
- mov DWORD PTR 16[ebp],eax
- jmp $L033cfb_loop
-ALIGN 16
-$L033cfb_loop:
- mov DWORD PTR [ebp],edi
- mov DWORD PTR 4[ebp],esi
- mov DWORD PTR 8[ebp],ecx
- mov ecx,ebx
- mov DWORD PTR 12[ebp],ebx
- test edi,15
- cmovnz edi,esp
- test esi,15
- jz $L034cfb_inp_aligned
- shr ecx,2
-DB 243,165
- sub edi,ebx
- mov ecx,ebx
- mov esi,edi
-$L034cfb_inp_aligned:
- lea eax,DWORD PTR [edx-16]
- lea ebx,DWORD PTR 16[edx]
- shr ecx,4
-DB 243,15,167,224
- movaps xmm0,XMMWORD PTR [eax]
- movaps XMMWORD PTR [edx-16],xmm0
- mov edi,DWORD PTR [ebp]
- mov ebx,DWORD PTR 12[ebp]
- test edi,15
- jz $L035cfb_out_aligned
- mov ecx,ebx
- lea esi,DWORD PTR [esp]
- shr ecx,2
-DB 243,165
- sub edi,ebx
-$L035cfb_out_aligned:
- mov esi,DWORD PTR 4[ebp]
- mov ecx,DWORD PTR 8[ebp]
- add edi,ebx
- add esi,ebx
- sub ecx,ebx
- mov ebx,512
- jnz $L033cfb_loop
- cmp esp,ebp
- je $L036cfb_done
- pxor xmm0,xmm0
- lea eax,DWORD PTR [esp]
-$L037cfb_bzero:
- movaps XMMWORD PTR [eax],xmm0
- lea eax,DWORD PTR 16[eax]
- cmp ebp,eax
- ja $L037cfb_bzero
-$L036cfb_done:
- mov ebp,DWORD PTR 16[ebp]
- lea esp,DWORD PTR 24[ebp]
- jmp $L038cfb_exit
-ALIGN 16
-$L032cfb_aligned:
- lea eax,DWORD PTR [edx-16]
- lea ebx,DWORD PTR 16[edx]
- shr ecx,4
-DB 243,15,167,224
- movaps xmm0,XMMWORD PTR [eax]
- movaps XMMWORD PTR [edx-16],xmm0
-$L038cfb_exit:
- mov eax,1
- lea esp,DWORD PTR 4[esp]
-$L030cfb_abort:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_padlock_cfb_encrypt ENDP
-ALIGN 16
-_padlock_ofb_encrypt PROC PUBLIC
-$L_padlock_ofb_encrypt_begin::
- push ebp
- push ebx
- push esi
- push edi
- mov edi,DWORD PTR 20[esp]
- mov esi,DWORD PTR 24[esp]
- mov edx,DWORD PTR 28[esp]
- mov ecx,DWORD PTR 32[esp]
- test edx,15
- jnz $L039ofb_abort
- test ecx,15
- jnz $L039ofb_abort
- lea eax,DWORD PTR $Lpadlock_saved_context
- pushfd
- cld
- call __padlock_verify_ctx
-$L040ofb_pic_point:
- lea edx,DWORD PTR 16[edx]
- xor eax,eax
- xor ebx,ebx
- test DWORD PTR [edx],32
- jnz $L041ofb_aligned
- test edi,15
- setz al
- test esi,15
- setz bl
- test eax,ebx
- jnz $L041ofb_aligned
- neg eax
- mov ebx,512
- not eax
- lea ebp,DWORD PTR [esp-24]
- cmp ecx,ebx
- cmovc ebx,ecx
- and eax,ebx
- mov ebx,ecx
- neg eax
- and ebx,511
- lea esp,DWORD PTR [ebp*1+eax]
- mov eax,512
- cmovz ebx,eax
- mov eax,ebp
- and ebp,-16
- and esp,-16
- mov DWORD PTR 16[ebp],eax
- jmp $L042ofb_loop
-ALIGN 16
-$L042ofb_loop:
- mov DWORD PTR [ebp],edi
- mov DWORD PTR 4[ebp],esi
- mov DWORD PTR 8[ebp],ecx
- mov ecx,ebx
- mov DWORD PTR 12[ebp],ebx
- test edi,15
- cmovnz edi,esp
- test esi,15
- jz $L043ofb_inp_aligned
- shr ecx,2
-DB 243,165
- sub edi,ebx
- mov ecx,ebx
- mov esi,edi
-$L043ofb_inp_aligned:
- lea eax,DWORD PTR [edx-16]
- lea ebx,DWORD PTR 16[edx]
- shr ecx,4
-DB 243,15,167,232
- movaps xmm0,XMMWORD PTR [eax]
- movaps XMMWORD PTR [edx-16],xmm0
- mov edi,DWORD PTR [ebp]
- mov ebx,DWORD PTR 12[ebp]
- test edi,15
- jz $L044ofb_out_aligned
- mov ecx,ebx
- lea esi,DWORD PTR [esp]
- shr ecx,2
-DB 243,165
- sub edi,ebx
-$L044ofb_out_aligned:
- mov esi,DWORD PTR 4[ebp]
- mov ecx,DWORD PTR 8[ebp]
- add edi,ebx
- add esi,ebx
- sub ecx,ebx
- mov ebx,512
- jnz $L042ofb_loop
- cmp esp,ebp
- je $L045ofb_done
- pxor xmm0,xmm0
- lea eax,DWORD PTR [esp]
-$L046ofb_bzero:
- movaps XMMWORD PTR [eax],xmm0
- lea eax,DWORD PTR 16[eax]
- cmp ebp,eax
- ja $L046ofb_bzero
-$L045ofb_done:
- mov ebp,DWORD PTR 16[ebp]
- lea esp,DWORD PTR 24[ebp]
- jmp $L047ofb_exit
-ALIGN 16
-$L041ofb_aligned:
- lea eax,DWORD PTR [edx-16]
- lea ebx,DWORD PTR 16[edx]
- shr ecx,4
-DB 243,15,167,232
- movaps xmm0,XMMWORD PTR [eax]
- movaps XMMWORD PTR [edx-16],xmm0
-$L047ofb_exit:
- mov eax,1
- lea esp,DWORD PTR 4[esp]
-$L039ofb_abort:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_padlock_ofb_encrypt ENDP
-ALIGN 16
-_padlock_ctr32_encrypt PROC PUBLIC
-$L_padlock_ctr32_encrypt_begin::
- push ebp
- push ebx
- push esi
- push edi
- mov edi,DWORD PTR 20[esp]
- mov esi,DWORD PTR 24[esp]
- mov edx,DWORD PTR 28[esp]
- mov ecx,DWORD PTR 32[esp]
- test edx,15
- jnz $L048ctr32_abort
- test ecx,15
- jnz $L048ctr32_abort
- lea eax,DWORD PTR $Lpadlock_saved_context
- pushfd
- cld
- call __padlock_verify_ctx
-$L049ctr32_pic_point:
- lea edx,DWORD PTR 16[edx]
- xor eax,eax
- movq mm0,QWORD PTR [edx-16]
- mov ebx,512
- not eax
- lea ebp,DWORD PTR [esp-24]
- cmp ecx,ebx
- cmovc ebx,ecx
- and eax,ebx
- mov ebx,ecx
- neg eax
- and ebx,511
- lea esp,DWORD PTR [ebp*1+eax]
- mov eax,512
- cmovz ebx,eax
- mov eax,ebp
- and ebp,-16
- and esp,-16
- mov DWORD PTR 16[ebp],eax
- jmp $L050ctr32_loop
-ALIGN 16
-$L050ctr32_loop:
- mov DWORD PTR [ebp],edi
- mov DWORD PTR 4[ebp],esi
- mov DWORD PTR 8[ebp],ecx
- mov ecx,ebx
- mov DWORD PTR 12[ebp],ebx
- mov ecx,DWORD PTR [edx-4]
- xor edi,edi
- mov eax,DWORD PTR [edx-8]
-$L051ctr32_prepare:
- mov DWORD PTR 12[edi*1+esp],ecx
- bswap ecx
- movq QWORD PTR [edi*1+esp],mm0
- inc ecx
- mov DWORD PTR 8[edi*1+esp],eax
- bswap ecx
- lea edi,DWORD PTR 16[edi]
- cmp edi,ebx
- jb $L051ctr32_prepare
- mov DWORD PTR [edx-4],ecx
- lea esi,DWORD PTR [esp]
- lea edi,DWORD PTR [esp]
- mov ecx,ebx
- lea eax,DWORD PTR [edx-16]
- lea ebx,DWORD PTR 16[edx]
- shr ecx,4
-DB 243,15,167,200
- mov edi,DWORD PTR [ebp]
- mov ebx,DWORD PTR 12[ebp]
- mov esi,DWORD PTR 4[ebp]
- xor ecx,ecx
-$L052ctr32_xor:
- movups xmm1,XMMWORD PTR [ecx*1+esi]
- lea ecx,DWORD PTR 16[ecx]
- pxor xmm1,XMMWORD PTR [ecx*1+esp-16]
- movups XMMWORD PTR [ecx*1+edi-16],xmm1
- cmp ecx,ebx
- jb $L052ctr32_xor
- mov ecx,DWORD PTR 8[ebp]
- add edi,ebx
- add esi,ebx
- sub ecx,ebx
- mov ebx,512
- jnz $L050ctr32_loop
- pxor xmm0,xmm0
- lea eax,DWORD PTR [esp]
-$L053ctr32_bzero:
- movaps XMMWORD PTR [eax],xmm0
- lea eax,DWORD PTR 16[eax]
- cmp ebp,eax
- ja $L053ctr32_bzero
-$L054ctr32_done:
- mov ebp,DWORD PTR 16[ebp]
- lea esp,DWORD PTR 24[ebp]
- mov eax,1
- lea esp,DWORD PTR 4[esp]
- emms
-$L048ctr32_abort:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_padlock_ctr32_encrypt ENDP
-ALIGN 16
-_padlock_xstore PROC PUBLIC
-$L_padlock_xstore_begin::
- push edi
- mov edi,DWORD PTR 8[esp]
- mov edx,DWORD PTR 12[esp]
-DB 15,167,192
- pop edi
- ret
-_padlock_xstore ENDP
-ALIGN 16
-__win32_segv_handler PROC PRIVATE
- mov eax,1
- mov edx,DWORD PTR 4[esp]
- mov ecx,DWORD PTR 12[esp]
- cmp DWORD PTR [edx],3221225477
- jne $L055ret
- add DWORD PTR 184[ecx],4
- mov eax,0
-$L055ret:
- ret
-__win32_segv_handler ENDP
-IF @Version GE 710
-.SAFESEH __win32_segv_handler
-ENDIF
-ALIGN 16
-_padlock_sha1_oneshot PROC PUBLIC
-$L_padlock_sha1_oneshot_begin::
- push edi
- push esi
- xor eax,eax
- mov edi,DWORD PTR 12[esp]
- mov esi,DWORD PTR 16[esp]
- mov ecx,DWORD PTR 20[esp]
- push __win32_segv_handler
-DB 100,255,48
-DB 100,137,32
- mov edx,esp
- add esp,-128
- movups xmm0,XMMWORD PTR [edi]
- and esp,-16
- mov eax,DWORD PTR 16[edi]
- movaps XMMWORD PTR [esp],xmm0
- mov edi,esp
- mov DWORD PTR 16[esp],eax
- xor eax,eax
-DB 243,15,166,200
- movaps xmm0,XMMWORD PTR [esp]
- mov eax,DWORD PTR 16[esp]
- mov esp,edx
-DB 100,143,5,0,0,0,0
- lea esp,DWORD PTR 4[esp]
- mov edi,DWORD PTR 16[esp]
- movups XMMWORD PTR [edi],xmm0
- mov DWORD PTR 16[edi],eax
- pop esi
- pop edi
- ret
-_padlock_sha1_oneshot ENDP
-ALIGN 16
-_padlock_sha1_blocks PROC PUBLIC
-$L_padlock_sha1_blocks_begin::
- push edi
- push esi
- mov edi,DWORD PTR 12[esp]
- mov esi,DWORD PTR 16[esp]
- mov edx,esp
- mov ecx,DWORD PTR 20[esp]
- add esp,-128
- movups xmm0,XMMWORD PTR [edi]
- and esp,-16
- mov eax,DWORD PTR 16[edi]
- movaps XMMWORD PTR [esp],xmm0
- mov edi,esp
- mov DWORD PTR 16[esp],eax
- mov eax,-1
-DB 243,15,166,200
- movaps xmm0,XMMWORD PTR [esp]
- mov eax,DWORD PTR 16[esp]
- mov esp,edx
- mov edi,DWORD PTR 12[esp]
- movups XMMWORD PTR [edi],xmm0
- mov DWORD PTR 16[edi],eax
- pop esi
- pop edi
- ret
-_padlock_sha1_blocks ENDP
-ALIGN 16
-_padlock_sha256_oneshot PROC PUBLIC
-$L_padlock_sha256_oneshot_begin::
- push edi
- push esi
- xor eax,eax
- mov edi,DWORD PTR 12[esp]
- mov esi,DWORD PTR 16[esp]
- mov ecx,DWORD PTR 20[esp]
- push __win32_segv_handler
-DB 100,255,48
-DB 100,137,32
- mov edx,esp
- add esp,-128
- movups xmm0,XMMWORD PTR [edi]
- and esp,-16
- movups xmm1,XMMWORD PTR 16[edi]
- movaps XMMWORD PTR [esp],xmm0
- mov edi,esp
- movaps XMMWORD PTR 16[esp],xmm1
- xor eax,eax
-DB 243,15,166,208
- movaps xmm0,XMMWORD PTR [esp]
- movaps xmm1,XMMWORD PTR 16[esp]
- mov esp,edx
-DB 100,143,5,0,0,0,0
- lea esp,DWORD PTR 4[esp]
- mov edi,DWORD PTR 16[esp]
- movups XMMWORD PTR [edi],xmm0
- movups XMMWORD PTR 16[edi],xmm1
- pop esi
- pop edi
- ret
-_padlock_sha256_oneshot ENDP
-ALIGN 16
-_padlock_sha256_blocks PROC PUBLIC
-$L_padlock_sha256_blocks_begin::
- push edi
- push esi
- mov edi,DWORD PTR 12[esp]
- mov esi,DWORD PTR 16[esp]
- mov ecx,DWORD PTR 20[esp]
- mov edx,esp
- add esp,-128
- movups xmm0,XMMWORD PTR [edi]
- and esp,-16
- movups xmm1,XMMWORD PTR 16[edi]
- movaps XMMWORD PTR [esp],xmm0
- mov edi,esp
- movaps XMMWORD PTR 16[esp],xmm1
- mov eax,-1
-DB 243,15,166,208
- movaps xmm0,XMMWORD PTR [esp]
- movaps xmm1,XMMWORD PTR 16[esp]
- mov esp,edx
- mov edi,DWORD PTR 12[esp]
- movups XMMWORD PTR [edi],xmm0
- movups XMMWORD PTR 16[edi],xmm1
- pop esi
- pop edi
- ret
-_padlock_sha256_blocks ENDP
-ALIGN 16
-_padlock_sha512_blocks PROC PUBLIC
-$L_padlock_sha512_blocks_begin::
- push edi
- push esi
- mov edi,DWORD PTR 12[esp]
- mov esi,DWORD PTR 16[esp]
- mov ecx,DWORD PTR 20[esp]
- mov edx,esp
- add esp,-128
- movups xmm0,XMMWORD PTR [edi]
- and esp,-16
- movups xmm1,XMMWORD PTR 16[edi]
- movups xmm2,XMMWORD PTR 32[edi]
- movups xmm3,XMMWORD PTR 48[edi]
- movaps XMMWORD PTR [esp],xmm0
- mov edi,esp
- movaps XMMWORD PTR 16[esp],xmm1
- movaps XMMWORD PTR 32[esp],xmm2
- movaps XMMWORD PTR 48[esp],xmm3
-DB 243,15,166,224
- movaps xmm0,XMMWORD PTR [esp]
- movaps xmm1,XMMWORD PTR 16[esp]
- movaps xmm2,XMMWORD PTR 32[esp]
- movaps xmm3,XMMWORD PTR 48[esp]
- mov esp,edx
- mov edi,DWORD PTR 12[esp]
- movups XMMWORD PTR [edi],xmm0
- movups XMMWORD PTR 16[edi],xmm1
- movups XMMWORD PTR 32[edi],xmm2
- movups XMMWORD PTR 48[edi],xmm3
- pop esi
- pop edi
- ret
-_padlock_sha512_blocks ENDP
-DB 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32
-DB 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65
-DB 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101
-DB 110,115,115,108,46,111,114,103,62,0
-ALIGN 16
-.text$ ENDS
-_DATA SEGMENT
-ALIGN 4
-$Lpadlock_saved_context::
-DD 0
-_DATA ENDS
-END
+IF @Version LT 800 +ECHO MASM version 8.00 or later is strongly recommended. +ENDIF +.686 +.XMM +IF @Version LT 800 +XMMWORD STRUCT 16 +DQ 2 dup (?) +XMMWORD ENDS +ENDIF + +.MODEL FLAT +OPTION DOTNAME +IF @Version LT 800 +.text$ SEGMENT PAGE 'CODE' +ELSE +.text$ SEGMENT ALIGN(64) 'CODE' +ENDIF +ALIGN 16 +_padlock_capability PROC PUBLIC +$L_padlock_capability_begin:: + push ebx + pushfd + pop eax + mov ecx,eax + xor eax,2097152 + push eax + popfd + pushfd + pop eax + xor ecx,eax + xor eax,eax + bt ecx,21 + jnc $L000noluck + cpuid + xor eax,eax + cmp ebx,0746e6543h + jne $L001zhaoxin + cmp edx,048727561h + jne $L000noluck + cmp ecx,0736c7561h + jne $L000noluck + jmp $L002zhaoxinEnd +$L001zhaoxin: + cmp ebx,068532020h + jne $L000noluck + cmp edx,068676e61h + jne $L000noluck + cmp ecx,020206961h + jne $L000noluck +$L002zhaoxinEnd: + mov eax,3221225472 + cpuid + mov edx,eax + xor eax,eax + cmp edx,3221225473 + jb $L000noluck + mov eax,1 + cpuid + or eax,15 + xor ebx,ebx + and eax,4095 + cmp eax,1791 + sete bl + mov eax,3221225473 + push ebx + cpuid + pop ebx + mov eax,edx + shl ebx,4 + and eax,4294967279 + or eax,ebx +$L000noluck: + pop ebx + ret +_padlock_capability ENDP +ALIGN 16 +_padlock_key_bswap PROC PUBLIC +$L_padlock_key_bswap_begin:: + mov edx,DWORD PTR 4[esp] + mov ecx,DWORD PTR 240[edx] +$L003bswap_loop: + mov eax,DWORD PTR [edx] + bswap eax + mov DWORD PTR [edx],eax + lea edx,DWORD PTR 4[edx] + sub ecx,1 + jnz $L003bswap_loop + ret +_padlock_key_bswap ENDP +ALIGN 16 +_padlock_verify_context PROC PUBLIC +$L_padlock_verify_context_begin:: + mov edx,DWORD PTR 4[esp] + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + call __padlock_verify_ctx +$L004verify_pic_point: + lea esp,DWORD PTR 4[esp] + ret +_padlock_verify_context ENDP +ALIGN 16 +__padlock_verify_ctx PROC PRIVATE + bt DWORD PTR 4[esp],30 + jnc $L005verified + cmp edx,DWORD PTR [eax] + je $L005verified + pushfd + popfd +$L005verified: + mov DWORD PTR [eax],edx + ret +__padlock_verify_ctx ENDP +ALIGN 16 +_padlock_reload_key PROC PUBLIC +$L_padlock_reload_key_begin:: + pushfd + popfd + ret +_padlock_reload_key ENDP +ALIGN 16 +_padlock_aes_block PROC PUBLIC +$L_padlock_aes_block_begin:: + push edi + push esi + push ebx + mov edi,DWORD PTR 16[esp] + mov esi,DWORD PTR 20[esp] + mov edx,DWORD PTR 24[esp] + mov ecx,1 + lea ebx,DWORD PTR 32[edx] + lea edx,DWORD PTR 16[edx] +DB 243,15,167,200 + pop ebx + pop esi + pop edi + ret +_padlock_aes_block ENDP +ALIGN 16 +_padlock_ecb_encrypt PROC PUBLIC +$L_padlock_ecb_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L006ecb_abort + test ecx,15 + jnz $L006ecb_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L007ecb_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + xor ebx,ebx + test DWORD PTR [edx],32 + jnz $L008ecb_aligned + test edi,15 + setz al + test esi,15 + setz bl + test eax,ebx + jnz $L008ecb_aligned + neg eax + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + cmp ecx,ebx + ja $L009ecb_loop + mov eax,esi + cmp ebp,esp + cmove eax,edi + add eax,ecx + neg eax + and eax,4095 + cmp eax,128 + mov eax,-128 + cmovae eax,ebx + and ebx,eax + jz $L010ecb_unaligned_tail + jmp $L009ecb_loop +ALIGN 16 +$L009ecb_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + test edi,15 + cmovnz edi,esp + test esi,15 + jz $L011ecb_inp_aligned + shr ecx,2 +DB 243,165 + sub edi,ebx + mov ecx,ebx + mov esi,edi +$L011ecb_inp_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,200 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + test edi,15 + jz $L012ecb_out_aligned + mov ecx,ebx + lea esi,DWORD PTR [esp] + shr ecx,2 +DB 243,165 + sub edi,ebx +$L012ecb_out_aligned: + mov esi,DWORD PTR 4[ebp] + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jz $L013ecb_break + cmp ecx,ebx + jae $L009ecb_loop +$L010ecb_unaligned_tail: + xor eax,eax + cmp esp,ebp + cmove eax,ecx + sub esp,eax + mov eax,edi + mov ebx,ecx + shr ecx,2 + lea edi,DWORD PTR [esp] +DB 243,165 + mov esi,esp + mov edi,eax + mov ecx,ebx + jmp $L009ecb_loop +ALIGN 16 +$L013ecb_break: + cmp esp,ebp + je $L014ecb_done + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L015ecb_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L015ecb_bzero +$L014ecb_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + jmp $L016ecb_exit +ALIGN 16 +$L008ecb_aligned: + lea ebp,DWORD PTR [ecx*1+esi] + neg ebp + and ebp,4095 + xor eax,eax + cmp ebp,128 + mov ebp,127 + cmovae ebp,eax + and ebp,ecx + sub ecx,ebp + jz $L017ecb_aligned_tail + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,200 + test ebp,ebp + jz $L016ecb_exit +$L017ecb_aligned_tail: + mov ecx,ebp + lea ebp,DWORD PTR [esp-24] + mov esp,ebp + mov eax,ebp + sub esp,ecx + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + mov eax,edi + mov ebx,ecx + shr ecx,2 + lea edi,DWORD PTR [esp] +DB 243,165 + mov esi,esp + mov edi,eax + mov ecx,ebx + jmp $L009ecb_loop +$L016ecb_exit: + mov eax,1 + lea esp,DWORD PTR 4[esp] +$L006ecb_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_ecb_encrypt ENDP +ALIGN 16 +_padlock_cbc_encrypt PROC PUBLIC +$L_padlock_cbc_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L018cbc_abort + test ecx,15 + jnz $L018cbc_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L019cbc_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + xor ebx,ebx + test DWORD PTR [edx],32 + jnz $L020cbc_aligned + test edi,15 + setz al + test esi,15 + setz bl + test eax,ebx + jnz $L020cbc_aligned + neg eax + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + cmp ecx,ebx + ja $L021cbc_loop + mov eax,esi + cmp ebp,esp + cmove eax,edi + add eax,ecx + neg eax + and eax,4095 + cmp eax,64 + mov eax,-64 + cmovae eax,ebx + and ebx,eax + jz $L022cbc_unaligned_tail + jmp $L021cbc_loop +ALIGN 16 +$L021cbc_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + test edi,15 + cmovnz edi,esp + test esi,15 + jz $L023cbc_inp_aligned + shr ecx,2 +DB 243,165 + sub edi,ebx + mov ecx,ebx + mov esi,edi +$L023cbc_inp_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,208 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + test edi,15 + jz $L024cbc_out_aligned + mov ecx,ebx + lea esi,DWORD PTR [esp] + shr ecx,2 +DB 243,165 + sub edi,ebx +$L024cbc_out_aligned: + mov esi,DWORD PTR 4[ebp] + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jz $L025cbc_break + cmp ecx,ebx + jae $L021cbc_loop +$L022cbc_unaligned_tail: + xor eax,eax + cmp esp,ebp + cmove eax,ecx + sub esp,eax + mov eax,edi + mov ebx,ecx + shr ecx,2 + lea edi,DWORD PTR [esp] +DB 243,165 + mov esi,esp + mov edi,eax + mov ecx,ebx + jmp $L021cbc_loop +ALIGN 16 +$L025cbc_break: + cmp esp,ebp + je $L026cbc_done + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L027cbc_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L027cbc_bzero +$L026cbc_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + jmp $L028cbc_exit +ALIGN 16 +$L020cbc_aligned: + lea ebp,DWORD PTR [ecx*1+esi] + neg ebp + and ebp,4095 + xor eax,eax + cmp ebp,64 + mov ebp,63 + cmovae ebp,eax + and ebp,ecx + sub ecx,ebp + jz $L029cbc_aligned_tail + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,208 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 + test ebp,ebp + jz $L028cbc_exit +$L029cbc_aligned_tail: + mov ecx,ebp + lea ebp,DWORD PTR [esp-24] + mov esp,ebp + mov eax,ebp + sub esp,ecx + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + mov eax,edi + mov ebx,ecx + shr ecx,2 + lea edi,DWORD PTR [esp] +DB 243,165 + mov esi,esp + mov edi,eax + mov ecx,ebx + jmp $L021cbc_loop +$L028cbc_exit: + mov eax,1 + lea esp,DWORD PTR 4[esp] +$L018cbc_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_cbc_encrypt ENDP +ALIGN 16 +_padlock_cfb_encrypt PROC PUBLIC +$L_padlock_cfb_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L030cfb_abort + test ecx,15 + jnz $L030cfb_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L031cfb_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + xor ebx,ebx + test DWORD PTR [edx],32 + jnz $L032cfb_aligned + test edi,15 + setz al + test esi,15 + setz bl + test eax,ebx + jnz $L032cfb_aligned + neg eax + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + jmp $L033cfb_loop +ALIGN 16 +$L033cfb_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + test edi,15 + cmovnz edi,esp + test esi,15 + jz $L034cfb_inp_aligned + shr ecx,2 +DB 243,165 + sub edi,ebx + mov ecx,ebx + mov esi,edi +$L034cfb_inp_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,224 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + test edi,15 + jz $L035cfb_out_aligned + mov ecx,ebx + lea esi,DWORD PTR [esp] + shr ecx,2 +DB 243,165 + sub edi,ebx +$L035cfb_out_aligned: + mov esi,DWORD PTR 4[ebp] + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jnz $L033cfb_loop + cmp esp,ebp + je $L036cfb_done + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L037cfb_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L037cfb_bzero +$L036cfb_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + jmp $L038cfb_exit +ALIGN 16 +$L032cfb_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,224 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 +$L038cfb_exit: + mov eax,1 + lea esp,DWORD PTR 4[esp] +$L030cfb_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_cfb_encrypt ENDP +ALIGN 16 +_padlock_ofb_encrypt PROC PUBLIC +$L_padlock_ofb_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L039ofb_abort + test ecx,15 + jnz $L039ofb_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L040ofb_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + xor ebx,ebx + test DWORD PTR [edx],32 + jnz $L041ofb_aligned + test edi,15 + setz al + test esi,15 + setz bl + test eax,ebx + jnz $L041ofb_aligned + neg eax + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + jmp $L042ofb_loop +ALIGN 16 +$L042ofb_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + test edi,15 + cmovnz edi,esp + test esi,15 + jz $L043ofb_inp_aligned + shr ecx,2 +DB 243,165 + sub edi,ebx + mov ecx,ebx + mov esi,edi +$L043ofb_inp_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,232 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + test edi,15 + jz $L044ofb_out_aligned + mov ecx,ebx + lea esi,DWORD PTR [esp] + shr ecx,2 +DB 243,165 + sub edi,ebx +$L044ofb_out_aligned: + mov esi,DWORD PTR 4[ebp] + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jnz $L042ofb_loop + cmp esp,ebp + je $L045ofb_done + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L046ofb_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L046ofb_bzero +$L045ofb_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + jmp $L047ofb_exit +ALIGN 16 +$L041ofb_aligned: + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,232 + movaps xmm0,XMMWORD PTR [eax] + movaps XMMWORD PTR [edx-16],xmm0 +$L047ofb_exit: + mov eax,1 + lea esp,DWORD PTR 4[esp] +$L039ofb_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_ofb_encrypt ENDP +ALIGN 16 +_padlock_ctr32_encrypt PROC PUBLIC +$L_padlock_ctr32_encrypt_begin:: + push ebp + push ebx + push esi + push edi + mov edi,DWORD PTR 20[esp] + mov esi,DWORD PTR 24[esp] + mov edx,DWORD PTR 28[esp] + mov ecx,DWORD PTR 32[esp] + test edx,15 + jnz $L048ctr32_abort + test ecx,15 + jnz $L048ctr32_abort + lea eax,DWORD PTR $Lpadlock_saved_context + pushfd + cld + call __padlock_verify_ctx +$L049ctr32_pic_point: + lea edx,DWORD PTR 16[edx] + xor eax,eax + movq mm0,QWORD PTR [edx-16] + mov ebx,512 + not eax + lea ebp,DWORD PTR [esp-24] + cmp ecx,ebx + cmovc ebx,ecx + and eax,ebx + mov ebx,ecx + neg eax + and ebx,511 + lea esp,DWORD PTR [ebp*1+eax] + mov eax,512 + cmovz ebx,eax + mov eax,ebp + and ebp,-16 + and esp,-16 + mov DWORD PTR 16[ebp],eax + jmp $L050ctr32_loop +ALIGN 16 +$L050ctr32_loop: + mov DWORD PTR [ebp],edi + mov DWORD PTR 4[ebp],esi + mov DWORD PTR 8[ebp],ecx + mov ecx,ebx + mov DWORD PTR 12[ebp],ebx + mov ecx,DWORD PTR [edx-4] + xor edi,edi + mov eax,DWORD PTR [edx-8] +$L051ctr32_prepare: + mov DWORD PTR 12[edi*1+esp],ecx + bswap ecx + movq QWORD PTR [edi*1+esp],mm0 + inc ecx + mov DWORD PTR 8[edi*1+esp],eax + bswap ecx + lea edi,DWORD PTR 16[edi] + cmp edi,ebx + jb $L051ctr32_prepare + mov DWORD PTR [edx-4],ecx + lea esi,DWORD PTR [esp] + lea edi,DWORD PTR [esp] + mov ecx,ebx + lea eax,DWORD PTR [edx-16] + lea ebx,DWORD PTR 16[edx] + shr ecx,4 +DB 243,15,167,200 + mov edi,DWORD PTR [ebp] + mov ebx,DWORD PTR 12[ebp] + mov esi,DWORD PTR 4[ebp] + xor ecx,ecx +$L052ctr32_xor: + movups xmm1,XMMWORD PTR [ecx*1+esi] + lea ecx,DWORD PTR 16[ecx] + pxor xmm1,XMMWORD PTR [ecx*1+esp-16] + movups XMMWORD PTR [ecx*1+edi-16],xmm1 + cmp ecx,ebx + jb $L052ctr32_xor + mov ecx,DWORD PTR 8[ebp] + add edi,ebx + add esi,ebx + sub ecx,ebx + mov ebx,512 + jnz $L050ctr32_loop + pxor xmm0,xmm0 + lea eax,DWORD PTR [esp] +$L053ctr32_bzero: + movaps XMMWORD PTR [eax],xmm0 + lea eax,DWORD PTR 16[eax] + cmp ebp,eax + ja $L053ctr32_bzero +$L054ctr32_done: + mov ebp,DWORD PTR 16[ebp] + lea esp,DWORD PTR 24[ebp] + mov eax,1 + lea esp,DWORD PTR 4[esp] + emms +$L048ctr32_abort: + pop edi + pop esi + pop ebx + pop ebp + ret +_padlock_ctr32_encrypt ENDP +ALIGN 16 +_padlock_xstore PROC PUBLIC +$L_padlock_xstore_begin:: + push edi + mov edi,DWORD PTR 8[esp] + mov edx,DWORD PTR 12[esp] +DB 15,167,192 + pop edi + ret +_padlock_xstore ENDP +ALIGN 16 +__win32_segv_handler PROC PRIVATE + mov eax,1 + mov edx,DWORD PTR 4[esp] + mov ecx,DWORD PTR 12[esp] + cmp DWORD PTR [edx],3221225477 + jne $L055ret + add DWORD PTR 184[ecx],4 + mov eax,0 +$L055ret: + ret +__win32_segv_handler ENDP +IF @Version GE 710 +.SAFESEH __win32_segv_handler +ENDIF +ALIGN 16 +_padlock_sha1_oneshot PROC PUBLIC +$L_padlock_sha1_oneshot_begin:: + push edi + push esi + xor eax,eax + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + push __win32_segv_handler +DB 100,255,48 +DB 100,137,32 + mov edx,esp + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + mov eax,DWORD PTR 16[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + mov DWORD PTR 16[esp],eax + xor eax,eax +DB 243,15,166,200 + movaps xmm0,XMMWORD PTR [esp] + mov eax,DWORD PTR 16[esp] + mov esp,edx +DB 100,143,5,0,0,0,0 + lea esp,DWORD PTR 4[esp] + mov edi,DWORD PTR 16[esp] + movups XMMWORD PTR [edi],xmm0 + mov DWORD PTR 16[edi],eax + pop esi + pop edi + ret +_padlock_sha1_oneshot ENDP +ALIGN 16 +_padlock_sha1_blocks PROC PUBLIC +$L_padlock_sha1_blocks_begin:: + push edi + push esi + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov edx,esp + mov ecx,DWORD PTR 20[esp] + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + mov eax,DWORD PTR 16[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + mov DWORD PTR 16[esp],eax + mov eax,-1 +DB 243,15,166,200 + movaps xmm0,XMMWORD PTR [esp] + mov eax,DWORD PTR 16[esp] + mov esp,edx + mov edi,DWORD PTR 12[esp] + movups XMMWORD PTR [edi],xmm0 + mov DWORD PTR 16[edi],eax + pop esi + pop edi + ret +_padlock_sha1_blocks ENDP +ALIGN 16 +_padlock_sha256_oneshot PROC PUBLIC +$L_padlock_sha256_oneshot_begin:: + push edi + push esi + xor eax,eax + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + push __win32_segv_handler +DB 100,255,48 +DB 100,137,32 + mov edx,esp + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + movups xmm1,XMMWORD PTR 16[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + movaps XMMWORD PTR 16[esp],xmm1 + xor eax,eax +DB 243,15,166,208 + movaps xmm0,XMMWORD PTR [esp] + movaps xmm1,XMMWORD PTR 16[esp] + mov esp,edx +DB 100,143,5,0,0,0,0 + lea esp,DWORD PTR 4[esp] + mov edi,DWORD PTR 16[esp] + movups XMMWORD PTR [edi],xmm0 + movups XMMWORD PTR 16[edi],xmm1 + pop esi + pop edi + ret +_padlock_sha256_oneshot ENDP +ALIGN 16 +_padlock_sha256_blocks PROC PUBLIC +$L_padlock_sha256_blocks_begin:: + push edi + push esi + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + mov edx,esp + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + movups xmm1,XMMWORD PTR 16[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + movaps XMMWORD PTR 16[esp],xmm1 + mov eax,-1 +DB 243,15,166,208 + movaps xmm0,XMMWORD PTR [esp] + movaps xmm1,XMMWORD PTR 16[esp] + mov esp,edx + mov edi,DWORD PTR 12[esp] + movups XMMWORD PTR [edi],xmm0 + movups XMMWORD PTR 16[edi],xmm1 + pop esi + pop edi + ret +_padlock_sha256_blocks ENDP +ALIGN 16 +_padlock_sha512_blocks PROC PUBLIC +$L_padlock_sha512_blocks_begin:: + push edi + push esi + mov edi,DWORD PTR 12[esp] + mov esi,DWORD PTR 16[esp] + mov ecx,DWORD PTR 20[esp] + mov edx,esp + add esp,-128 + movups xmm0,XMMWORD PTR [edi] + and esp,-16 + movups xmm1,XMMWORD PTR 16[edi] + movups xmm2,XMMWORD PTR 32[edi] + movups xmm3,XMMWORD PTR 48[edi] + movaps XMMWORD PTR [esp],xmm0 + mov edi,esp + movaps XMMWORD PTR 16[esp],xmm1 + movaps XMMWORD PTR 32[esp],xmm2 + movaps XMMWORD PTR 48[esp],xmm3 +DB 243,15,166,224 + movaps xmm0,XMMWORD PTR [esp] + movaps xmm1,XMMWORD PTR 16[esp] + movaps xmm2,XMMWORD PTR 32[esp] + movaps xmm3,XMMWORD PTR 48[esp] + mov esp,edx + mov edi,DWORD PTR 12[esp] + movups XMMWORD PTR [edi],xmm0 + movups XMMWORD PTR 16[edi],xmm1 + movups XMMWORD PTR 32[edi],xmm2 + movups XMMWORD PTR 48[edi],xmm3 + pop esi + pop edi + ret +_padlock_sha512_blocks ENDP +DB 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,32 +DB 109,111,100,117,108,101,44,32,67,82,89,80,84,79,71,65 +DB 77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101 +DB 110,115,115,108,46,111,114,103,62,0 +ALIGN 16 +.text$ ENDS +_DATA SEGMENT +ALIGN 4 +$Lpadlock_saved_context:: +DD 0 +_DATA ENDS +END |