diff options
author | valbon <valbon@yandex-team.ru> | 2022-02-10 16:47:59 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:47:59 +0300 |
commit | 480c782666ba932a651f049537e8b89f2a382a29 (patch) | |
tree | 5d0e632203c450243e28d32549b6016a8ce93d1b /contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm | |
parent | f860932520ce9bc8540a3c19e84c0109c3437dc5 (diff) | |
download | ydb-480c782666ba932a651f049537e8b89f2a382a29.tar.gz |
Restoring authorship annotation for <valbon@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm')
-rw-r--r-- | contrib/libs/openssl/asm/windows/engines/e_padlock-x86.masm | 2074 |
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 |