aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm
diff options
context:
space:
mode:
authorvalbon <valbon@yandex-team.ru>2022-02-10 16:47:59 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:47:59 +0300
commit480c782666ba932a651f049537e8b89f2a382a29 (patch)
tree5d0e632203c450243e28d32549b6016a8ce93d1b /contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm
parentf860932520ce9bc8540a3c19e84c0109c3437dc5 (diff)
downloadydb-480c782666ba932a651f049537e8b89f2a382a29.tar.gz
Restoring authorship annotation for <valbon@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm')
-rw-r--r--contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm2074
1 files changed, 1037 insertions, 1037 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 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