aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/openssl/asm/windows/engines
diff options
context:
space:
mode:
authorarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-02-10 17:53:52 +0300
committerarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-02-10 17:53:52 +0300
commit5c64b97bb7e4034eff8833e4c367f61d34fcb4ee (patch)
tree7c5769528f2fcdaa5a718aa73e4aa64d50905269 /contrib/libs/openssl/asm/windows/engines
parent1b56f620ac98766b198121ca1b728e7e61efbb56 (diff)
downloadydb-5c64b97bb7e4034eff8833e4c367f61d34fcb4ee.tar.gz
intermediate changes
ref:4635f4dd763168c3fa295f87727595c785b4d5a4
Diffstat (limited to 'contrib/libs/openssl/asm/windows/engines')
-rw-r--r--contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm2074
-rw-r--r--contrib/libs/openssl/asm/windows/engines/e_padlock-x86_64.masm2382
2 files changed, 2228 insertions, 2228 deletions
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 ed83a736f2..c4c322d12e 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
diff --git a/contrib/libs/openssl/asm/windows/engines/e_padlock-x86_64.masm b/contrib/libs/openssl/asm/windows/engines/e_padlock-x86_64.masm
index a3461f1aa1..12adf9b4a6 100644
--- a/contrib/libs/openssl/asm/windows/engines/e_padlock-x86_64.masm
+++ b/contrib/libs/openssl/asm/windows/engines/e_padlock-x86_64.masm
@@ -1,1191 +1,1191 @@
-OPTION DOTNAME
-.text$ SEGMENT ALIGN(256) 'CODE'
-PUBLIC padlock_capability
-
-ALIGN 16
-padlock_capability PROC PUBLIC
- mov r8,rbx
- xor eax,eax
- cpuid
- xor eax,eax
- cmp ebx,0746e6543h
- jne $L$zhaoxin
- cmp edx,048727561h
- jne $L$noluck
- cmp ecx,0736c7561h
- jne $L$noluck
- jmp $L$zhaoxinEnd
-$L$zhaoxin::
- cmp ebx,068532020h
- jne $L$noluck
- cmp edx,068676e61h
- jne $L$noluck
- cmp ecx,020206961h
- jne $L$noluck
-$L$zhaoxinEnd::
- mov eax,0C0000000h
- cpuid
- mov edx,eax
- xor eax,eax
- cmp edx,0C0000001h
- jb $L$noluck
- mov eax,0C0000001h
- cpuid
- mov eax,edx
- and eax,0ffffffefh
- or eax,010h
-$L$noluck::
- mov rbx,r8
- DB 0F3h,0C3h ;repret
-padlock_capability ENDP
-
-PUBLIC padlock_key_bswap
-
-ALIGN 16
-padlock_key_bswap PROC PUBLIC
- mov edx,DWORD PTR[240+rcx]
-$L$bswap_loop::
- mov eax,DWORD PTR[rcx]
- bswap eax
- mov DWORD PTR[rcx],eax
- lea rcx,QWORD PTR[4+rcx]
- sub edx,1
- jnz $L$bswap_loop
- DB 0F3h,0C3h ;repret
-padlock_key_bswap ENDP
-
-PUBLIC padlock_verify_context
-
-ALIGN 16
-padlock_verify_context PROC PUBLIC
- mov rdx,rcx
- pushf
- lea rax,QWORD PTR[$L$padlock_saved_context]
- call _padlock_verify_ctx
- lea rsp,QWORD PTR[8+rsp]
- DB 0F3h,0C3h ;repret
-padlock_verify_context ENDP
-
-
-ALIGN 16
-_padlock_verify_ctx PROC PRIVATE
- mov r8,QWORD PTR[8+rsp]
- bt r8,30
- jnc $L$verified
- cmp rdx,QWORD PTR[rax]
- je $L$verified
- pushf
- popf
-$L$verified::
- mov QWORD PTR[rax],rdx
- DB 0F3h,0C3h ;repret
-_padlock_verify_ctx ENDP
-
-PUBLIC padlock_reload_key
-
-ALIGN 16
-padlock_reload_key PROC PUBLIC
- pushf
- popf
- DB 0F3h,0C3h ;repret
-padlock_reload_key ENDP
-
-PUBLIC padlock_aes_block
-
-ALIGN 16
-padlock_aes_block PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_aes_block::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
- mov r8,rbx
- mov rcx,1
- lea rbx,QWORD PTR[32+rdx]
- lea rdx,QWORD PTR[16+rdx]
-DB 0f3h,00fh,0a7h,0c8h
- mov rbx,r8
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_aes_block::
-padlock_aes_block ENDP
-
-PUBLIC padlock_xstore
-
-ALIGN 16
-padlock_xstore PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_xstore::
- mov rdi,rcx
- mov rsi,rdx
-
-
- mov edx,esi
-DB 00fh,0a7h,0c0h
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_xstore::
-padlock_xstore ENDP
-
-PUBLIC padlock_sha1_oneshot
-
-ALIGN 16
-padlock_sha1_oneshot PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_sha1_oneshot::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
- mov rcx,rdx
- mov rdx,rdi
- movups xmm0,XMMWORD PTR[rdi]
- sub rsp,128+8
- mov eax,DWORD PTR[16+rdi]
- movaps XMMWORD PTR[rsp],xmm0
- mov rdi,rsp
- mov DWORD PTR[16+rsp],eax
- xor rax,rax
-DB 0f3h,00fh,0a6h,0c8h
- movaps xmm0,XMMWORD PTR[rsp]
- mov eax,DWORD PTR[16+rsp]
- add rsp,128+8
- movups XMMWORD PTR[rdx],xmm0
- mov DWORD PTR[16+rdx],eax
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_sha1_oneshot::
-padlock_sha1_oneshot ENDP
-
-PUBLIC padlock_sha1_blocks
-
-ALIGN 16
-padlock_sha1_blocks PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_sha1_blocks::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
- mov rcx,rdx
- mov rdx,rdi
- movups xmm0,XMMWORD PTR[rdi]
- sub rsp,128+8
- mov eax,DWORD PTR[16+rdi]
- movaps XMMWORD PTR[rsp],xmm0
- mov rdi,rsp
- mov DWORD PTR[16+rsp],eax
- mov rax,-1
-DB 0f3h,00fh,0a6h,0c8h
- movaps xmm0,XMMWORD PTR[rsp]
- mov eax,DWORD PTR[16+rsp]
- add rsp,128+8
- movups XMMWORD PTR[rdx],xmm0
- mov DWORD PTR[16+rdx],eax
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_sha1_blocks::
-padlock_sha1_blocks ENDP
-
-PUBLIC padlock_sha256_oneshot
-
-ALIGN 16
-padlock_sha256_oneshot PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_sha256_oneshot::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
- mov rcx,rdx
- mov rdx,rdi
- movups xmm0,XMMWORD PTR[rdi]
- sub rsp,128+8
- movups xmm1,XMMWORD PTR[16+rdi]
- movaps XMMWORD PTR[rsp],xmm0
- mov rdi,rsp
- movaps XMMWORD PTR[16+rsp],xmm1
- xor rax,rax
-DB 0f3h,00fh,0a6h,0d0h
- movaps xmm0,XMMWORD PTR[rsp]
- movaps xmm1,XMMWORD PTR[16+rsp]
- add rsp,128+8
- movups XMMWORD PTR[rdx],xmm0
- movups XMMWORD PTR[16+rdx],xmm1
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_sha256_oneshot::
-padlock_sha256_oneshot ENDP
-
-PUBLIC padlock_sha256_blocks
-
-ALIGN 16
-padlock_sha256_blocks PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_sha256_blocks::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
- mov rcx,rdx
- mov rdx,rdi
- movups xmm0,XMMWORD PTR[rdi]
- sub rsp,128+8
- movups xmm1,XMMWORD PTR[16+rdi]
- movaps XMMWORD PTR[rsp],xmm0
- mov rdi,rsp
- movaps XMMWORD PTR[16+rsp],xmm1
- mov rax,-1
-DB 0f3h,00fh,0a6h,0d0h
- movaps xmm0,XMMWORD PTR[rsp]
- movaps xmm1,XMMWORD PTR[16+rsp]
- add rsp,128+8
- movups XMMWORD PTR[rdx],xmm0
- movups XMMWORD PTR[16+rdx],xmm1
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_sha256_blocks::
-padlock_sha256_blocks ENDP
-
-PUBLIC padlock_sha512_blocks
-
-ALIGN 16
-padlock_sha512_blocks PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_sha512_blocks::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
-
-
- mov rcx,rdx
- mov rdx,rdi
- movups xmm0,XMMWORD PTR[rdi]
- sub rsp,128+8
- movups xmm1,XMMWORD PTR[16+rdi]
- movups xmm2,XMMWORD PTR[32+rdi]
- movups xmm3,XMMWORD PTR[48+rdi]
- movaps XMMWORD PTR[rsp],xmm0
- mov rdi,rsp
- movaps XMMWORD PTR[16+rsp],xmm1
- movaps XMMWORD PTR[32+rsp],xmm2
- movaps XMMWORD PTR[48+rsp],xmm3
-DB 0f3h,00fh,0a6h,0e0h
- movaps xmm0,XMMWORD PTR[rsp]
- movaps xmm1,XMMWORD PTR[16+rsp]
- movaps xmm2,XMMWORD PTR[32+rsp]
- movaps xmm3,XMMWORD PTR[48+rsp]
- add rsp,128+8
- movups XMMWORD PTR[rdx],xmm0
- movups XMMWORD PTR[16+rdx],xmm1
- movups XMMWORD PTR[32+rdx],xmm2
- movups XMMWORD PTR[48+rdx],xmm3
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_sha512_blocks::
-padlock_sha512_blocks ENDP
-PUBLIC padlock_ecb_encrypt
-
-ALIGN 16
-padlock_ecb_encrypt PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_ecb_encrypt::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
- mov rcx,r9
-
-
- push rbp
- push rbx
-
- xor eax,eax
- test rdx,15
- jnz $L$ecb_abort
- test rcx,15
- jnz $L$ecb_abort
- lea rax,QWORD PTR[$L$padlock_saved_context]
- pushf
- cld
- call _padlock_verify_ctx
- lea rdx,QWORD PTR[16+rdx]
- xor eax,eax
- xor ebx,ebx
- test DWORD PTR[rdx],32
- jnz $L$ecb_aligned
- test rdi,00fh
- setz al
- test rsi,00fh
- setz bl
- test eax,ebx
- jnz $L$ecb_aligned
- neg rax
- mov rbx,512
- not rax
- lea rbp,QWORD PTR[rsp]
- cmp rcx,rbx
- cmovc rbx,rcx
- and rax,rbx
- mov rbx,rcx
- neg rax
- and rbx,512-1
- lea rsp,QWORD PTR[rbp*1+rax]
- mov rax,512
- cmovz rbx,rax
- cmp rcx,rbx
- ja $L$ecb_loop
- mov rax,rsi
- cmp rbp,rsp
- cmove rax,rdi
- add rax,rcx
- neg rax
- and rax,0fffh
- cmp rax,128
- mov rax,-128
- cmovae rax,rbx
- and rbx,rax
- jz $L$ecb_unaligned_tail
- jmp $L$ecb_loop
-ALIGN 16
-$L$ecb_loop::
- cmp rbx,rcx
- cmova rbx,rcx
- mov r8,rdi
- mov r9,rsi
- mov r10,rcx
- mov rcx,rbx
- mov r11,rbx
- test rdi,00fh
- cmovnz rdi,rsp
- test rsi,00fh
- jz $L$ecb_inp_aligned
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
- mov rcx,rbx
- mov rsi,rdi
-$L$ecb_inp_aligned::
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,200
- mov rdi,r8
- mov rbx,r11
- test rdi,00fh
- jz $L$ecb_out_aligned
- mov rcx,rbx
- lea rsi,QWORD PTR[rsp]
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
-$L$ecb_out_aligned::
- mov rsi,r9
- mov rcx,r10
- add rdi,rbx
- add rsi,rbx
- sub rcx,rbx
- mov rbx,512
- jz $L$ecb_break
- cmp rcx,rbx
- jae $L$ecb_loop
-$L$ecb_unaligned_tail::
- xor eax,eax
- cmp rbp,rsp
- cmove rax,rcx
- mov r8,rdi
- mov rbx,rcx
- sub rsp,rax
- shr rcx,3
- lea rdi,QWORD PTR[rsp]
-DB 0f3h,048h,0a5h
- mov rsi,rsp
- mov rdi,r8
- mov rcx,rbx
- jmp $L$ecb_loop
-ALIGN 16
-$L$ecb_break::
- cmp rsp,rbp
- je $L$ecb_done
-
- pxor xmm0,xmm0
- lea rax,QWORD PTR[rsp]
-$L$ecb_bzero::
- movaps XMMWORD PTR[rax],xmm0
- lea rax,QWORD PTR[16+rax]
- cmp rbp,rax
- ja $L$ecb_bzero
-
-$L$ecb_done::
- lea rsp,QWORD PTR[rbp]
- jmp $L$ecb_exit
-
-ALIGN 16
-$L$ecb_aligned::
- lea rbp,QWORD PTR[rcx*1+rsi]
- neg rbp
- and rbp,0fffh
- xor eax,eax
- cmp rbp,128
- mov rbp,128-1
- cmovae rbp,rax
- and rbp,rcx
- sub rcx,rbp
- jz $L$ecb_aligned_tail
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,200
- test rbp,rbp
- jz $L$ecb_exit
-
-$L$ecb_aligned_tail::
- mov r8,rdi
- mov rbx,rbp
- mov rcx,rbp
- lea rbp,QWORD PTR[rsp]
- sub rsp,rcx
- shr rcx,3
- lea rdi,QWORD PTR[rsp]
-DB 0f3h,048h,0a5h
- lea rdi,QWORD PTR[r8]
- lea rsi,QWORD PTR[rsp]
- mov rcx,rbx
- jmp $L$ecb_loop
-$L$ecb_exit::
- mov eax,1
- lea rsp,QWORD PTR[8+rsp]
-$L$ecb_abort::
- pop rbx
- pop rbp
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_ecb_encrypt::
-padlock_ecb_encrypt ENDP
-PUBLIC padlock_cbc_encrypt
-
-ALIGN 16
-padlock_cbc_encrypt PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_cbc_encrypt::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
- mov rcx,r9
-
-
- push rbp
- push rbx
-
- xor eax,eax
- test rdx,15
- jnz $L$cbc_abort
- test rcx,15
- jnz $L$cbc_abort
- lea rax,QWORD PTR[$L$padlock_saved_context]
- pushf
- cld
- call _padlock_verify_ctx
- lea rdx,QWORD PTR[16+rdx]
- xor eax,eax
- xor ebx,ebx
- test DWORD PTR[rdx],32
- jnz $L$cbc_aligned
- test rdi,00fh
- setz al
- test rsi,00fh
- setz bl
- test eax,ebx
- jnz $L$cbc_aligned
- neg rax
- mov rbx,512
- not rax
- lea rbp,QWORD PTR[rsp]
- cmp rcx,rbx
- cmovc rbx,rcx
- and rax,rbx
- mov rbx,rcx
- neg rax
- and rbx,512-1
- lea rsp,QWORD PTR[rbp*1+rax]
- mov rax,512
- cmovz rbx,rax
- cmp rcx,rbx
- ja $L$cbc_loop
- mov rax,rsi
- cmp rbp,rsp
- cmove rax,rdi
- add rax,rcx
- neg rax
- and rax,0fffh
- cmp rax,64
- mov rax,-64
- cmovae rax,rbx
- and rbx,rax
- jz $L$cbc_unaligned_tail
- jmp $L$cbc_loop
-ALIGN 16
-$L$cbc_loop::
- cmp rbx,rcx
- cmova rbx,rcx
- mov r8,rdi
- mov r9,rsi
- mov r10,rcx
- mov rcx,rbx
- mov r11,rbx
- test rdi,00fh
- cmovnz rdi,rsp
- test rsi,00fh
- jz $L$cbc_inp_aligned
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
- mov rcx,rbx
- mov rsi,rdi
-$L$cbc_inp_aligned::
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,208
- movdqa xmm0,XMMWORD PTR[rax]
- movdqa XMMWORD PTR[(-16)+rdx],xmm0
- mov rdi,r8
- mov rbx,r11
- test rdi,00fh
- jz $L$cbc_out_aligned
- mov rcx,rbx
- lea rsi,QWORD PTR[rsp]
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
-$L$cbc_out_aligned::
- mov rsi,r9
- mov rcx,r10
- add rdi,rbx
- add rsi,rbx
- sub rcx,rbx
- mov rbx,512
- jz $L$cbc_break
- cmp rcx,rbx
- jae $L$cbc_loop
-$L$cbc_unaligned_tail::
- xor eax,eax
- cmp rbp,rsp
- cmove rax,rcx
- mov r8,rdi
- mov rbx,rcx
- sub rsp,rax
- shr rcx,3
- lea rdi,QWORD PTR[rsp]
-DB 0f3h,048h,0a5h
- mov rsi,rsp
- mov rdi,r8
- mov rcx,rbx
- jmp $L$cbc_loop
-ALIGN 16
-$L$cbc_break::
- cmp rsp,rbp
- je $L$cbc_done
-
- pxor xmm0,xmm0
- lea rax,QWORD PTR[rsp]
-$L$cbc_bzero::
- movaps XMMWORD PTR[rax],xmm0
- lea rax,QWORD PTR[16+rax]
- cmp rbp,rax
- ja $L$cbc_bzero
-
-$L$cbc_done::
- lea rsp,QWORD PTR[rbp]
- jmp $L$cbc_exit
-
-ALIGN 16
-$L$cbc_aligned::
- lea rbp,QWORD PTR[rcx*1+rsi]
- neg rbp
- and rbp,0fffh
- xor eax,eax
- cmp rbp,64
- mov rbp,64-1
- cmovae rbp,rax
- and rbp,rcx
- sub rcx,rbp
- jz $L$cbc_aligned_tail
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,208
- movdqa xmm0,XMMWORD PTR[rax]
- movdqa XMMWORD PTR[(-16)+rdx],xmm0
- test rbp,rbp
- jz $L$cbc_exit
-
-$L$cbc_aligned_tail::
- mov r8,rdi
- mov rbx,rbp
- mov rcx,rbp
- lea rbp,QWORD PTR[rsp]
- sub rsp,rcx
- shr rcx,3
- lea rdi,QWORD PTR[rsp]
-DB 0f3h,048h,0a5h
- lea rdi,QWORD PTR[r8]
- lea rsi,QWORD PTR[rsp]
- mov rcx,rbx
- jmp $L$cbc_loop
-$L$cbc_exit::
- mov eax,1
- lea rsp,QWORD PTR[8+rsp]
-$L$cbc_abort::
- pop rbx
- pop rbp
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_cbc_encrypt::
-padlock_cbc_encrypt ENDP
-PUBLIC padlock_cfb_encrypt
-
-ALIGN 16
-padlock_cfb_encrypt PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_cfb_encrypt::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
- mov rcx,r9
-
-
- push rbp
- push rbx
-
- xor eax,eax
- test rdx,15
- jnz $L$cfb_abort
- test rcx,15
- jnz $L$cfb_abort
- lea rax,QWORD PTR[$L$padlock_saved_context]
- pushf
- cld
- call _padlock_verify_ctx
- lea rdx,QWORD PTR[16+rdx]
- xor eax,eax
- xor ebx,ebx
- test DWORD PTR[rdx],32
- jnz $L$cfb_aligned
- test rdi,00fh
- setz al
- test rsi,00fh
- setz bl
- test eax,ebx
- jnz $L$cfb_aligned
- neg rax
- mov rbx,512
- not rax
- lea rbp,QWORD PTR[rsp]
- cmp rcx,rbx
- cmovc rbx,rcx
- and rax,rbx
- mov rbx,rcx
- neg rax
- and rbx,512-1
- lea rsp,QWORD PTR[rbp*1+rax]
- mov rax,512
- cmovz rbx,rax
- jmp $L$cfb_loop
-ALIGN 16
-$L$cfb_loop::
- cmp rbx,rcx
- cmova rbx,rcx
- mov r8,rdi
- mov r9,rsi
- mov r10,rcx
- mov rcx,rbx
- mov r11,rbx
- test rdi,00fh
- cmovnz rdi,rsp
- test rsi,00fh
- jz $L$cfb_inp_aligned
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
- mov rcx,rbx
- mov rsi,rdi
-$L$cfb_inp_aligned::
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,224
- movdqa xmm0,XMMWORD PTR[rax]
- movdqa XMMWORD PTR[(-16)+rdx],xmm0
- mov rdi,r8
- mov rbx,r11
- test rdi,00fh
- jz $L$cfb_out_aligned
- mov rcx,rbx
- lea rsi,QWORD PTR[rsp]
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
-$L$cfb_out_aligned::
- mov rsi,r9
- mov rcx,r10
- add rdi,rbx
- add rsi,rbx
- sub rcx,rbx
- mov rbx,512
- jnz $L$cfb_loop
- cmp rsp,rbp
- je $L$cfb_done
-
- pxor xmm0,xmm0
- lea rax,QWORD PTR[rsp]
-$L$cfb_bzero::
- movaps XMMWORD PTR[rax],xmm0
- lea rax,QWORD PTR[16+rax]
- cmp rbp,rax
- ja $L$cfb_bzero
-
-$L$cfb_done::
- lea rsp,QWORD PTR[rbp]
- jmp $L$cfb_exit
-
-ALIGN 16
-$L$cfb_aligned::
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,224
- movdqa xmm0,XMMWORD PTR[rax]
- movdqa XMMWORD PTR[(-16)+rdx],xmm0
-$L$cfb_exit::
- mov eax,1
- lea rsp,QWORD PTR[8+rsp]
-$L$cfb_abort::
- pop rbx
- pop rbp
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_cfb_encrypt::
-padlock_cfb_encrypt ENDP
-PUBLIC padlock_ofb_encrypt
-
-ALIGN 16
-padlock_ofb_encrypt PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_ofb_encrypt::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
- mov rcx,r9
-
-
- push rbp
- push rbx
-
- xor eax,eax
- test rdx,15
- jnz $L$ofb_abort
- test rcx,15
- jnz $L$ofb_abort
- lea rax,QWORD PTR[$L$padlock_saved_context]
- pushf
- cld
- call _padlock_verify_ctx
- lea rdx,QWORD PTR[16+rdx]
- xor eax,eax
- xor ebx,ebx
- test DWORD PTR[rdx],32
- jnz $L$ofb_aligned
- test rdi,00fh
- setz al
- test rsi,00fh
- setz bl
- test eax,ebx
- jnz $L$ofb_aligned
- neg rax
- mov rbx,512
- not rax
- lea rbp,QWORD PTR[rsp]
- cmp rcx,rbx
- cmovc rbx,rcx
- and rax,rbx
- mov rbx,rcx
- neg rax
- and rbx,512-1
- lea rsp,QWORD PTR[rbp*1+rax]
- mov rax,512
- cmovz rbx,rax
- jmp $L$ofb_loop
-ALIGN 16
-$L$ofb_loop::
- cmp rbx,rcx
- cmova rbx,rcx
- mov r8,rdi
- mov r9,rsi
- mov r10,rcx
- mov rcx,rbx
- mov r11,rbx
- test rdi,00fh
- cmovnz rdi,rsp
- test rsi,00fh
- jz $L$ofb_inp_aligned
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
- mov rcx,rbx
- mov rsi,rdi
-$L$ofb_inp_aligned::
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,232
- movdqa xmm0,XMMWORD PTR[rax]
- movdqa XMMWORD PTR[(-16)+rdx],xmm0
- mov rdi,r8
- mov rbx,r11
- test rdi,00fh
- jz $L$ofb_out_aligned
- mov rcx,rbx
- lea rsi,QWORD PTR[rsp]
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
-$L$ofb_out_aligned::
- mov rsi,r9
- mov rcx,r10
- add rdi,rbx
- add rsi,rbx
- sub rcx,rbx
- mov rbx,512
- jnz $L$ofb_loop
- cmp rsp,rbp
- je $L$ofb_done
-
- pxor xmm0,xmm0
- lea rax,QWORD PTR[rsp]
-$L$ofb_bzero::
- movaps XMMWORD PTR[rax],xmm0
- lea rax,QWORD PTR[16+rax]
- cmp rbp,rax
- ja $L$ofb_bzero
-
-$L$ofb_done::
- lea rsp,QWORD PTR[rbp]
- jmp $L$ofb_exit
-
-ALIGN 16
-$L$ofb_aligned::
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,232
- movdqa xmm0,XMMWORD PTR[rax]
- movdqa XMMWORD PTR[(-16)+rdx],xmm0
-$L$ofb_exit::
- mov eax,1
- lea rsp,QWORD PTR[8+rsp]
-$L$ofb_abort::
- pop rbx
- pop rbp
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_ofb_encrypt::
-padlock_ofb_encrypt ENDP
-PUBLIC padlock_ctr32_encrypt
-
-ALIGN 16
-padlock_ctr32_encrypt PROC PUBLIC
- mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
- mov QWORD PTR[16+rsp],rsi
- mov rax,rsp
-$L$SEH_begin_padlock_ctr32_encrypt::
- mov rdi,rcx
- mov rsi,rdx
- mov rdx,r8
- mov rcx,r9
-
-
- push rbp
- push rbx
-
- xor eax,eax
- test rdx,15
- jnz $L$ctr32_abort
- test rcx,15
- jnz $L$ctr32_abort
- lea rax,QWORD PTR[$L$padlock_saved_context]
- pushf
- cld
- call _padlock_verify_ctx
- lea rdx,QWORD PTR[16+rdx]
- xor eax,eax
- xor ebx,ebx
- test DWORD PTR[rdx],32
- jnz $L$ctr32_aligned
- test rdi,00fh
- setz al
- test rsi,00fh
- setz bl
- test eax,ebx
- jnz $L$ctr32_aligned
- neg rax
- mov rbx,512
- not rax
- lea rbp,QWORD PTR[rsp]
- cmp rcx,rbx
- cmovc rbx,rcx
- and rax,rbx
- mov rbx,rcx
- neg rax
- and rbx,512-1
- lea rsp,QWORD PTR[rbp*1+rax]
- mov rax,512
- cmovz rbx,rax
-$L$ctr32_reenter::
- mov eax,DWORD PTR[((-4))+rdx]
- bswap eax
- neg eax
- and eax,31
- mov rbx,512
- shl eax,4
- cmovz rax,rbx
- cmp rcx,rax
- cmova rbx,rax
- cmovbe rbx,rcx
- cmp rcx,rbx
- ja $L$ctr32_loop
- mov rax,rsi
- cmp rbp,rsp
- cmove rax,rdi
- add rax,rcx
- neg rax
- and rax,0fffh
- cmp rax,32
- mov rax,-32
- cmovae rax,rbx
- and rbx,rax
- jz $L$ctr32_unaligned_tail
- jmp $L$ctr32_loop
-ALIGN 16
-$L$ctr32_loop::
- cmp rbx,rcx
- cmova rbx,rcx
- mov r8,rdi
- mov r9,rsi
- mov r10,rcx
- mov rcx,rbx
- mov r11,rbx
- test rdi,00fh
- cmovnz rdi,rsp
- test rsi,00fh
- jz $L$ctr32_inp_aligned
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
- mov rcx,rbx
- mov rsi,rdi
-$L$ctr32_inp_aligned::
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,216
- mov eax,DWORD PTR[((-4))+rdx]
- test eax,0ffff0000h
- jnz $L$ctr32_no_carry
- bswap eax
- add eax,010000h
- bswap eax
- mov DWORD PTR[((-4))+rdx],eax
-$L$ctr32_no_carry::
- mov rdi,r8
- mov rbx,r11
- test rdi,00fh
- jz $L$ctr32_out_aligned
- mov rcx,rbx
- lea rsi,QWORD PTR[rsp]
- shr rcx,3
-DB 0f3h,048h,0a5h
- sub rdi,rbx
-$L$ctr32_out_aligned::
- mov rsi,r9
- mov rcx,r10
- add rdi,rbx
- add rsi,rbx
- sub rcx,rbx
- mov rbx,512
- jz $L$ctr32_break
- cmp rcx,rbx
- jae $L$ctr32_loop
- mov rbx,rcx
- mov rax,rsi
- cmp rbp,rsp
- cmove rax,rdi
- add rax,rcx
- neg rax
- and rax,0fffh
- cmp rax,32
- mov rax,-32
- cmovae rax,rbx
- and rbx,rax
- jnz $L$ctr32_loop
-$L$ctr32_unaligned_tail::
- xor eax,eax
- cmp rbp,rsp
- cmove rax,rcx
- mov r8,rdi
- mov rbx,rcx
- sub rsp,rax
- shr rcx,3
- lea rdi,QWORD PTR[rsp]
-DB 0f3h,048h,0a5h
- mov rsi,rsp
- mov rdi,r8
- mov rcx,rbx
- jmp $L$ctr32_loop
-ALIGN 16
-$L$ctr32_break::
- cmp rsp,rbp
- je $L$ctr32_done
-
- pxor xmm0,xmm0
- lea rax,QWORD PTR[rsp]
-$L$ctr32_bzero::
- movaps XMMWORD PTR[rax],xmm0
- lea rax,QWORD PTR[16+rax]
- cmp rbp,rax
- ja $L$ctr32_bzero
-
-$L$ctr32_done::
- lea rsp,QWORD PTR[rbp]
- jmp $L$ctr32_exit
-
-ALIGN 16
-$L$ctr32_aligned::
- mov eax,DWORD PTR[((-4))+rdx]
- bswap eax
- neg eax
- and eax,0ffffh
- mov rbx,1048576
- shl eax,4
- cmovz rax,rbx
- cmp rcx,rax
- cmova rbx,rax
- cmovbe rbx,rcx
- jbe $L$ctr32_aligned_skip
-
-$L$ctr32_aligned_loop::
- mov r10,rcx
- mov rcx,rbx
- mov r11,rbx
-
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,216
-
- mov eax,DWORD PTR[((-4))+rdx]
- bswap eax
- add eax,010000h
- bswap eax
- mov DWORD PTR[((-4))+rdx],eax
-
- mov rcx,r10
- sub rcx,r11
- mov rbx,1048576
- jz $L$ctr32_exit
- cmp rcx,rbx
- jae $L$ctr32_aligned_loop
-
-$L$ctr32_aligned_skip::
- lea rbp,QWORD PTR[rcx*1+rsi]
- neg rbp
- and rbp,0fffh
- xor eax,eax
- cmp rbp,32
- mov rbp,32-1
- cmovae rbp,rax
- and rbp,rcx
- sub rcx,rbp
- jz $L$ctr32_aligned_tail
- lea rax,QWORD PTR[((-16))+rdx]
- lea rbx,QWORD PTR[16+rdx]
- shr rcx,4
-DB 0f3h,00fh,0a7h,216
- test rbp,rbp
- jz $L$ctr32_exit
-
-$L$ctr32_aligned_tail::
- mov r8,rdi
- mov rbx,rbp
- mov rcx,rbp
- lea rbp,QWORD PTR[rsp]
- sub rsp,rcx
- shr rcx,3
- lea rdi,QWORD PTR[rsp]
-DB 0f3h,048h,0a5h
- lea rdi,QWORD PTR[r8]
- lea rsi,QWORD PTR[rsp]
- mov rcx,rbx
- jmp $L$ctr32_loop
-$L$ctr32_exit::
- mov eax,1
- lea rsp,QWORD PTR[8+rsp]
-$L$ctr32_abort::
- pop rbx
- pop rbp
- mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
- mov rsi,QWORD PTR[16+rsp]
- DB 0F3h,0C3h ;repret
-$L$SEH_end_padlock_ctr32_encrypt::
-padlock_ctr32_encrypt ENDP
-DB 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,95
-DB 54,52,32,109,111,100,117,108,101,44,32,67,82,89,80,84
-DB 79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64
-DB 111,112,101,110,115,115,108,46,111,114,103,62,0
-ALIGN 16
-.text$ ENDS
-_DATA SEGMENT
-ALIGN 8
-$L$padlock_saved_context::
- DQ 0
-
-_DATA ENDS
-END
+OPTION DOTNAME
+.text$ SEGMENT ALIGN(256) 'CODE'
+PUBLIC padlock_capability
+
+ALIGN 16
+padlock_capability PROC PUBLIC
+ mov r8,rbx
+ xor eax,eax
+ cpuid
+ xor eax,eax
+ cmp ebx,0746e6543h
+ jne $L$zhaoxin
+ cmp edx,048727561h
+ jne $L$noluck
+ cmp ecx,0736c7561h
+ jne $L$noluck
+ jmp $L$zhaoxinEnd
+$L$zhaoxin::
+ cmp ebx,068532020h
+ jne $L$noluck
+ cmp edx,068676e61h
+ jne $L$noluck
+ cmp ecx,020206961h
+ jne $L$noluck
+$L$zhaoxinEnd::
+ mov eax,0C0000000h
+ cpuid
+ mov edx,eax
+ xor eax,eax
+ cmp edx,0C0000001h
+ jb $L$noluck
+ mov eax,0C0000001h
+ cpuid
+ mov eax,edx
+ and eax,0ffffffefh
+ or eax,010h
+$L$noluck::
+ mov rbx,r8
+ DB 0F3h,0C3h ;repret
+padlock_capability ENDP
+
+PUBLIC padlock_key_bswap
+
+ALIGN 16
+padlock_key_bswap PROC PUBLIC
+ mov edx,DWORD PTR[240+rcx]
+$L$bswap_loop::
+ mov eax,DWORD PTR[rcx]
+ bswap eax
+ mov DWORD PTR[rcx],eax
+ lea rcx,QWORD PTR[4+rcx]
+ sub edx,1
+ jnz $L$bswap_loop
+ DB 0F3h,0C3h ;repret
+padlock_key_bswap ENDP
+
+PUBLIC padlock_verify_context
+
+ALIGN 16
+padlock_verify_context PROC PUBLIC
+ mov rdx,rcx
+ pushf
+ lea rax,QWORD PTR[$L$padlock_saved_context]
+ call _padlock_verify_ctx
+ lea rsp,QWORD PTR[8+rsp]
+ DB 0F3h,0C3h ;repret
+padlock_verify_context ENDP
+
+
+ALIGN 16
+_padlock_verify_ctx PROC PRIVATE
+ mov r8,QWORD PTR[8+rsp]
+ bt r8,30
+ jnc $L$verified
+ cmp rdx,QWORD PTR[rax]
+ je $L$verified
+ pushf
+ popf
+$L$verified::
+ mov QWORD PTR[rax],rdx
+ DB 0F3h,0C3h ;repret
+_padlock_verify_ctx ENDP
+
+PUBLIC padlock_reload_key
+
+ALIGN 16
+padlock_reload_key PROC PUBLIC
+ pushf
+ popf
+ DB 0F3h,0C3h ;repret
+padlock_reload_key ENDP
+
+PUBLIC padlock_aes_block
+
+ALIGN 16
+padlock_aes_block PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_aes_block::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
+ mov r8,rbx
+ mov rcx,1
+ lea rbx,QWORD PTR[32+rdx]
+ lea rdx,QWORD PTR[16+rdx]
+DB 0f3h,00fh,0a7h,0c8h
+ mov rbx,r8
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_aes_block::
+padlock_aes_block ENDP
+
+PUBLIC padlock_xstore
+
+ALIGN 16
+padlock_xstore PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_xstore::
+ mov rdi,rcx
+ mov rsi,rdx
+
+
+ mov edx,esi
+DB 00fh,0a7h,0c0h
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_xstore::
+padlock_xstore ENDP
+
+PUBLIC padlock_sha1_oneshot
+
+ALIGN 16
+padlock_sha1_oneshot PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_sha1_oneshot::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
+ mov rcx,rdx
+ mov rdx,rdi
+ movups xmm0,XMMWORD PTR[rdi]
+ sub rsp,128+8
+ mov eax,DWORD PTR[16+rdi]
+ movaps XMMWORD PTR[rsp],xmm0
+ mov rdi,rsp
+ mov DWORD PTR[16+rsp],eax
+ xor rax,rax
+DB 0f3h,00fh,0a6h,0c8h
+ movaps xmm0,XMMWORD PTR[rsp]
+ mov eax,DWORD PTR[16+rsp]
+ add rsp,128+8
+ movups XMMWORD PTR[rdx],xmm0
+ mov DWORD PTR[16+rdx],eax
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_sha1_oneshot::
+padlock_sha1_oneshot ENDP
+
+PUBLIC padlock_sha1_blocks
+
+ALIGN 16
+padlock_sha1_blocks PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_sha1_blocks::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
+ mov rcx,rdx
+ mov rdx,rdi
+ movups xmm0,XMMWORD PTR[rdi]
+ sub rsp,128+8
+ mov eax,DWORD PTR[16+rdi]
+ movaps XMMWORD PTR[rsp],xmm0
+ mov rdi,rsp
+ mov DWORD PTR[16+rsp],eax
+ mov rax,-1
+DB 0f3h,00fh,0a6h,0c8h
+ movaps xmm0,XMMWORD PTR[rsp]
+ mov eax,DWORD PTR[16+rsp]
+ add rsp,128+8
+ movups XMMWORD PTR[rdx],xmm0
+ mov DWORD PTR[16+rdx],eax
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_sha1_blocks::
+padlock_sha1_blocks ENDP
+
+PUBLIC padlock_sha256_oneshot
+
+ALIGN 16
+padlock_sha256_oneshot PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_sha256_oneshot::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
+ mov rcx,rdx
+ mov rdx,rdi
+ movups xmm0,XMMWORD PTR[rdi]
+ sub rsp,128+8
+ movups xmm1,XMMWORD PTR[16+rdi]
+ movaps XMMWORD PTR[rsp],xmm0
+ mov rdi,rsp
+ movaps XMMWORD PTR[16+rsp],xmm1
+ xor rax,rax
+DB 0f3h,00fh,0a6h,0d0h
+ movaps xmm0,XMMWORD PTR[rsp]
+ movaps xmm1,XMMWORD PTR[16+rsp]
+ add rsp,128+8
+ movups XMMWORD PTR[rdx],xmm0
+ movups XMMWORD PTR[16+rdx],xmm1
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_sha256_oneshot::
+padlock_sha256_oneshot ENDP
+
+PUBLIC padlock_sha256_blocks
+
+ALIGN 16
+padlock_sha256_blocks PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_sha256_blocks::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
+ mov rcx,rdx
+ mov rdx,rdi
+ movups xmm0,XMMWORD PTR[rdi]
+ sub rsp,128+8
+ movups xmm1,XMMWORD PTR[16+rdi]
+ movaps XMMWORD PTR[rsp],xmm0
+ mov rdi,rsp
+ movaps XMMWORD PTR[16+rsp],xmm1
+ mov rax,-1
+DB 0f3h,00fh,0a6h,0d0h
+ movaps xmm0,XMMWORD PTR[rsp]
+ movaps xmm1,XMMWORD PTR[16+rsp]
+ add rsp,128+8
+ movups XMMWORD PTR[rdx],xmm0
+ movups XMMWORD PTR[16+rdx],xmm1
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_sha256_blocks::
+padlock_sha256_blocks ENDP
+
+PUBLIC padlock_sha512_blocks
+
+ALIGN 16
+padlock_sha512_blocks PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_sha512_blocks::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+
+
+ mov rcx,rdx
+ mov rdx,rdi
+ movups xmm0,XMMWORD PTR[rdi]
+ sub rsp,128+8
+ movups xmm1,XMMWORD PTR[16+rdi]
+ movups xmm2,XMMWORD PTR[32+rdi]
+ movups xmm3,XMMWORD PTR[48+rdi]
+ movaps XMMWORD PTR[rsp],xmm0
+ mov rdi,rsp
+ movaps XMMWORD PTR[16+rsp],xmm1
+ movaps XMMWORD PTR[32+rsp],xmm2
+ movaps XMMWORD PTR[48+rsp],xmm3
+DB 0f3h,00fh,0a6h,0e0h
+ movaps xmm0,XMMWORD PTR[rsp]
+ movaps xmm1,XMMWORD PTR[16+rsp]
+ movaps xmm2,XMMWORD PTR[32+rsp]
+ movaps xmm3,XMMWORD PTR[48+rsp]
+ add rsp,128+8
+ movups XMMWORD PTR[rdx],xmm0
+ movups XMMWORD PTR[16+rdx],xmm1
+ movups XMMWORD PTR[32+rdx],xmm2
+ movups XMMWORD PTR[48+rdx],xmm3
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_sha512_blocks::
+padlock_sha512_blocks ENDP
+PUBLIC padlock_ecb_encrypt
+
+ALIGN 16
+padlock_ecb_encrypt PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_ecb_encrypt::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+ mov rcx,r9
+
+
+ push rbp
+ push rbx
+
+ xor eax,eax
+ test rdx,15
+ jnz $L$ecb_abort
+ test rcx,15
+ jnz $L$ecb_abort
+ lea rax,QWORD PTR[$L$padlock_saved_context]
+ pushf
+ cld
+ call _padlock_verify_ctx
+ lea rdx,QWORD PTR[16+rdx]
+ xor eax,eax
+ xor ebx,ebx
+ test DWORD PTR[rdx],32
+ jnz $L$ecb_aligned
+ test rdi,00fh
+ setz al
+ test rsi,00fh
+ setz bl
+ test eax,ebx
+ jnz $L$ecb_aligned
+ neg rax
+ mov rbx,512
+ not rax
+ lea rbp,QWORD PTR[rsp]
+ cmp rcx,rbx
+ cmovc rbx,rcx
+ and rax,rbx
+ mov rbx,rcx
+ neg rax
+ and rbx,512-1
+ lea rsp,QWORD PTR[rbp*1+rax]
+ mov rax,512
+ cmovz rbx,rax
+ cmp rcx,rbx
+ ja $L$ecb_loop
+ mov rax,rsi
+ cmp rbp,rsp
+ cmove rax,rdi
+ add rax,rcx
+ neg rax
+ and rax,0fffh
+ cmp rax,128
+ mov rax,-128
+ cmovae rax,rbx
+ and rbx,rax
+ jz $L$ecb_unaligned_tail
+ jmp $L$ecb_loop
+ALIGN 16
+$L$ecb_loop::
+ cmp rbx,rcx
+ cmova rbx,rcx
+ mov r8,rdi
+ mov r9,rsi
+ mov r10,rcx
+ mov rcx,rbx
+ mov r11,rbx
+ test rdi,00fh
+ cmovnz rdi,rsp
+ test rsi,00fh
+ jz $L$ecb_inp_aligned
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+ mov rcx,rbx
+ mov rsi,rdi
+$L$ecb_inp_aligned::
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,200
+ mov rdi,r8
+ mov rbx,r11
+ test rdi,00fh
+ jz $L$ecb_out_aligned
+ mov rcx,rbx
+ lea rsi,QWORD PTR[rsp]
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+$L$ecb_out_aligned::
+ mov rsi,r9
+ mov rcx,r10
+ add rdi,rbx
+ add rsi,rbx
+ sub rcx,rbx
+ mov rbx,512
+ jz $L$ecb_break
+ cmp rcx,rbx
+ jae $L$ecb_loop
+$L$ecb_unaligned_tail::
+ xor eax,eax
+ cmp rbp,rsp
+ cmove rax,rcx
+ mov r8,rdi
+ mov rbx,rcx
+ sub rsp,rax
+ shr rcx,3
+ lea rdi,QWORD PTR[rsp]
+DB 0f3h,048h,0a5h
+ mov rsi,rsp
+ mov rdi,r8
+ mov rcx,rbx
+ jmp $L$ecb_loop
+ALIGN 16
+$L$ecb_break::
+ cmp rsp,rbp
+ je $L$ecb_done
+
+ pxor xmm0,xmm0
+ lea rax,QWORD PTR[rsp]
+$L$ecb_bzero::
+ movaps XMMWORD PTR[rax],xmm0
+ lea rax,QWORD PTR[16+rax]
+ cmp rbp,rax
+ ja $L$ecb_bzero
+
+$L$ecb_done::
+ lea rsp,QWORD PTR[rbp]
+ jmp $L$ecb_exit
+
+ALIGN 16
+$L$ecb_aligned::
+ lea rbp,QWORD PTR[rcx*1+rsi]
+ neg rbp
+ and rbp,0fffh
+ xor eax,eax
+ cmp rbp,128
+ mov rbp,128-1
+ cmovae rbp,rax
+ and rbp,rcx
+ sub rcx,rbp
+ jz $L$ecb_aligned_tail
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,200
+ test rbp,rbp
+ jz $L$ecb_exit
+
+$L$ecb_aligned_tail::
+ mov r8,rdi
+ mov rbx,rbp
+ mov rcx,rbp
+ lea rbp,QWORD PTR[rsp]
+ sub rsp,rcx
+ shr rcx,3
+ lea rdi,QWORD PTR[rsp]
+DB 0f3h,048h,0a5h
+ lea rdi,QWORD PTR[r8]
+ lea rsi,QWORD PTR[rsp]
+ mov rcx,rbx
+ jmp $L$ecb_loop
+$L$ecb_exit::
+ mov eax,1
+ lea rsp,QWORD PTR[8+rsp]
+$L$ecb_abort::
+ pop rbx
+ pop rbp
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_ecb_encrypt::
+padlock_ecb_encrypt ENDP
+PUBLIC padlock_cbc_encrypt
+
+ALIGN 16
+padlock_cbc_encrypt PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_cbc_encrypt::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+ mov rcx,r9
+
+
+ push rbp
+ push rbx
+
+ xor eax,eax
+ test rdx,15
+ jnz $L$cbc_abort
+ test rcx,15
+ jnz $L$cbc_abort
+ lea rax,QWORD PTR[$L$padlock_saved_context]
+ pushf
+ cld
+ call _padlock_verify_ctx
+ lea rdx,QWORD PTR[16+rdx]
+ xor eax,eax
+ xor ebx,ebx
+ test DWORD PTR[rdx],32
+ jnz $L$cbc_aligned
+ test rdi,00fh
+ setz al
+ test rsi,00fh
+ setz bl
+ test eax,ebx
+ jnz $L$cbc_aligned
+ neg rax
+ mov rbx,512
+ not rax
+ lea rbp,QWORD PTR[rsp]
+ cmp rcx,rbx
+ cmovc rbx,rcx
+ and rax,rbx
+ mov rbx,rcx
+ neg rax
+ and rbx,512-1
+ lea rsp,QWORD PTR[rbp*1+rax]
+ mov rax,512
+ cmovz rbx,rax
+ cmp rcx,rbx
+ ja $L$cbc_loop
+ mov rax,rsi
+ cmp rbp,rsp
+ cmove rax,rdi
+ add rax,rcx
+ neg rax
+ and rax,0fffh
+ cmp rax,64
+ mov rax,-64
+ cmovae rax,rbx
+ and rbx,rax
+ jz $L$cbc_unaligned_tail
+ jmp $L$cbc_loop
+ALIGN 16
+$L$cbc_loop::
+ cmp rbx,rcx
+ cmova rbx,rcx
+ mov r8,rdi
+ mov r9,rsi
+ mov r10,rcx
+ mov rcx,rbx
+ mov r11,rbx
+ test rdi,00fh
+ cmovnz rdi,rsp
+ test rsi,00fh
+ jz $L$cbc_inp_aligned
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+ mov rcx,rbx
+ mov rsi,rdi
+$L$cbc_inp_aligned::
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,208
+ movdqa xmm0,XMMWORD PTR[rax]
+ movdqa XMMWORD PTR[(-16)+rdx],xmm0
+ mov rdi,r8
+ mov rbx,r11
+ test rdi,00fh
+ jz $L$cbc_out_aligned
+ mov rcx,rbx
+ lea rsi,QWORD PTR[rsp]
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+$L$cbc_out_aligned::
+ mov rsi,r9
+ mov rcx,r10
+ add rdi,rbx
+ add rsi,rbx
+ sub rcx,rbx
+ mov rbx,512
+ jz $L$cbc_break
+ cmp rcx,rbx
+ jae $L$cbc_loop
+$L$cbc_unaligned_tail::
+ xor eax,eax
+ cmp rbp,rsp
+ cmove rax,rcx
+ mov r8,rdi
+ mov rbx,rcx
+ sub rsp,rax
+ shr rcx,3
+ lea rdi,QWORD PTR[rsp]
+DB 0f3h,048h,0a5h
+ mov rsi,rsp
+ mov rdi,r8
+ mov rcx,rbx
+ jmp $L$cbc_loop
+ALIGN 16
+$L$cbc_break::
+ cmp rsp,rbp
+ je $L$cbc_done
+
+ pxor xmm0,xmm0
+ lea rax,QWORD PTR[rsp]
+$L$cbc_bzero::
+ movaps XMMWORD PTR[rax],xmm0
+ lea rax,QWORD PTR[16+rax]
+ cmp rbp,rax
+ ja $L$cbc_bzero
+
+$L$cbc_done::
+ lea rsp,QWORD PTR[rbp]
+ jmp $L$cbc_exit
+
+ALIGN 16
+$L$cbc_aligned::
+ lea rbp,QWORD PTR[rcx*1+rsi]
+ neg rbp
+ and rbp,0fffh
+ xor eax,eax
+ cmp rbp,64
+ mov rbp,64-1
+ cmovae rbp,rax
+ and rbp,rcx
+ sub rcx,rbp
+ jz $L$cbc_aligned_tail
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,208
+ movdqa xmm0,XMMWORD PTR[rax]
+ movdqa XMMWORD PTR[(-16)+rdx],xmm0
+ test rbp,rbp
+ jz $L$cbc_exit
+
+$L$cbc_aligned_tail::
+ mov r8,rdi
+ mov rbx,rbp
+ mov rcx,rbp
+ lea rbp,QWORD PTR[rsp]
+ sub rsp,rcx
+ shr rcx,3
+ lea rdi,QWORD PTR[rsp]
+DB 0f3h,048h,0a5h
+ lea rdi,QWORD PTR[r8]
+ lea rsi,QWORD PTR[rsp]
+ mov rcx,rbx
+ jmp $L$cbc_loop
+$L$cbc_exit::
+ mov eax,1
+ lea rsp,QWORD PTR[8+rsp]
+$L$cbc_abort::
+ pop rbx
+ pop rbp
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_cbc_encrypt::
+padlock_cbc_encrypt ENDP
+PUBLIC padlock_cfb_encrypt
+
+ALIGN 16
+padlock_cfb_encrypt PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_cfb_encrypt::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+ mov rcx,r9
+
+
+ push rbp
+ push rbx
+
+ xor eax,eax
+ test rdx,15
+ jnz $L$cfb_abort
+ test rcx,15
+ jnz $L$cfb_abort
+ lea rax,QWORD PTR[$L$padlock_saved_context]
+ pushf
+ cld
+ call _padlock_verify_ctx
+ lea rdx,QWORD PTR[16+rdx]
+ xor eax,eax
+ xor ebx,ebx
+ test DWORD PTR[rdx],32
+ jnz $L$cfb_aligned
+ test rdi,00fh
+ setz al
+ test rsi,00fh
+ setz bl
+ test eax,ebx
+ jnz $L$cfb_aligned
+ neg rax
+ mov rbx,512
+ not rax
+ lea rbp,QWORD PTR[rsp]
+ cmp rcx,rbx
+ cmovc rbx,rcx
+ and rax,rbx
+ mov rbx,rcx
+ neg rax
+ and rbx,512-1
+ lea rsp,QWORD PTR[rbp*1+rax]
+ mov rax,512
+ cmovz rbx,rax
+ jmp $L$cfb_loop
+ALIGN 16
+$L$cfb_loop::
+ cmp rbx,rcx
+ cmova rbx,rcx
+ mov r8,rdi
+ mov r9,rsi
+ mov r10,rcx
+ mov rcx,rbx
+ mov r11,rbx
+ test rdi,00fh
+ cmovnz rdi,rsp
+ test rsi,00fh
+ jz $L$cfb_inp_aligned
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+ mov rcx,rbx
+ mov rsi,rdi
+$L$cfb_inp_aligned::
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,224
+ movdqa xmm0,XMMWORD PTR[rax]
+ movdqa XMMWORD PTR[(-16)+rdx],xmm0
+ mov rdi,r8
+ mov rbx,r11
+ test rdi,00fh
+ jz $L$cfb_out_aligned
+ mov rcx,rbx
+ lea rsi,QWORD PTR[rsp]
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+$L$cfb_out_aligned::
+ mov rsi,r9
+ mov rcx,r10
+ add rdi,rbx
+ add rsi,rbx
+ sub rcx,rbx
+ mov rbx,512
+ jnz $L$cfb_loop
+ cmp rsp,rbp
+ je $L$cfb_done
+
+ pxor xmm0,xmm0
+ lea rax,QWORD PTR[rsp]
+$L$cfb_bzero::
+ movaps XMMWORD PTR[rax],xmm0
+ lea rax,QWORD PTR[16+rax]
+ cmp rbp,rax
+ ja $L$cfb_bzero
+
+$L$cfb_done::
+ lea rsp,QWORD PTR[rbp]
+ jmp $L$cfb_exit
+
+ALIGN 16
+$L$cfb_aligned::
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,224
+ movdqa xmm0,XMMWORD PTR[rax]
+ movdqa XMMWORD PTR[(-16)+rdx],xmm0
+$L$cfb_exit::
+ mov eax,1
+ lea rsp,QWORD PTR[8+rsp]
+$L$cfb_abort::
+ pop rbx
+ pop rbp
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_cfb_encrypt::
+padlock_cfb_encrypt ENDP
+PUBLIC padlock_ofb_encrypt
+
+ALIGN 16
+padlock_ofb_encrypt PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_ofb_encrypt::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+ mov rcx,r9
+
+
+ push rbp
+ push rbx
+
+ xor eax,eax
+ test rdx,15
+ jnz $L$ofb_abort
+ test rcx,15
+ jnz $L$ofb_abort
+ lea rax,QWORD PTR[$L$padlock_saved_context]
+ pushf
+ cld
+ call _padlock_verify_ctx
+ lea rdx,QWORD PTR[16+rdx]
+ xor eax,eax
+ xor ebx,ebx
+ test DWORD PTR[rdx],32
+ jnz $L$ofb_aligned
+ test rdi,00fh
+ setz al
+ test rsi,00fh
+ setz bl
+ test eax,ebx
+ jnz $L$ofb_aligned
+ neg rax
+ mov rbx,512
+ not rax
+ lea rbp,QWORD PTR[rsp]
+ cmp rcx,rbx
+ cmovc rbx,rcx
+ and rax,rbx
+ mov rbx,rcx
+ neg rax
+ and rbx,512-1
+ lea rsp,QWORD PTR[rbp*1+rax]
+ mov rax,512
+ cmovz rbx,rax
+ jmp $L$ofb_loop
+ALIGN 16
+$L$ofb_loop::
+ cmp rbx,rcx
+ cmova rbx,rcx
+ mov r8,rdi
+ mov r9,rsi
+ mov r10,rcx
+ mov rcx,rbx
+ mov r11,rbx
+ test rdi,00fh
+ cmovnz rdi,rsp
+ test rsi,00fh
+ jz $L$ofb_inp_aligned
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+ mov rcx,rbx
+ mov rsi,rdi
+$L$ofb_inp_aligned::
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,232
+ movdqa xmm0,XMMWORD PTR[rax]
+ movdqa XMMWORD PTR[(-16)+rdx],xmm0
+ mov rdi,r8
+ mov rbx,r11
+ test rdi,00fh
+ jz $L$ofb_out_aligned
+ mov rcx,rbx
+ lea rsi,QWORD PTR[rsp]
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+$L$ofb_out_aligned::
+ mov rsi,r9
+ mov rcx,r10
+ add rdi,rbx
+ add rsi,rbx
+ sub rcx,rbx
+ mov rbx,512
+ jnz $L$ofb_loop
+ cmp rsp,rbp
+ je $L$ofb_done
+
+ pxor xmm0,xmm0
+ lea rax,QWORD PTR[rsp]
+$L$ofb_bzero::
+ movaps XMMWORD PTR[rax],xmm0
+ lea rax,QWORD PTR[16+rax]
+ cmp rbp,rax
+ ja $L$ofb_bzero
+
+$L$ofb_done::
+ lea rsp,QWORD PTR[rbp]
+ jmp $L$ofb_exit
+
+ALIGN 16
+$L$ofb_aligned::
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,232
+ movdqa xmm0,XMMWORD PTR[rax]
+ movdqa XMMWORD PTR[(-16)+rdx],xmm0
+$L$ofb_exit::
+ mov eax,1
+ lea rsp,QWORD PTR[8+rsp]
+$L$ofb_abort::
+ pop rbx
+ pop rbp
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_ofb_encrypt::
+padlock_ofb_encrypt ENDP
+PUBLIC padlock_ctr32_encrypt
+
+ALIGN 16
+padlock_ctr32_encrypt PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_padlock_ctr32_encrypt::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+ mov rcx,r9
+
+
+ push rbp
+ push rbx
+
+ xor eax,eax
+ test rdx,15
+ jnz $L$ctr32_abort
+ test rcx,15
+ jnz $L$ctr32_abort
+ lea rax,QWORD PTR[$L$padlock_saved_context]
+ pushf
+ cld
+ call _padlock_verify_ctx
+ lea rdx,QWORD PTR[16+rdx]
+ xor eax,eax
+ xor ebx,ebx
+ test DWORD PTR[rdx],32
+ jnz $L$ctr32_aligned
+ test rdi,00fh
+ setz al
+ test rsi,00fh
+ setz bl
+ test eax,ebx
+ jnz $L$ctr32_aligned
+ neg rax
+ mov rbx,512
+ not rax
+ lea rbp,QWORD PTR[rsp]
+ cmp rcx,rbx
+ cmovc rbx,rcx
+ and rax,rbx
+ mov rbx,rcx
+ neg rax
+ and rbx,512-1
+ lea rsp,QWORD PTR[rbp*1+rax]
+ mov rax,512
+ cmovz rbx,rax
+$L$ctr32_reenter::
+ mov eax,DWORD PTR[((-4))+rdx]
+ bswap eax
+ neg eax
+ and eax,31
+ mov rbx,512
+ shl eax,4
+ cmovz rax,rbx
+ cmp rcx,rax
+ cmova rbx,rax
+ cmovbe rbx,rcx
+ cmp rcx,rbx
+ ja $L$ctr32_loop
+ mov rax,rsi
+ cmp rbp,rsp
+ cmove rax,rdi
+ add rax,rcx
+ neg rax
+ and rax,0fffh
+ cmp rax,32
+ mov rax,-32
+ cmovae rax,rbx
+ and rbx,rax
+ jz $L$ctr32_unaligned_tail
+ jmp $L$ctr32_loop
+ALIGN 16
+$L$ctr32_loop::
+ cmp rbx,rcx
+ cmova rbx,rcx
+ mov r8,rdi
+ mov r9,rsi
+ mov r10,rcx
+ mov rcx,rbx
+ mov r11,rbx
+ test rdi,00fh
+ cmovnz rdi,rsp
+ test rsi,00fh
+ jz $L$ctr32_inp_aligned
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+ mov rcx,rbx
+ mov rsi,rdi
+$L$ctr32_inp_aligned::
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,216
+ mov eax,DWORD PTR[((-4))+rdx]
+ test eax,0ffff0000h
+ jnz $L$ctr32_no_carry
+ bswap eax
+ add eax,010000h
+ bswap eax
+ mov DWORD PTR[((-4))+rdx],eax
+$L$ctr32_no_carry::
+ mov rdi,r8
+ mov rbx,r11
+ test rdi,00fh
+ jz $L$ctr32_out_aligned
+ mov rcx,rbx
+ lea rsi,QWORD PTR[rsp]
+ shr rcx,3
+DB 0f3h,048h,0a5h
+ sub rdi,rbx
+$L$ctr32_out_aligned::
+ mov rsi,r9
+ mov rcx,r10
+ add rdi,rbx
+ add rsi,rbx
+ sub rcx,rbx
+ mov rbx,512
+ jz $L$ctr32_break
+ cmp rcx,rbx
+ jae $L$ctr32_loop
+ mov rbx,rcx
+ mov rax,rsi
+ cmp rbp,rsp
+ cmove rax,rdi
+ add rax,rcx
+ neg rax
+ and rax,0fffh
+ cmp rax,32
+ mov rax,-32
+ cmovae rax,rbx
+ and rbx,rax
+ jnz $L$ctr32_loop
+$L$ctr32_unaligned_tail::
+ xor eax,eax
+ cmp rbp,rsp
+ cmove rax,rcx
+ mov r8,rdi
+ mov rbx,rcx
+ sub rsp,rax
+ shr rcx,3
+ lea rdi,QWORD PTR[rsp]
+DB 0f3h,048h,0a5h
+ mov rsi,rsp
+ mov rdi,r8
+ mov rcx,rbx
+ jmp $L$ctr32_loop
+ALIGN 16
+$L$ctr32_break::
+ cmp rsp,rbp
+ je $L$ctr32_done
+
+ pxor xmm0,xmm0
+ lea rax,QWORD PTR[rsp]
+$L$ctr32_bzero::
+ movaps XMMWORD PTR[rax],xmm0
+ lea rax,QWORD PTR[16+rax]
+ cmp rbp,rax
+ ja $L$ctr32_bzero
+
+$L$ctr32_done::
+ lea rsp,QWORD PTR[rbp]
+ jmp $L$ctr32_exit
+
+ALIGN 16
+$L$ctr32_aligned::
+ mov eax,DWORD PTR[((-4))+rdx]
+ bswap eax
+ neg eax
+ and eax,0ffffh
+ mov rbx,1048576
+ shl eax,4
+ cmovz rax,rbx
+ cmp rcx,rax
+ cmova rbx,rax
+ cmovbe rbx,rcx
+ jbe $L$ctr32_aligned_skip
+
+$L$ctr32_aligned_loop::
+ mov r10,rcx
+ mov rcx,rbx
+ mov r11,rbx
+
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,216
+
+ mov eax,DWORD PTR[((-4))+rdx]
+ bswap eax
+ add eax,010000h
+ bswap eax
+ mov DWORD PTR[((-4))+rdx],eax
+
+ mov rcx,r10
+ sub rcx,r11
+ mov rbx,1048576
+ jz $L$ctr32_exit
+ cmp rcx,rbx
+ jae $L$ctr32_aligned_loop
+
+$L$ctr32_aligned_skip::
+ lea rbp,QWORD PTR[rcx*1+rsi]
+ neg rbp
+ and rbp,0fffh
+ xor eax,eax
+ cmp rbp,32
+ mov rbp,32-1
+ cmovae rbp,rax
+ and rbp,rcx
+ sub rcx,rbp
+ jz $L$ctr32_aligned_tail
+ lea rax,QWORD PTR[((-16))+rdx]
+ lea rbx,QWORD PTR[16+rdx]
+ shr rcx,4
+DB 0f3h,00fh,0a7h,216
+ test rbp,rbp
+ jz $L$ctr32_exit
+
+$L$ctr32_aligned_tail::
+ mov r8,rdi
+ mov rbx,rbp
+ mov rcx,rbp
+ lea rbp,QWORD PTR[rsp]
+ sub rsp,rcx
+ shr rcx,3
+ lea rdi,QWORD PTR[rsp]
+DB 0f3h,048h,0a5h
+ lea rdi,QWORD PTR[r8]
+ lea rsi,QWORD PTR[rsp]
+ mov rcx,rbx
+ jmp $L$ctr32_loop
+$L$ctr32_exit::
+ mov eax,1
+ lea rsp,QWORD PTR[8+rsp]
+$L$ctr32_abort::
+ pop rbx
+ pop rbp
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_padlock_ctr32_encrypt::
+padlock_ctr32_encrypt ENDP
+DB 86,73,65,32,80,97,100,108,111,99,107,32,120,56,54,95
+DB 54,52,32,109,111,100,117,108,101,44,32,67,82,89,80,84
+DB 79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64
+DB 111,112,101,110,115,115,108,46,111,114,103,62,0
+ALIGN 16
+.text$ ENDS
+_DATA SEGMENT
+ALIGN 8
+$L$padlock_saved_context::
+ DQ 0
+
+_DATA ENDS
+END