18 changed files with 36930 additions and 1 deletions
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,682 @@
|
||||
; This file is generated from a similarly-named Perl script in the BoringSSL |
||||
; source tree. Do not edit by hand. |
||||
|
||||
%ifdef BORINGSSL_PREFIX |
||||
%include "boringssl_prefix_symbols_nasm.inc" |
||||
%endif |
||||
%ifidn __OUTPUT_FORMAT__,obj |
||||
section code use32 class=code align=64 |
||||
%elifidn __OUTPUT_FORMAT__,win32 |
||||
$@feat.00 equ 1 |
||||
section .text code align=64 |
||||
%else |
||||
section .text code |
||||
%endif |
||||
;extern _GFp_ia32cap_P |
||||
global _GFp_aes_hw_encrypt |
||||
align 16 |
||||
_GFp_aes_hw_encrypt: |
||||
L$_GFp_aes_hw_encrypt_begin: |
||||
mov eax,DWORD [4+esp] |
||||
mov edx,DWORD [12+esp] |
||||
movups xmm2,[eax] |
||||
mov ecx,DWORD [240+edx] |
||||
mov eax,DWORD [8+esp] |
||||
movups xmm0,[edx] |
||||
movups xmm1,[16+edx] |
||||
lea edx,[32+edx] |
||||
xorps xmm2,xmm0 |
||||
L$000enc1_loop_1: |
||||
db 102,15,56,220,209 |
||||
dec ecx |
||||
movups xmm1,[edx] |
||||
lea edx,[16+edx] |
||||
jnz NEAR L$000enc1_loop_1 |
||||
db 102,15,56,221,209 |
||||
pxor xmm0,xmm0 |
||||
pxor xmm1,xmm1 |
||||
movups [eax],xmm2 |
||||
pxor xmm2,xmm2 |
||||
ret |
||||
align 16 |
||||
__aesni_encrypt2: |
||||
movups xmm0,[edx] |
||||
shl ecx,4 |
||||
movups xmm1,[16+edx] |
||||
xorps xmm2,xmm0 |
||||
pxor xmm3,xmm0 |
||||
movups xmm0,[32+edx] |
||||
lea edx,[32+ecx*1+edx] |
||||
neg ecx |
||||
add ecx,16 |
||||
L$001enc2_loop: |
||||
db 102,15,56,220,209 |
||||
db 102,15,56,220,217 |
||||
movups xmm1,[ecx*1+edx] |
||||
add ecx,32 |
||||
db 102,15,56,220,208 |
||||
db 102,15,56,220,216 |
||||
movups xmm0,[ecx*1+edx-16] |
||||
jnz NEAR L$001enc2_loop |
||||
db 102,15,56,220,209 |
||||
db 102,15,56,220,217 |
||||
db 102,15,56,221,208 |
||||
db 102,15,56,221,216 |
||||
ret |
||||
align 16 |
||||
__aesni_encrypt3: |
||||
movups xmm0,[edx] |
||||
shl ecx,4 |
||||
movups xmm1,[16+edx] |
||||
xorps xmm2,xmm0 |
||||
pxor xmm3,xmm0 |
||||
pxor xmm4,xmm0 |
||||
movups xmm0,[32+edx] |
||||
lea edx,[32+ecx*1+edx] |
||||
neg ecx |
||||
add ecx,16 |
||||
L$002enc3_loop: |
||||
db 102,15,56,220,209 |
||||
db 102,15,56,220,217 |
||||
db 102,15,56,220,225 |
||||
movups xmm1,[ecx*1+edx] |
||||
add ecx,32 |
||||
db 102,15,56,220,208 |
||||
db 102,15,56,220,216 |
||||
db 102,15,56,220,224 |
||||
movups xmm0,[ecx*1+edx-16] |
||||
jnz NEAR L$002enc3_loop |
||||
db 102,15,56,220,209 |
||||
db 102,15,56,220,217 |
||||
db 102,15,56,220,225 |
||||
db 102,15,56,221,208 |
||||
db 102,15,56,221,216 |
||||
db 102,15,56,221,224 |
||||
ret |
||||
align 16 |
||||
__aesni_encrypt4: |
||||
movups xmm0,[edx] |
||||
movups xmm1,[16+edx] |
||||
shl ecx,4 |
||||
xorps xmm2,xmm0 |
||||
pxor xmm3,xmm0 |
||||
pxor xmm4,xmm0 |
||||
pxor xmm5,xmm0 |
||||
movups xmm0,[32+edx] |
||||
lea edx,[32+ecx*1+edx] |
||||
neg ecx |
||||
db 15,31,64,0 |
||||
add ecx,16 |
||||
L$003enc4_loop: |
||||
db 102,15,56,220,209 |
||||
db 102,15,56,220,217 |
||||
db 102,15,56,220,225 |
||||
db 102,15,56,220,233 |
||||
movups xmm1,[ecx*1+edx] |
||||
add ecx,32 |
||||
db 102,15,56,220,208 |
||||
db 102,15,56,220,216 |
||||
db 102,15,56,220,224 |
||||
db 102,15,56,220,232 |
||||
movups xmm0,[ecx*1+edx-16] |
||||
jnz NEAR L$003enc4_loop |
||||
db 102,15,56,220,209 |
||||
db 102,15,56,220,217 |
||||
db 102,15,56,220,225 |
||||
db 102,15,56,220,233 |
||||
db 102,15,56,221,208 |
||||
db 102,15,56,221,216 |
||||
db 102,15,56,221,224 |
||||
db 102,15,56,221,232 |
||||
ret |
||||
align 16 |
||||
__aesni_encrypt6: |
||||
movups xmm0,[edx] |
||||
shl ecx,4 |
||||
movups xmm1,[16+edx] |
||||
xorps xmm2,xmm0 |
||||
pxor xmm3,xmm0 |
||||
pxor xmm4,xmm0 |
||||
db 102,15,56,220,209 |
||||
pxor xmm5,xmm0 |
||||
pxor xmm6,xmm0 |
||||
db 102,15,56,220,217 |
||||
lea edx,[32+ecx*1+edx] |
||||
neg ecx |
||||
db 102,15,56,220,225 |
||||
pxor xmm7,xmm0 |
||||
movups xmm0,[ecx*1+edx] |
||||
add ecx,16 |
||||
jmp NEAR L$004_aesni_encrypt6_inner |
||||
align 16 |
||||
L$005enc6_loop: |
||||
db 102,15,56,220,209 |
||||
db 102,15,56,220,217 |
||||
db 102,15,56,220,225 |
||||
L$004_aesni_encrypt6_inner: |
||||
db 102,15,56,220,233 |
||||
db 102,15,56,220,241 |
||||
db 102,15,56,220,249 |
||||
L$_aesni_encrypt6_enter: |
||||
movups xmm1,[ecx*1+edx] |
||||
add ecx,32 |
||||
db 102,15,56,220,208 |
||||
db 102,15,56,220,216 |
||||
db 102,15,56,220,224 |
||||
db 102,15,56,220,232 |
||||
db 102,15,56,220,240 |
||||
db 102,15,56,220,248 |
||||
movups xmm0,[ecx*1+edx-16] |
||||
jnz NEAR L$005enc6_loop |
||||
db 102,15,56,220,209 |
||||
db 102,15,56,220,217 |
||||
db 102,15,56,220,225 |
||||
db 102,15,56,220,233 |
||||
db 102,15,56,220,241 |
||||
db 102,15,56,220,249 |
||||
db 102,15,56,221,208 |
||||
db 102,15,56,221,216 |
||||
db 102,15,56,221,224 |
||||
db 102,15,56,221,232 |
||||
db 102,15,56,221,240 |
||||
db 102,15,56,221,248 |
||||
ret |
||||
global _GFp_aes_hw_ctr32_encrypt_blocks |
||||
align 16 |
||||
_GFp_aes_hw_ctr32_encrypt_blocks: |
||||
L$_GFp_aes_hw_ctr32_encrypt_blocks_begin: |
||||
push ebp |
||||
push ebx |
||||
push esi |
||||
push edi |
||||
mov esi,DWORD [20+esp] |
||||
mov edi,DWORD [24+esp] |
||||
mov eax,DWORD [28+esp] |
||||
mov edx,DWORD [32+esp] |
||||
mov ebx,DWORD [36+esp] |
||||
mov ebp,esp |
||||
sub esp,88 |
||||
and esp,-16 |
||||
mov DWORD [80+esp],ebp |
||||
cmp eax,1 |
||||
je NEAR L$006ctr32_one_shortcut |
||||
movdqu xmm7,[ebx] |
||||
mov DWORD [esp],202182159 |
||||
mov DWORD [4+esp],134810123 |
||||
mov DWORD [8+esp],67438087 |
||||
mov DWORD [12+esp],66051 |
||||
mov ecx,6 |
||||
xor ebp,ebp |
||||
mov DWORD [16+esp],ecx |
||||
mov DWORD [20+esp],ecx |
||||
mov DWORD [24+esp],ecx |
||||
mov DWORD [28+esp],ebp |
||||
db 102,15,58,22,251,3 |
||||
db 102,15,58,34,253,3 |
||||
mov ecx,DWORD [240+edx] |
||||
bswap ebx |
||||
pxor xmm0,xmm0 |
||||
pxor xmm1,xmm1 |
||||
movdqa xmm2,[esp] |
||||
db 102,15,58,34,195,0 |
||||
lea ebp,[3+ebx] |
||||
db 102,15,58,34,205,0 |
||||
inc ebx |
||||
db 102,15,58,34,195,1 |
||||
inc ebp |
||||
db 102,15,58,34,205,1 |
||||
inc ebx |
||||
db 102,15,58,34,195,2 |
||||
inc ebp |
||||
db 102,15,58,34,205,2 |
||||
movdqa [48+esp],xmm0 |
||||
db 102,15,56,0,194 |
||||
movdqu xmm6,[edx] |
||||
movdqa [64+esp],xmm1 |
||||
db 102,15,56,0,202 |
||||
pshufd xmm2,xmm0,192 |
||||
pshufd xmm3,xmm0,128 |
||||
cmp eax,6 |
||||
jb NEAR L$007ctr32_tail |
||||
pxor xmm7,xmm6 |
||||
shl ecx,4 |
||||
mov ebx,16 |
||||
movdqa [32+esp],xmm7 |
||||
mov ebp,edx |
||||
sub ebx,ecx |
||||
lea edx,[32+ecx*1+edx] |
||||
sub eax,6 |
||||
jmp NEAR L$008ctr32_loop6 |
||||
align 16 |
||||
L$008ctr32_loop6: |
||||
pshufd xmm4,xmm0,64 |
||||
movdqa xmm0,[32+esp] |
||||
pshufd xmm5,xmm1,192 |
||||
pxor xmm2,xmm0 |
||||
pshufd xmm6,xmm1,128 |
||||
pxor xmm3,xmm0 |
||||
pshufd xmm7,xmm1,64 |
||||
movups xmm1,[16+ebp] |
||||
pxor xmm4,xmm0 |
||||
pxor xmm5,xmm0 |
||||
db 102,15,56,220,209 |
||||
pxor xmm6,xmm0 |
||||
pxor xmm7,xmm0 |
||||
db 102,15,56,220,217 |
||||
movups xmm0,[32+ebp] |
||||
mov ecx,ebx |
||||
db 102,15,56,220,225 |
||||
db 102,15,56,220,233 |
||||
db 102,15,56,220,241 |
||||
db 102,15,56,220,249 |
||||
call L$_aesni_encrypt6_enter |
||||
movups xmm1,[esi] |
||||
movups xmm0,[16+esi] |
||||
xorps xmm2,xmm1 |
||||
movups xmm1,[32+esi] |
||||
xorps xmm3,xmm0 |
||||
movups [edi],xmm2 |
||||
movdqa xmm0,[16+esp] |
||||
xorps xmm4,xmm1 |
||||
movdqa xmm1,[64+esp] |
||||
movups [16+edi],xmm3 |
||||
movups [32+edi],xmm4 |
||||
paddd xmm1,xmm0 |
||||
paddd xmm0,[48+esp] |
||||
movdqa xmm2,[esp] |
||||
movups xmm3,[48+esi] |
||||
movups xmm4,[64+esi] |
||||
xorps xmm5,xmm3 |
||||
movups xmm3,[80+esi] |
||||
lea esi,[96+esi] |
||||
movdqa [48+esp],xmm0 |
||||
db 102,15,56,0,194 |
||||
xorps xmm6,xmm4 |
||||
movups [48+edi],xmm5 |
||||
xorps xmm7,xmm3 |
||||
movdqa [64+esp],xmm1 |
||||
db 102,15,56,0,202 |
||||
movups [64+edi],xmm6 |
||||
pshufd xmm2,xmm0,192 |
||||
movups [80+edi],xmm7 |
||||
lea edi,[96+edi] |
||||
pshufd xmm3,xmm0,128 |
||||
sub eax,6 |
||||
jnc NEAR L$008ctr32_loop6 |
||||
add eax,6 |
||||
jz NEAR L$009ctr32_ret |
||||
movdqu xmm7,[ebp] |
||||
mov edx,ebp |
||||
pxor xmm7,[32+esp] |
||||
mov ecx,DWORD [240+ebp] |
||||
L$007ctr32_tail: |
||||
por xmm2,xmm7 |
||||
cmp eax,2 |
||||
jb NEAR L$010ctr32_one |
||||
pshufd xmm4,xmm0,64 |
||||
por xmm3,xmm7 |
||||
je NEAR L$011ctr32_two |
||||
pshufd xmm5,xmm1,192 |
||||
por xmm4,xmm7 |
||||
cmp eax,4 |
||||
jb NEAR L$012ctr32_three |
||||
pshufd xmm6,xmm1,128 |
||||
por xmm5,xmm7 |
||||
je NEAR L$013ctr32_four |
||||
por xmm6,xmm7 |
||||
call __aesni_encrypt6 |
||||
movups xmm1,[esi] |
||||
movups xmm0,[16+esi] |
||||
xorps xmm2,xmm1 |
||||
movups xmm1,[32+esi] |
||||
xorps xmm3,xmm0 |
||||
movups xmm0,[48+esi] |
||||
xorps xmm4,xmm1 |
||||
movups xmm1,[64+esi] |
||||
xorps xmm5,xmm0 |
||||
movups [edi],xmm2 |
||||
xorps xmm6,xmm1 |
||||
movups [16+edi],xmm3 |
||||
movups [32+edi],xmm4 |
||||
movups [48+edi],xmm5 |
||||
movups [64+edi],xmm6 |
||||
jmp NEAR L$009ctr32_ret |
||||
align 16 |
||||
L$006ctr32_one_shortcut: |
||||
movups xmm2,[ebx] |
||||
mov ecx,DWORD [240+edx] |
||||
L$010ctr32_one: |
||||
movups xmm0,[edx] |
||||
movups xmm1,[16+edx] |
||||
lea edx,[32+edx] |
||||
xorps xmm2,xmm0 |
||||
L$014enc1_loop_2: |
||||
db 102,15,56,220,209 |
||||
dec ecx |
||||
movups xmm1,[edx] |
||||
lea edx,[16+edx] |
||||
jnz NEAR L$014enc1_loop_2 |
||||
db 102,15,56,221,209 |
||||
movups xmm6,[esi] |
||||
xorps xmm6,xmm2 |
||||
movups [edi],xmm6 |
||||
jmp NEAR L$009ctr32_ret |
||||
align 16 |
||||
L$011ctr32_two: |
||||
call __aesni_encrypt2 |
||||
movups xmm5,[esi] |
||||
movups xmm6,[16+esi] |
||||
xorps xmm2,xmm5 |
||||
xorps xmm3,xmm6 |
||||
movups [edi],xmm2 |
||||
movups [16+edi],xmm3 |
||||
jmp NEAR L$009ctr32_ret |
||||
align 16 |
||||
L$012ctr32_three: |
||||
call __aesni_encrypt3 |
||||
movups xmm5,[esi] |
||||
movups xmm6,[16+esi] |
||||
xorps xmm2,xmm5 |
||||
movups xmm7,[32+esi] |
||||
xorps xmm3,xmm6 |
||||
movups [edi],xmm2 |
||||
xorps xmm4,xmm7 |
||||
movups [16+edi],xmm3 |
||||
movups [32+edi],xmm4 |
||||
jmp NEAR L$009ctr32_ret |
||||
align 16 |
||||
L$013ctr32_four: |
||||
call __aesni_encrypt4 |
||||
movups xmm6,[esi] |
||||
movups xmm7,[16+esi] |
||||
movups xmm1,[32+esi] |
||||
xorps xmm2,xmm6 |
||||
movups xmm0,[48+esi] |
||||
xorps xmm3,xmm7 |
||||
movups [edi],xmm2 |
||||
xorps xmm4,xmm1 |
||||
movups [16+edi],xmm3 |
||||
xorps xmm5,xmm0 |
||||
movups [32+edi],xmm4 |
||||
movups [48+edi],xmm5 |
||||
L$009ctr32_ret: |
||||
pxor xmm0,xmm0 |
||||
pxor xmm1,xmm1 |
||||
pxor xmm2,xmm2 |
||||
pxor xmm3,xmm3 |
||||
pxor xmm4,xmm4 |
||||
movdqa [32+esp],xmm0 |
||||
pxor xmm5,xmm5 |
||||
movdqa [48+esp],xmm0 |
||||
pxor xmm6,xmm6 |
||||
movdqa [64+esp],xmm0 |
||||
pxor xmm7,xmm7 |
||||
mov esp,DWORD [80+esp] |
||||
pop edi |
||||
pop esi |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
align 16 |
||||
__aesni_set_encrypt_key: |
||||
push ebp |
||||
push ebx |
||||
test eax,eax |
||||
jz NEAR L$015bad_pointer |
||||
test edx,edx |
||||
jz NEAR L$015bad_pointer |
||||
call L$016pic |
||||
L$016pic: |
||||
pop ebx |
||||
lea ebx,[(L$key_const-L$016pic)+ebx] |
||||
lea ebp,[_GFp_ia32cap_P] |
||||
movups xmm0,[eax] |
||||
xorps xmm4,xmm4 |
||||
mov ebp,DWORD [4+ebp] |
||||
lea edx,[16+edx] |
||||
and ebp,268437504 |
||||
cmp ecx,256 |
||||
je NEAR L$01714rounds |
||||
cmp ecx,128 |
||||
jne NEAR L$018bad_keybits |
||||
align 16 |
||||
L$01910rounds: |
||||
cmp ebp,268435456 |
||||
je NEAR L$02010rounds_alt |
||||
mov ecx,9 |
||||
movups [edx-16],xmm0 |
||||
db 102,15,58,223,200,1 |
||||
call L$021key_128_cold |
||||
db 102,15,58,223,200,2 |
||||
call L$022key_128 |
||||
db 102,15,58,223,200,4 |
||||
call L$022key_128 |
||||
db 102,15,58,223,200,8 |
||||
call L$022key_128 |
||||
db 102,15,58,223,200,16 |
||||
call L$022key_128 |
||||
db 102,15,58,223,200,32 |
||||
call L$022key_128 |
||||
db 102,15,58,223,200,64 |
||||
call L$022key_128 |
||||
db 102,15,58,223,200,128 |
||||
call L$022key_128 |
||||
db 102,15,58,223,200,27 |
||||
call L$022key_128 |
||||
db 102,15,58,223,200,54 |
||||
call L$022key_128 |
||||
movups [edx],xmm0 |
||||
mov DWORD [80+edx],ecx |
||||
jmp NEAR L$023good_key |
||||
align 16 |
||||
L$022key_128: |
||||
movups [edx],xmm0 |
||||
lea edx,[16+edx] |
||||
L$021key_128_cold: |
||||
shufps xmm4,xmm0,16 |
||||
xorps xmm0,xmm4 |
||||
shufps xmm4,xmm0,140 |
||||
xorps xmm0,xmm4 |
||||
shufps xmm1,xmm1,255 |
||||
xorps xmm0,xmm1 |
||||
ret |
||||
align 16 |
||||
L$02010rounds_alt: |
||||
movdqa xmm5,[ebx] |
||||
mov ecx,8 |
||||
movdqa xmm4,[32+ebx] |
||||
movdqa xmm2,xmm0 |
||||
movdqu [edx-16],xmm0 |
||||
L$024loop_key128: |
||||
db 102,15,56,0,197 |
||||
db 102,15,56,221,196 |
||||
pslld xmm4,1 |
||||
lea edx,[16+edx] |
||||
movdqa xmm3,xmm2 |
||||
pslldq xmm2,4 |
||||
pxor xmm3,xmm2 |
||||
pslldq xmm2,4 |
||||
pxor xmm3,xmm2 |
||||
pslldq xmm2,4 |
||||
pxor xmm2,xmm3 |
||||
pxor xmm0,xmm2 |
||||
movdqu [edx-16],xmm0 |
||||
movdqa xmm2,xmm0 |
||||
dec ecx |
||||
jnz NEAR L$024loop_key128 |
||||
movdqa xmm4,[48+ebx] |
||||
db 102,15,56,0,197 |
||||
db 102,15,56,221,196 |
||||
pslld xmm4,1 |
||||
movdqa xmm3,xmm2 |
||||
pslldq xmm2,4 |
||||
pxor xmm3,xmm2 |
||||
pslldq xmm2,4 |
||||
pxor xmm3,xmm2 |
||||
pslldq xmm2,4 |
||||
pxor xmm2,xmm3 |
||||
pxor xmm0,xmm2 |
||||
movdqu [edx],xmm0 |
||||
movdqa xmm2,xmm0 |
||||
db 102,15,56,0,197 |
||||
db 102,15,56,221,196 |
||||
movdqa xmm3,xmm2 |
||||
pslldq xmm2,4 |
||||
pxor xmm3,xmm2 |
||||
pslldq xmm2,4 |
||||
pxor xmm3,xmm2 |
||||
pslldq xmm2,4 |
||||
pxor xmm2,xmm3 |
||||
pxor xmm0,xmm2 |
||||
movdqu [16+edx],xmm0 |
||||
mov ecx,9 |
||||
mov DWORD [96+edx],ecx |
||||
jmp NEAR L$023good_key |
||||
align 16 |
||||
L$01714rounds: |
||||
movups xmm2,[16+eax] |
||||
lea edx,[16+edx] |
||||
cmp ebp,268435456 |
||||
je NEAR L$02514rounds_alt |
||||
mov ecx,13 |
||||
movups [edx-32],xmm0 |
||||
movups [edx-16],xmm2 |
||||
db 102,15,58,223,202,1 |
||||
call L$026key_256a_cold |
||||
db 102,15,58,223,200,1 |
||||
call L$027key_256b |
||||
db 102,15,58,223,202,2 |
||||
call L$028key_256a |
||||
db 102,15,58,223,200,2 |
||||
call L$027key_256b |
||||
db 102,15,58,223,202,4 |
||||
call L$028key_256a |
||||
db 102,15,58,223,200,4 |
||||
call L$027key_256b |
||||
db 102,15,58,223,202,8 |
||||
call L$028key_256a |
||||
db 102,15,58,223,200,8 |
||||
call L$027key_256b |
||||
db 102,15,58,223,202,16 |
||||
call L$028key_256a |
||||
db 102,15,58,223,200,16 |
||||
call L$027key_256b |
||||
db 102,15,58,223,202,32 |
||||
call L$028key_256a |
||||
db 102,15,58,223,200,32 |
||||
call L$027key_256b |
||||
db 102,15,58,223,202,64 |
||||
call L$028key_256a |
||||
movups [edx],xmm0 |
||||
mov DWORD [16+edx],ecx |
||||
xor eax,eax |
||||
jmp NEAR L$023good_key |
||||
align 16 |
||||
L$028key_256a: |
||||
movups [edx],xmm2 |
||||
lea edx,[16+edx] |
||||
L$026key_256a_cold: |
||||
shufps xmm4,xmm0,16 |
||||
xorps xmm0,xmm4 |
||||
shufps xmm4,xmm0,140 |
||||
xorps xmm0,xmm4 |
||||
shufps xmm1,xmm1,255 |
||||
xorps xmm0,xmm1 |
||||
ret |
||||
align 16 |
||||
L$027key_256b: |
||||
movups [edx],xmm0 |
||||
lea edx,[16+edx] |
||||
shufps xmm4,xmm2,16 |
||||
xorps xmm2,xmm4 |
||||
shufps xmm4,xmm2,140 |
||||
xorps xmm2,xmm4 |
||||
shufps xmm1,xmm1,170 |
||||
xorps xmm2,xmm1 |
||||
ret |
||||
align 16 |
||||
L$02514rounds_alt: |
||||
movdqa xmm5,[ebx] |
||||
movdqa xmm4,[32+ebx] |
||||
mov ecx,7 |
||||
movdqu [edx-32],xmm0 |
||||
movdqa xmm1,xmm2 |
||||
movdqu [edx-16],xmm2 |
||||
L$029loop_key256: |
||||
db 102,15,56,0,213 |
||||
db 102,15,56,221,212 |
||||
movdqa xmm3,xmm0 |
||||
pslldq xmm0,4 |
||||
pxor xmm3,xmm0 |
||||
pslldq xmm0,4 |
||||
pxor xmm3,xmm0 |
||||
pslldq xmm0,4 |
||||
pxor xmm0,xmm3 |
||||
pslld xmm4,1 |
||||
pxor xmm0,xmm2 |
||||
movdqu [edx],xmm0 |
||||
dec ecx |
||||
jz NEAR L$030done_key256 |
||||
pshufd xmm2,xmm0,255 |
||||
pxor xmm3,xmm3 |
||||
db 102,15,56,221,211 |
||||
movdqa xmm3,xmm1 |
||||
pslldq xmm1,4 |
||||
pxor xmm3,xmm1 |
||||
pslldq xmm1,4 |
||||
pxor xmm3,xmm1 |
||||
pslldq xmm1,4 |
||||
pxor xmm1,xmm3 |
||||
pxor xmm2,xmm1 |
||||
movdqu [16+edx],xmm2 |
||||
lea edx,[32+edx] |
||||
movdqa xmm1,xmm2 |
||||
jmp NEAR L$029loop_key256 |
||||
L$030done_key256: |
||||
mov ecx,13 |
||||
mov DWORD [16+edx],ecx |
||||
L$023good_key: |
||||
pxor xmm0,xmm0 |
||||
pxor xmm1,xmm1 |
||||
pxor xmm2,xmm2 |
||||
pxor xmm3,xmm3 |
||||
pxor xmm4,xmm4 |
||||
pxor xmm5,xmm5 |
||||
xor eax,eax |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
align 4 |
||||
L$015bad_pointer: |
||||
mov eax,-1 |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
align 4 |
||||
L$018bad_keybits: |
||||
pxor xmm0,xmm0 |
||||
mov eax,-2 |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
global _GFp_aes_hw_set_encrypt_key |
||||
align 16 |
||||
_GFp_aes_hw_set_encrypt_key: |
||||
L$_GFp_aes_hw_set_encrypt_key_begin: |
||||
mov eax,DWORD [4+esp] |
||||
mov ecx,DWORD [8+esp] |
||||
mov edx,DWORD [12+esp] |
||||
call __aesni_set_encrypt_key |
||||
ret |
||||
align 64 |
||||
L$key_const: |
||||
dd 202313229,202313229,202313229,202313229 |
||||
dd 67569157,67569157,67569157,67569157 |
||||
dd 1,1,1,1 |
||||
dd 27,27,27,27 |
||||
db 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69 |
||||
db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83 |
||||
db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115 |
||||
db 115,108,46,111,114,103,62,0 |
||||
segment .bss |
||||
common _GFp_ia32cap_P 16 |
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,973 @@
|
||||
; This file is generated from a similarly-named Perl script in the BoringSSL |
||||
; source tree. Do not edit by hand. |
||||
|
||||
%ifdef BORINGSSL_PREFIX |
||||
%include "boringssl_prefix_symbols_nasm.inc" |
||||
%endif |
||||
%ifidn __OUTPUT_FORMAT__,obj |
||||
section code use32 class=code align=64 |
||||
%elifidn __OUTPUT_FORMAT__,win32 |
||||
$@feat.00 equ 1 |
||||
section .text code align=64 |
||||
%else |
||||
section .text code |
||||
%endif |
||||
global _GFp_ChaCha20_ctr32 |
||||
align 16 |
||||
_GFp_ChaCha20_ctr32: |
||||
L$_GFp_ChaCha20_ctr32_begin: |
||||
push ebp |
||||
push ebx |
||||
push esi |
||||
push edi |
||||
xor eax,eax |
||||
cmp eax,DWORD [28+esp] |
||||
je NEAR L$000no_data |
||||
call L$pic_point |
||||
L$pic_point: |
||||
pop eax |
||||
lea ebp,[_GFp_ia32cap_P] |
||||
test DWORD [ebp],16777216 |
||||
jz NEAR L$001x86 |
||||
test DWORD [4+ebp],512 |
||||
jz NEAR L$001x86 |
||||
jmp NEAR L$ssse3_shortcut |
||||
L$001x86: |
||||
mov esi,DWORD [32+esp] |
||||
mov edi,DWORD [36+esp] |
||||
sub esp,132 |
||||
mov eax,DWORD [esi] |
||||
mov ebx,DWORD [4+esi] |
||||
mov ecx,DWORD [8+esi] |
||||
mov edx,DWORD [12+esi] |
||||
mov DWORD [80+esp],eax |
||||
mov DWORD [84+esp],ebx |
||||
mov DWORD [88+esp],ecx |
||||
mov DWORD [92+esp],edx |
||||
mov eax,DWORD [16+esi] |
||||
mov ebx,DWORD [20+esi] |
||||
mov ecx,DWORD [24+esi] |
||||
mov edx,DWORD [28+esi] |
||||
mov DWORD [96+esp],eax |
||||
mov DWORD [100+esp],ebx |
||||
mov DWORD [104+esp],ecx |
||||
mov DWORD [108+esp],edx |
||||
mov eax,DWORD [edi] |
||||
mov ebx,DWORD [4+edi] |
||||
mov ecx,DWORD [8+edi] |
||||
mov edx,DWORD [12+edi] |
||||
sub eax,1 |
||||
mov DWORD [112+esp],eax |
||||
mov DWORD [116+esp],ebx |
||||
mov DWORD [120+esp],ecx |
||||
mov DWORD [124+esp],edx |
||||
jmp NEAR L$002entry |
||||
align 16 |
||||
L$003outer_loop: |
||||
mov DWORD [156+esp],ebx |
||||
mov DWORD [152+esp],eax |
||||
mov DWORD [160+esp],ecx |
||||
L$002entry: |
||||
mov eax,1634760805 |
||||
mov DWORD [4+esp],857760878 |
||||
mov DWORD [8+esp],2036477234 |
||||
mov DWORD [12+esp],1797285236 |
||||
mov ebx,DWORD [84+esp] |
||||
mov ebp,DWORD [88+esp] |
||||
mov ecx,DWORD [104+esp] |
||||
mov esi,DWORD [108+esp] |
||||
mov edx,DWORD [116+esp] |
||||
mov edi,DWORD [120+esp] |
||||
mov DWORD [20+esp],ebx |
||||
mov DWORD [24+esp],ebp |
||||
mov DWORD [40+esp],ecx |
||||
mov DWORD [44+esp],esi |
||||
mov DWORD [52+esp],edx |
||||
mov DWORD [56+esp],edi |
||||
mov ebx,DWORD [92+esp] |
||||
mov edi,DWORD [124+esp] |
||||
mov edx,DWORD [112+esp] |
||||
mov ebp,DWORD [80+esp] |
||||
mov ecx,DWORD [96+esp] |
||||
mov esi,DWORD [100+esp] |
||||
add edx,1 |
||||
mov DWORD [28+esp],ebx |
||||
mov DWORD [60+esp],edi |
||||
mov DWORD [112+esp],edx |
||||
mov ebx,10 |
||||
jmp NEAR L$004loop |
||||
align 16 |
||||
L$004loop: |
||||
add eax,ebp |
||||
mov DWORD [128+esp],ebx |
||||
mov ebx,ebp |
||||
xor edx,eax |
||||
rol edx,16 |
||||
add ecx,edx |
||||
xor ebx,ecx |
||||
mov edi,DWORD [52+esp] |
||||
rol ebx,12 |
||||
mov ebp,DWORD [20+esp] |
||||
add eax,ebx |
||||
xor edx,eax |
||||
mov DWORD [esp],eax |
||||
rol edx,8 |
||||
mov eax,DWORD [4+esp] |
||||
add ecx,edx |
||||
mov DWORD [48+esp],edx |
||||
xor ebx,ecx |
||||
add eax,ebp |
||||
rol ebx,7 |
||||
xor edi,eax |
||||
mov DWORD [32+esp],ecx |
||||
rol edi,16 |
||||
mov DWORD [16+esp],ebx |
||||
add esi,edi |
||||
mov ecx,DWORD [40+esp] |
||||
xor ebp,esi |
||||
mov edx,DWORD [56+esp] |
||||
rol ebp,12 |
||||
mov ebx,DWORD [24+esp] |
||||
add eax,ebp |
||||
xor edi,eax |
||||
mov DWORD [4+esp],eax |
||||
rol edi,8 |
||||
mov eax,DWORD [8+esp] |
||||
add esi,edi |
||||
mov DWORD [52+esp],edi |
||||
xor ebp,esi |
||||
add eax,ebx |
||||
rol ebp,7 |
||||
xor edx,eax |
||||
mov DWORD [36+esp],esi |
||||
rol edx,16 |
||||
mov DWORD [20+esp],ebp |
||||
add ecx,edx |
||||
mov esi,DWORD [44+esp] |
||||
xor ebx,ecx |
||||
mov edi,DWORD [60+esp] |
||||
rol ebx,12 |
||||
mov ebp,DWORD [28+esp] |
||||
add eax,ebx |
||||
xor edx,eax |
||||
mov DWORD [8+esp],eax |
||||
rol edx,8 |
||||
mov eax,DWORD [12+esp] |
||||
add ecx,edx |
||||
mov DWORD [56+esp],edx |
||||
xor ebx,ecx |
||||
add eax,ebp |
||||
rol ebx,7 |
||||
xor edi,eax |
||||
rol edi,16 |
||||
mov DWORD [24+esp],ebx |
||||
add esi,edi |
||||
xor ebp,esi |
||||
rol ebp,12 |
||||
mov ebx,DWORD [20+esp] |
||||
add eax,ebp |
||||
xor edi,eax |
||||
mov DWORD [12+esp],eax |
||||
rol edi,8 |
||||
mov eax,DWORD [esp] |
||||
add esi,edi |
||||
mov edx,edi |
||||
xor ebp,esi |
||||
add eax,ebx |
||||
rol ebp,7 |
||||
xor edx,eax |
||||
rol edx,16 |
||||
mov DWORD [28+esp],ebp |
||||
add ecx,edx |
||||
xor ebx,ecx |
||||
mov edi,DWORD [48+esp] |
||||
rol ebx,12 |
||||
mov ebp,DWORD [24+esp] |
||||
add eax,ebx |
||||
xor edx,eax |
||||
mov DWORD [esp],eax |
||||
rol edx,8 |
||||
mov eax,DWORD [4+esp] |
||||
add ecx,edx |
||||
mov DWORD [60+esp],edx |
||||
xor ebx,ecx |
||||
add eax,ebp |
||||
rol ebx,7 |
||||
xor edi,eax |
||||
mov DWORD [40+esp],ecx |
||||
rol edi,16 |
||||
mov DWORD [20+esp],ebx |
||||
add esi,edi |
||||
mov ecx,DWORD [32+esp] |
||||
xor ebp,esi |
||||
mov edx,DWORD [52+esp] |
||||
rol ebp,12 |
||||
mov ebx,DWORD [28+esp] |
||||
add eax,ebp |
||||
xor edi,eax |
||||
mov DWORD [4+esp],eax |
||||
rol edi,8 |
||||
mov eax,DWORD [8+esp] |
||||
add esi,edi |
||||
mov DWORD [48+esp],edi |
||||
xor ebp,esi |
||||
add eax,ebx |
||||
rol ebp,7 |
||||
xor edx,eax |
||||
mov DWORD [44+esp],esi |
||||
rol edx,16 |
||||
mov DWORD [24+esp],ebp |
||||
add ecx,edx |
||||
mov esi,DWORD [36+esp] |
||||
xor ebx,ecx |
||||
mov edi,DWORD [56+esp] |
||||
rol ebx,12 |
||||
mov ebp,DWORD [16+esp] |
||||
add eax,ebx |
||||
xor edx,eax |
||||
mov DWORD [8+esp],eax |
||||
rol edx,8 |
||||
mov eax,DWORD [12+esp] |
||||
add ecx,edx |
||||
mov DWORD [52+esp],edx |
||||
xor ebx,ecx |
||||
add eax,ebp |
||||
rol ebx,7 |
||||
xor edi,eax |
||||
rol edi,16 |
||||
mov DWORD [28+esp],ebx |
||||
add esi,edi |
||||
xor ebp,esi |
||||
mov edx,DWORD [48+esp] |
||||
rol ebp,12 |
||||
mov ebx,DWORD [128+esp] |
||||
add eax,ebp |
||||
xor edi,eax |
||||
mov DWORD [12+esp],eax |
||||
rol edi,8 |
||||
mov eax,DWORD [esp] |
||||
add esi,edi |
||||
mov DWORD [56+esp],edi |
||||
xor ebp,esi |
||||
rol ebp,7 |
||||
dec ebx |
||||
jnz NEAR L$004loop |
||||
mov ebx,DWORD [160+esp] |
||||
add eax,1634760805 |
||||
add ebp,DWORD [80+esp] |
||||
add ecx,DWORD [96+esp] |
||||
add esi,DWORD [100+esp] |
||||
cmp ebx,64 |
||||
jb NEAR L$005tail |
||||
mov ebx,DWORD [156+esp] |
||||
add edx,DWORD [112+esp] |
||||
add edi,DWORD [120+esp] |
||||
xor eax,DWORD [ebx] |
||||
xor ebp,DWORD [16+ebx] |
||||
mov DWORD [esp],eax |
||||
mov eax,DWORD [152+esp] |
||||
xor ecx,DWORD [32+ebx] |
||||
xor esi,DWORD [36+ebx] |
||||
xor edx,DWORD [48+ebx] |
||||
xor edi,DWORD [56+ebx] |
||||
mov DWORD [16+eax],ebp |
||||
mov DWORD [32+eax],ecx |
||||
mov DWORD [36+eax],esi |
||||
mov DWORD [48+eax],edx |
||||
mov DWORD [56+eax],edi |
||||
mov ebp,DWORD [4+esp] |
||||
mov ecx,DWORD [8+esp] |
||||
mov esi,DWORD [12+esp] |
||||
mov edx,DWORD [20+esp] |
||||
mov edi,DWORD [24+esp] |
||||
add ebp,857760878 |
||||
add ecx,2036477234 |
||||
add esi,1797285236 |
||||
add edx,DWORD [84+esp] |
||||
add edi,DWORD [88+esp] |
||||
xor ebp,DWORD [4+ebx] |
||||
xor ecx,DWORD [8+ebx] |
||||
xor esi,DWORD [12+ebx] |
||||
xor edx,DWORD [20+ebx] |
||||
xor edi,DWORD [24+ebx] |
||||
mov DWORD [4+eax],ebp |
||||
mov DWORD [8+eax],ecx |
||||
mov DWORD [12+eax],esi |
||||
mov DWORD [20+eax],edx |
||||
mov DWORD [24+eax],edi |
||||
mov ebp,DWORD [28+esp] |
||||
mov ecx,DWORD [40+esp] |
||||
mov esi,DWORD [44+esp] |
||||
mov edx,DWORD [52+esp] |
||||
mov edi,DWORD [60+esp] |
||||
add ebp,DWORD [92+esp] |
||||
add ecx,DWORD [104+esp] |
||||
add esi,DWORD [108+esp] |
||||
add edx,DWORD [116+esp] |
||||
add edi,DWORD [124+esp] |
||||
xor ebp,DWORD [28+ebx] |
||||
xor ecx,DWORD [40+ebx] |
||||
xor esi,DWORD [44+ebx] |
||||
xor edx,DWORD [52+ebx] |
||||
xor edi,DWORD [60+ebx] |
||||
lea ebx,[64+ebx] |
||||
mov DWORD [28+eax],ebp |
||||
mov ebp,DWORD [esp] |
||||
mov DWORD [40+eax],ecx |
||||
mov ecx,DWORD [160+esp] |
||||
mov DWORD [44+eax],esi |
||||
mov DWORD [52+eax],edx |
||||
mov DWORD [60+eax],edi |
||||
mov DWORD [eax],ebp |
||||
lea eax,[64+eax] |
||||
sub ecx,64 |
||||
jnz NEAR L$003outer_loop |
||||
jmp NEAR L$006done |
||||
L$005tail: |
||||
add edx,DWORD [112+esp] |
||||
add edi,DWORD [120+esp] |
||||
mov DWORD [esp],eax |
||||
mov DWORD [16+esp],ebp |
||||
mov DWORD [32+esp],ecx |
||||
mov DWORD [36+esp],esi |
||||
mov DWORD [48+esp],edx |
||||
mov DWORD [56+esp],edi |
||||
mov ebp,DWORD [4+esp] |
||||
mov ecx,DWORD [8+esp] |
||||
mov esi,DWORD [12+esp] |
||||
mov edx,DWORD [20+esp] |
||||
mov edi,DWORD [24+esp] |
||||
add ebp,857760878 |
||||
add ecx,2036477234 |
||||
add esi,1797285236 |
||||
add edx,DWORD [84+esp] |
||||
add edi,DWORD [88+esp] |
||||
mov DWORD [4+esp],ebp |
||||
mov DWORD [8+esp],ecx |
||||
mov DWORD [12+esp],esi |
||||
mov DWORD [20+esp],edx |
||||
mov DWORD [24+esp],edi |
||||
mov ebp,DWORD [28+esp] |
||||
mov ecx,DWORD [40+esp] |
||||
mov esi,DWORD [44+esp] |
||||
mov edx,DWORD [52+esp] |
||||
mov edi,DWORD [60+esp] |
||||
add ebp,DWORD [92+esp] |
||||
add ecx,DWORD [104+esp] |
||||
add esi,DWORD [108+esp] |
||||
add edx,DWORD [116+esp] |
||||
add edi,DWORD [124+esp] |
||||
mov DWORD [28+esp],ebp |
||||
mov ebp,DWORD [156+esp] |
||||
mov DWORD [40+esp],ecx |
||||
mov ecx,DWORD [152+esp] |
||||
mov DWORD [44+esp],esi |
||||
xor esi,esi |
||||
mov DWORD [52+esp],edx |
||||
mov DWORD [60+esp],edi |
||||
xor eax,eax |
||||
xor edx,edx |
||||
L$007tail_loop: |
||||
mov al,BYTE [ebp*1+esi] |
||||
mov dl,BYTE [esi*1+esp] |
||||
lea esi,[1+esi] |
||||
xor al,dl |
||||
mov BYTE [esi*1+ecx-1],al |
||||
dec ebx |
||||
jnz NEAR L$007tail_loop |
||||
L$006done: |
||||
add esp,132 |
||||
L$000no_data: |
||||
pop edi |
||||
pop esi |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
align 16 |
||||
__ChaCha20_ssse3: |
||||
push ebp |
||||
push ebx |
||||
push esi |
||||
push edi |
||||
L$ssse3_shortcut: |
||||
mov edi,DWORD [20+esp] |
||||
mov esi,DWORD [24+esp] |
||||
mov ecx,DWORD [28+esp] |
||||
mov edx,DWORD [32+esp] |
||||
mov ebx,DWORD [36+esp] |
||||
mov ebp,esp |
||||
sub esp,524 |
||||
and esp,-64 |
||||
mov DWORD [512+esp],ebp |
||||
lea eax,[(L$ssse3_data-L$pic_point)+eax] |
||||
movdqu xmm3,[ebx] |
||||
cmp ecx,256 |
||||
jb NEAR L$0081x |
||||
mov DWORD [516+esp],edx |
||||
mov DWORD [520+esp],ebx |
||||
sub ecx,256 |
||||
lea ebp,[384+esp] |
||||
movdqu xmm7,[edx] |
||||
pshufd xmm0,xmm3,0 |
||||
pshufd xmm1,xmm3,85 |
||||
pshufd xmm2,xmm3,170 |
||||
pshufd xmm3,xmm3,255 |
||||
paddd xmm0,[48+eax] |
||||
pshufd xmm4,xmm7,0 |
||||
pshufd xmm5,xmm7,85 |
||||
psubd xmm0,[64+eax] |
||||
pshufd xmm6,xmm7,170 |
||||
pshufd xmm7,xmm7,255 |
||||
movdqa [64+ebp],xmm0 |
||||
movdqa [80+ebp],xmm1 |
||||
movdqa [96+ebp],xmm2 |
||||
movdqa [112+ebp],xmm3 |
||||
movdqu xmm3,[16+edx] |
||||
movdqa [ebp-64],xmm4 |
||||
movdqa [ebp-48],xmm5 |
||||
movdqa [ebp-32],xmm6 |
||||
movdqa [ebp-16],xmm7 |
||||
movdqa xmm7,[32+eax] |
||||
lea ebx,[128+esp] |
||||
pshufd xmm0,xmm3,0 |
||||
pshufd xmm1,xmm3,85 |
||||
pshufd xmm2,xmm3,170 |
||||
pshufd xmm3,xmm3,255 |
||||
pshufd xmm4,xmm7,0 |
||||
pshufd xmm5,xmm7,85 |
||||
pshufd xmm6,xmm7,170 |
||||
pshufd xmm7,xmm7,255 |
||||
movdqa [ebp],xmm0 |
||||
movdqa [16+ebp],xmm1 |
||||
movdqa [32+ebp],xmm2 |
||||
movdqa [48+ebp],xmm3 |
||||
movdqa [ebp-128],xmm4 |
||||
movdqa [ebp-112],xmm5 |
||||
movdqa [ebp-96],xmm6 |
||||
movdqa [ebp-80],xmm7 |
||||
lea esi,[128+esi] |
||||
lea edi,[128+edi] |
||||
jmp NEAR L$009outer_loop |
||||
align 16 |
||||
L$009outer_loop: |
||||
movdqa xmm1,[ebp-112] |
||||
movdqa xmm2,[ebp-96] |
||||
movdqa xmm3,[ebp-80] |
||||
movdqa xmm5,[ebp-48] |
||||
movdqa xmm6,[ebp-32] |
||||
movdqa xmm7,[ebp-16] |
||||
movdqa [ebx-112],xmm1 |
||||
movdqa [ebx-96],xmm2 |
||||
movdqa [ebx-80],xmm3 |
||||
movdqa [ebx-48],xmm5 |
||||
movdqa [ebx-32],xmm6 |
||||
movdqa [ebx-16],xmm7 |
||||
movdqa xmm2,[32+ebp] |
||||
movdqa xmm3,[48+ebp] |
||||
movdqa xmm4,[64+ebp] |
||||
movdqa xmm5,[80+ebp] |
||||
movdqa xmm6,[96+ebp] |
||||
movdqa xmm7,[112+ebp] |
||||
paddd xmm4,[64+eax] |
||||
movdqa [32+ebx],xmm2 |
||||
movdqa [48+ebx],xmm3 |
||||
movdqa [64+ebx],xmm4 |
||||
movdqa [80+ebx],xmm5 |
||||
movdqa [96+ebx],xmm6 |
||||
movdqa [112+ebx],xmm7 |
||||
movdqa [64+ebp],xmm4 |
||||
movdqa xmm0,[ebp-128] |
||||
movdqa xmm6,xmm4 |
||||
movdqa xmm3,[ebp-64] |
||||
movdqa xmm4,[ebp] |
||||
movdqa xmm5,[16+ebp] |
||||
mov edx,10 |
||||
nop |
||||
align 16 |
||||
L$010loop: |
||||
paddd xmm0,xmm3 |
||||
movdqa xmm2,xmm3 |
||||
pxor xmm6,xmm0 |
||||
pshufb xmm6,[eax] |
||||
paddd xmm4,xmm6 |
||||
pxor xmm2,xmm4 |
||||
movdqa xmm3,[ebx-48] |
||||
movdqa xmm1,xmm2 |
||||
pslld xmm2,12 |
||||
psrld xmm1,20 |
||||
por xmm2,xmm1 |
||||
movdqa xmm1,[ebx-112] |
||||
paddd xmm0,xmm2 |
||||
movdqa xmm7,[80+ebx] |
||||
pxor xmm6,xmm0 |
||||
movdqa [ebx-128],xmm0 |
||||
pshufb xmm6,[16+eax] |
||||
paddd xmm4,xmm6 |
||||
movdqa [64+ebx],xmm6 |
||||
pxor xmm2,xmm4 |
||||
paddd xmm1,xmm3 |
||||
movdqa xmm0,xmm2 |
||||
pslld xmm2,7 |
||||
psrld xmm0,25 |
||||
pxor xmm7,xmm1 |
||||
por xmm2,xmm0 |
||||
movdqa [ebx],xmm4 |
||||
pshufb xmm7,[eax] |
||||
movdqa [ebx-64],xmm2 |
||||
paddd xmm5,xmm7 |
||||
movdqa xmm4,[32+ebx] |
||||
pxor xmm3,xmm5 |
||||
movdqa xmm2,[ebx-32] |
||||
movdqa xmm0,xmm3 |
||||
pslld xmm3,12 |
||||
psrld xmm0,20 |
||||
por xmm3,xmm0 |
||||
movdqa xmm0,[ebx-96] |
||||
paddd xmm1,xmm3 |
||||
movdqa xmm6,[96+ebx] |
||||
pxor xmm7,xmm1 |
||||
movdqa [ebx-112],xmm1 |
||||
pshufb xmm7,[16+eax] |
||||
paddd xmm5,xmm7 |
||||
movdqa [80+ebx],xmm7 |
||||
pxor xmm3,xmm5 |
||||
paddd xmm0,xmm2 |
||||
movdqa xmm1,xmm3 |
||||
pslld xmm3,7 |
||||
psrld xmm1,25 |
||||
pxor xmm6,xmm0 |
||||
por xmm3,xmm1 |
||||
movdqa [16+ebx],xmm5 |
||||
pshufb xmm6,[eax] |
||||
movdqa [ebx-48],xmm3 |
||||
paddd xmm4,xmm6 |
||||
movdqa xmm5,[48+ebx] |
||||
pxor xmm2,xmm4 |
||||
movdqa xmm3,[ebx-16] |
||||
movdqa xmm1,xmm2 |
||||
pslld xmm2,12 |
||||
psrld xmm1,20 |
||||
por xmm2,xmm1 |
||||
movdqa xmm1,[ebx-80] |
||||
paddd xmm0,xmm2 |
||||
movdqa xmm7,[112+ebx] |
||||
pxor xmm6,xmm0 |
||||
movdqa [ebx-96],xmm0 |
||||
pshufb xmm6,[16+eax] |
||||
paddd xmm4,xmm6 |
||||
movdqa [96+ebx],xmm6 |
||||
pxor xmm2,xmm4 |
||||
paddd xmm1,xmm3 |
||||
movdqa xmm0,xmm2 |
||||
pslld xmm2,7 |
||||
psrld xmm0,25 |
||||
pxor xmm7,xmm1 |
||||
por xmm2,xmm0 |
||||
pshufb xmm7,[eax] |
||||
movdqa [ebx-32],xmm2 |
||||
paddd xmm5,xmm7 |
||||
pxor xmm3,xmm5 |
||||
movdqa xmm2,[ebx-48] |
||||
movdqa xmm0,xmm3 |
||||
pslld xmm3,12 |
||||
psrld xmm0,20 |
||||
por xmm3,xmm0 |
||||
movdqa xmm0,[ebx-128] |
||||
paddd xmm1,xmm3 |
||||
pxor xmm7,xmm1 |
||||
movdqa [ebx-80],xmm1 |
||||
pshufb xmm7,[16+eax] |
||||
paddd xmm5,xmm7 |
||||
movdqa xmm6,xmm7 |
||||
pxor xmm3,xmm5 |
||||
paddd xmm0,xmm2 |
||||
movdqa xmm1,xmm3 |
||||
pslld xmm3,7 |
||||
psrld xmm1,25 |
||||
pxor xmm6,xmm0 |
||||
por xmm3,xmm1 |
||||
pshufb xmm6,[eax] |
||||
movdqa [ebx-16],xmm3 |
||||
paddd xmm4,xmm6 |
||||
pxor xmm2,xmm4 |
||||
movdqa xmm3,[ebx-32] |
||||
movdqa xmm1,xmm2 |
||||
pslld xmm2,12 |
||||
psrld xmm1,20 |
||||
por xmm2,xmm1 |
||||
movdqa xmm1,[ebx-112] |
||||
paddd xmm0,xmm2 |
||||
movdqa xmm7,[64+ebx] |
||||
pxor xmm6,xmm0 |
||||
movdqa [ebx-128],xmm0 |
||||
pshufb xmm6,[16+eax] |
||||
paddd xmm4,xmm6 |
||||
movdqa [112+ebx],xmm6 |
||||
pxor xmm2,xmm4 |
||||
paddd xmm1,xmm3 |
||||
movdqa xmm0,xmm2 |
||||
pslld xmm2,7 |
||||
psrld xmm0,25 |
||||
pxor xmm7,xmm1 |
||||
por xmm2,xmm0 |
||||
movdqa [32+ebx],xmm4 |
||||
pshufb xmm7,[eax] |
||||
movdqa [ebx-48],xmm2 |
||||
paddd xmm5,xmm7 |
||||
movdqa xmm4,[ebx] |
||||
pxor xmm3,xmm5 |
||||
movdqa xmm2,[ebx-16] |
||||
movdqa xmm0,xmm3 |
||||
pslld xmm3,12 |
||||
psrld xmm0,20 |
||||
por xmm3,xmm0 |
||||
movdqa xmm0,[ebx-96] |
||||
paddd xmm1,xmm3 |
||||
movdqa xmm6,[80+ebx] |
||||
pxor xmm7,xmm1 |
||||
movdqa [ebx-112],xmm1 |
||||
pshufb xmm7,[16+eax] |
||||
paddd xmm5,xmm7 |
||||
movdqa [64+ebx],xmm7 |
||||
pxor xmm3,xmm5 |
||||
paddd xmm0,xmm2 |
||||
movdqa xmm1,xmm3 |
||||
pslld xmm3,7 |
||||
psrld xmm1,25 |
||||
pxor xmm6,xmm0 |
||||
por xmm3,xmm1 |
||||
movdqa [48+ebx],xmm5 |
||||
pshufb xmm6,[eax] |
||||
movdqa [ebx-32],xmm3 |
||||
paddd xmm4,xmm6 |
||||
movdqa xmm5,[16+ebx] |
||||
pxor xmm2,xmm4 |
||||
movdqa xmm3,[ebx-64] |
||||
movdqa xmm1,xmm2 |
||||
pslld xmm2,12 |
||||
psrld xmm1,20 |
||||
por xmm2,xmm1 |
||||
movdqa xmm1,[ebx-80] |
||||
paddd xmm0,xmm2 |
||||
movdqa xmm7,[96+ebx] |
||||
pxor xmm6,xmm0 |
||||
movdqa [ebx-96],xmm0 |
||||
pshufb xmm6,[16+eax] |
||||
paddd xmm4,xmm6 |
||||
movdqa [80+ebx],xmm6 |
||||
pxor xmm2,xmm4 |
||||
paddd xmm1,xmm3 |
||||
movdqa xmm0,xmm2 |
||||
pslld xmm2,7 |
||||
psrld xmm0,25 |
||||
pxor xmm7,xmm1 |
||||
por xmm2,xmm0 |
||||
pshufb xmm7,[eax] |
||||
movdqa [ebx-16],xmm2 |
||||
paddd xmm5,xmm7 |
||||
pxor xmm3,xmm5 |
||||
movdqa xmm0,xmm3 |
||||
pslld xmm3,12 |
||||
psrld xmm0,20 |
||||
por xmm3,xmm0 |
||||
movdqa xmm0,[ebx-128] |
||||
paddd xmm1,xmm3 |
||||
movdqa xmm6,[64+ebx] |
||||
pxor xmm7,xmm1 |
||||
movdqa [ebx-80],xmm1 |
||||
pshufb xmm7,[16+eax] |
||||
paddd xmm5,xmm7 |
||||
movdqa [96+ebx],xmm7 |
||||
pxor xmm3,xmm5 |
||||
movdqa xmm1,xmm3 |
||||
pslld xmm3,7 |
||||
psrld xmm1,25 |
||||
por xmm3,xmm1 |
||||
dec edx |
||||
jnz NEAR L$010loop |
||||
movdqa [ebx-64],xmm3 |
||||
movdqa [ebx],xmm4 |
||||
movdqa [16+ebx],xmm5 |
||||
movdqa [64+ebx],xmm6 |
||||
movdqa [96+ebx],xmm7 |
||||
movdqa xmm1,[ebx-112] |
||||
movdqa xmm2,[ebx-96] |
||||
movdqa xmm3,[ebx-80] |
||||
paddd xmm0,[ebp-128] |
||||
paddd xmm1,[ebp-112] |
||||
paddd xmm2,[ebp-96] |
||||
paddd xmm3,[ebp-80] |
||||
movdqa xmm6,xmm0 |
||||
punpckldq xmm0,xmm1 |
||||
movdqa xmm7,xmm2 |
||||
punpckldq xmm2,xmm3 |
||||
punpckhdq xmm6,xmm1 |
||||
punpckhdq xmm7,xmm3 |
||||
movdqa xmm1,xmm0 |
||||
punpcklqdq xmm0,xmm2 |
||||
movdqa xmm3,xmm6 |
||||
punpcklqdq xmm6,xmm7 |
||||
punpckhqdq xmm1,xmm2 |
||||
punpckhqdq xmm3,xmm7 |
||||
movdqu xmm4,[esi-128] |
||||
movdqu xmm5,[esi-64] |
||||
movdqu xmm2,[esi] |
||||
movdqu xmm7,[64+esi] |
||||
lea esi,[16+esi] |
||||
pxor xmm4,xmm0 |
||||
movdqa xmm0,[ebx-64] |
||||
pxor xmm5,xmm1 |
||||
movdqa xmm1,[ebx-48] |
||||
pxor xmm6,xmm2 |
||||
movdqa xmm2,[ebx-32] |
||||
pxor xmm7,xmm3 |
||||
movdqa xmm3,[ebx-16] |
||||
movdqu [edi-128],xmm4 |
||||
movdqu [edi-64],xmm5 |
||||
movdqu [edi],xmm6 |
||||
movdqu [64+edi],xmm7 |
||||
lea edi,[16+edi] |
||||
paddd xmm0,[ebp-64] |
||||
paddd xmm1,[ebp-48] |
||||
paddd xmm2,[ebp-32] |
||||
paddd xmm3,[ebp-16] |
||||
movdqa xmm6,xmm0 |
||||
punpckldq xmm0,xmm1 |
||||
movdqa xmm7,xmm2 |
||||
punpckldq xmm2,xmm3 |
||||
punpckhdq xmm6,xmm1 |
||||
punpckhdq xmm7,xmm3 |
||||
movdqa xmm1,xmm0 |
||||
punpcklqdq xmm0,xmm2 |
||||
movdqa xmm3,xmm6 |
||||
punpcklqdq xmm6,xmm7 |
||||
punpckhqdq xmm1,xmm2 |
||||
punpckhqdq xmm3,xmm7 |
||||
movdqu xmm4,[esi-128] |
||||
movdqu xmm5,[esi-64] |
||||
movdqu xmm2,[esi] |
||||
movdqu xmm7,[64+esi] |
||||
lea esi,[16+esi] |
||||
pxor xmm4,xmm0 |
||||
movdqa xmm0,[ebx] |
||||
pxor xmm5,xmm1 |
||||
movdqa xmm1,[16+ebx] |
||||
pxor xmm6,xmm2 |
||||
movdqa xmm2,[32+ebx] |
||||
pxor xmm7,xmm3 |
||||
movdqa xmm3,[48+ebx] |
||||
movdqu [edi-128],xmm4 |
||||
movdqu [edi-64],xmm5 |
||||
movdqu [edi],xmm6 |
||||
movdqu [64+edi],xmm7 |
||||
lea edi,[16+edi] |
||||
paddd xmm0,[ebp] |
||||
paddd xmm1,[16+ebp] |
||||
paddd xmm2,[32+ebp] |
||||
paddd xmm3,[48+ebp] |
||||
movdqa xmm6,xmm0 |
||||
punpckldq xmm0,xmm1 |
||||
movdqa xmm7,xmm2 |
||||
punpckldq xmm2,xmm3 |
||||
punpckhdq xmm6,xmm1 |
||||
punpckhdq xmm7,xmm3 |
||||
movdqa xmm1,xmm0 |
||||
punpcklqdq xmm0,xmm2 |
||||
movdqa xmm3,xmm6 |
||||
punpcklqdq xmm6,xmm7 |
||||
punpckhqdq xmm1,xmm2 |
||||
punpckhqdq xmm3,xmm7 |
||||
movdqu xmm4,[esi-128] |
||||
movdqu xmm5,[esi-64] |
||||
movdqu xmm2,[esi] |
||||
movdqu xmm7,[64+esi] |
||||
lea esi,[16+esi] |
||||
pxor xmm4,xmm0 |
||||
movdqa xmm0,[64+ebx] |
||||
pxor xmm5,xmm1 |
||||
movdqa xmm1,[80+ebx] |
||||
pxor xmm6,xmm2 |
||||
movdqa xmm2,[96+ebx] |
||||
pxor xmm7,xmm3 |
||||
movdqa xmm3,[112+ebx] |
||||
movdqu [edi-128],xmm4 |
||||
movdqu [edi-64],xmm5 |
||||
movdqu [edi],xmm6 |
||||
movdqu [64+edi],xmm7 |
||||
lea edi,[16+edi] |
||||
paddd xmm0,[64+ebp] |
||||
paddd xmm1,[80+ebp] |
||||
paddd xmm2,[96+ebp] |
||||
paddd xmm3,[112+ebp] |
||||
movdqa xmm6,xmm0 |
||||
punpckldq xmm0,xmm1 |
||||
movdqa xmm7,xmm2 |
||||
punpckldq xmm2,xmm3 |
||||
punpckhdq xmm6,xmm1 |
||||
punpckhdq xmm7,xmm3 |
||||
movdqa xmm1,xmm0 |
||||
punpcklqdq xmm0,xmm2 |
||||
movdqa xmm3,xmm6 |
||||
punpcklqdq xmm6,xmm7 |
||||
punpckhqdq xmm1,xmm2 |
||||
punpckhqdq xmm3,xmm7 |
||||
movdqu xmm4,[esi-128] |
||||
movdqu xmm5,[esi-64] |
||||
movdqu xmm2,[esi] |
||||
movdqu xmm7,[64+esi] |
||||
lea esi,[208+esi] |
||||
pxor xmm4,xmm0 |
||||
pxor xmm5,xmm1 |
||||
pxor xmm6,xmm2 |
||||
pxor xmm7,xmm3 |
||||
movdqu [edi-128],xmm4 |
||||
movdqu [edi-64],xmm5 |
||||
movdqu [edi],xmm6 |
||||
movdqu [64+edi],xmm7 |
||||
lea edi,[208+edi] |
||||
sub ecx,256 |
||||
jnc NEAR L$009outer_loop |
||||
add ecx,256 |
||||
jz NEAR L$011done |
||||
mov ebx,DWORD [520+esp] |
||||
lea esi,[esi-128] |
||||
mov edx,DWORD [516+esp] |
||||
lea edi,[edi-128] |
||||
movd xmm2,DWORD [64+ebp] |
||||
movdqu xmm3,[ebx] |
||||
paddd xmm2,[96+eax] |
||||
pand xmm3,[112+eax] |
||||
por xmm3,xmm2 |
||||
L$0081x: |
||||
movdqa xmm0,[32+eax] |
||||
movdqu xmm1,[edx] |
||||
movdqu xmm2,[16+edx] |
||||
movdqa xmm6,[eax] |
||||
movdqa xmm7,[16+eax] |
||||
mov DWORD [48+esp],ebp |
||||
movdqa [esp],xmm0 |
||||
movdqa [16+esp],xmm1 |
||||
movdqa [32+esp],xmm2 |
||||
movdqa [48+esp],xmm3 |
||||
mov edx,10 |
||||
jmp NEAR L$012loop1x |
||||
align 16 |
||||
L$013outer1x: |
||||
movdqa xmm3,[80+eax] |
||||
movdqa xmm0,[esp] |
||||
movdqa xmm1,[16+esp] |
||||
movdqa xmm2,[32+esp] |
||||
paddd xmm3,[48+esp] |
||||
mov edx,10 |
||||
movdqa [48+esp],xmm3 |
||||
jmp NEAR L$012loop1x |
||||
align 16 |
||||
L$012loop1x: |
||||
paddd xmm0,xmm1 |
||||
pxor xmm3,xmm0 |
||||
db 102,15,56,0,222 |
||||
paddd xmm2,xmm3 |
||||
pxor xmm1,xmm2 |
||||
movdqa xmm4,xmm1 |
||||
psrld xmm1,20 |
||||
pslld xmm4,12 |
||||
por xmm1,xmm4 |
||||
paddd xmm0,xmm1 |
||||
pxor xmm3,xmm0 |
||||
db 102,15,56,0,223 |
||||
paddd xmm2,xmm3 |
||||
pxor xmm1,xmm2 |
||||
movdqa xmm4,xmm1 |
||||
psrld xmm1,25 |
||||
pslld xmm4,7 |
||||
por xmm1,xmm4 |
||||
pshufd xmm2,xmm2,78 |
||||
pshufd xmm1,xmm1,57 |
||||
pshufd xmm3,xmm3,147 |
||||
nop |
||||
paddd xmm0,xmm1 |
||||
pxor xmm3,xmm0 |
||||
db 102,15,56,0,222 |
||||
paddd xmm2,xmm3 |
||||
pxor xmm1,xmm2 |
||||
movdqa xmm4,xmm1 |
||||
psrld xmm1,20 |
||||
pslld xmm4,12 |
||||
por xmm1,xmm4 |
||||
paddd xmm0,xmm1 |
||||
pxor xmm3,xmm0 |
||||
db 102,15,56,0,223 |
||||
paddd xmm2,xmm3 |
||||
pxor xmm1,xmm2 |
||||
movdqa xmm4,xmm1 |
||||
psrld xmm1,25 |
||||
pslld xmm4,7 |
||||
por xmm1,xmm4 |
||||
pshufd xmm2,xmm2,78 |
||||
pshufd xmm1,xmm1,147 |
||||
pshufd xmm3,xmm3,57 |
||||
dec edx |
||||
jnz NEAR L$012loop1x |
||||
paddd xmm0,[esp] |
||||
paddd xmm1,[16+esp] |
||||
paddd xmm2,[32+esp] |
||||
paddd xmm3,[48+esp] |
||||
cmp ecx,64 |
||||
jb NEAR L$014tail |
||||
movdqu xmm4,[esi] |
||||
movdqu xmm5,[16+esi] |
||||
pxor xmm0,xmm4 |
||||
movdqu xmm4,[32+esi] |
||||
pxor xmm1,xmm5 |
||||
movdqu xmm5,[48+esi] |
||||
pxor xmm2,xmm4 |
||||
pxor xmm3,xmm5 |
||||
lea esi,[64+esi] |
||||
movdqu [edi],xmm0 |
||||
movdqu [16+edi],xmm1 |
||||
movdqu [32+edi],xmm2 |
||||
movdqu [48+edi],xmm3 |
||||
lea edi,[64+edi] |
||||
sub ecx,64 |
||||
jnz NEAR L$013outer1x |
||||
jmp NEAR L$011done |
||||
L$014tail: |
||||
movdqa [esp],xmm0 |
||||
movdqa [16+esp],xmm1 |
||||
movdqa [32+esp],xmm2 |
||||
movdqa [48+esp],xmm3 |
||||
xor eax,eax |
||||
xor edx,edx |
||||
xor ebp,ebp |
||||
L$015tail_loop: |
||||
mov al,BYTE [ebp*1+esp] |
||||
mov dl,BYTE [ebp*1+esi] |
||||
lea ebp,[1+ebp] |
||||
xor al,dl |
||||
mov BYTE [ebp*1+edi-1],al |
||||
dec ecx |
||||
jnz NEAR L$015tail_loop |
||||
L$011done: |
||||
mov esp,DWORD [512+esp] |
||||
pop edi |
||||
pop esi |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
align 64 |
||||
L$ssse3_data: |
||||
db 2,3,0,1,6,7,4,5,10,11,8,9,14,15,12,13 |
||||
db 3,0,1,2,7,4,5,6,11,8,9,10,15,12,13,14 |
||||
dd 1634760805,857760878,2036477234,1797285236 |
||||
dd 0,1,2,3 |
||||
dd 4,4,4,4 |
||||
dd 1,0,0,0 |
||||
dd 4,0,0,0 |
||||
dd 0,-1,-1,-1 |
||||
align 64 |
||||
db 67,104,97,67,104,97,50,48,32,102,111,114,32,120,56,54 |
||||
db 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32 |
||||
db 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111 |
||||
db 114,103,62,0 |
||||
segment .bss |
||||
common _GFp_ia32cap_P 16 |
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,359 @@
|
||||
; This file is generated from a similarly-named Perl script in the BoringSSL |
||||
; source tree. Do not edit by hand. |
||||
|
||||
%ifdef BORINGSSL_PREFIX |
||||
%include "boringssl_prefix_symbols_nasm.inc" |
||||
%endif |
||||
%ifidn __OUTPUT_FORMAT__,obj |
||||
section code use32 class=code align=64 |
||||
%elifidn __OUTPUT_FORMAT__,win32 |
||||
$@feat.00 equ 1 |
||||
section .text code align=64 |
||||
%else |
||||
section .text code |
||||
%endif |
||||
global _GFp_gcm_init_clmul |
||||
align 16 |
||||
_GFp_gcm_init_clmul: |
||||
L$_GFp_gcm_init_clmul_begin: |
||||
mov edx,DWORD [4+esp] |
||||
mov eax,DWORD [8+esp] |
||||
call L$000pic |
||||
L$000pic: |
||||
pop ecx |
||||
lea ecx,[(L$bswap-L$000pic)+ecx] |
||||
movdqu xmm2,[eax] |
||||
pshufd xmm2,xmm2,78 |
||||
pshufd xmm4,xmm2,255 |
||||
movdqa xmm3,xmm2 |
||||
psllq xmm2,1 |
||||
pxor xmm5,xmm5 |
||||
psrlq xmm3,63 |
||||
pcmpgtd xmm5,xmm4 |
||||
pslldq xmm3,8 |
||||
por xmm2,xmm3 |
||||
pand xmm5,[16+ecx] |
||||
pxor xmm2,xmm5 |
||||
movdqa xmm0,xmm2 |
||||
movdqa xmm1,xmm0 |
||||
pshufd xmm3,xmm0,78 |
||||
pshufd xmm4,xmm2,78 |
||||
pxor xmm3,xmm0 |
||||
pxor xmm4,xmm2 |
||||
db 102,15,58,68,194,0 |
||||
db 102,15,58,68,202,17 |
||||
db 102,15,58,68,220,0 |
||||
xorps xmm3,xmm0 |
||||
xorps xmm3,xmm1 |
||||
movdqa xmm4,xmm3 |
||||
psrldq xmm3,8 |
||||
pslldq xmm4,8 |
||||
pxor xmm1,xmm3 |
||||
pxor xmm0,xmm4 |
||||
movdqa xmm4,xmm0 |
||||
movdqa xmm3,xmm0 |
||||
psllq xmm0,5 |
||||
pxor xmm3,xmm0 |
||||
psllq xmm0,1 |
||||
pxor xmm0,xmm3 |
||||
psllq xmm0,57 |
||||
movdqa xmm3,xmm0 |
||||
pslldq xmm0,8 |
||||
psrldq xmm3,8 |
||||
pxor xmm0,xmm4 |
||||
pxor xmm1,xmm3 |
||||
movdqa xmm4,xmm0 |
||||
psrlq xmm0,1 |
||||
pxor xmm1,xmm4 |
||||
pxor xmm4,xmm0 |
||||
psrlq xmm0,5 |
||||
pxor xmm0,xmm4 |
||||
psrlq xmm0,1 |
||||
pxor xmm0,xmm1 |
||||
pshufd xmm3,xmm2,78 |
||||
pshufd xmm4,xmm0,78 |
||||
pxor xmm3,xmm2 |
||||
movdqu [edx],xmm2 |
||||
pxor xmm4,xmm0 |
||||
movdqu [16+edx],xmm0 |
||||
db 102,15,58,15,227,8 |
||||
movdqu [32+edx],xmm4 |
||||
ret |
||||
global _GFp_gcm_gmult_clmul |
||||
align 16 |
||||
_GFp_gcm_gmult_clmul: |
||||
L$_GFp_gcm_gmult_clmul_begin: |
||||
mov eax,DWORD [4+esp] |
||||
mov edx,DWORD [8+esp] |
||||
call L$001pic |
||||
L$001pic: |
||||
pop ecx |
||||
lea ecx,[(L$bswap-L$001pic)+ecx] |
||||
movdqu xmm0,[eax] |
||||
movdqa xmm5,[ecx] |
||||
movups xmm2,[edx] |
||||
db 102,15,56,0,197 |
||||
movups xmm4,[32+edx] |
||||
movdqa xmm1,xmm0 |
||||
pshufd xmm3,xmm0,78 |
||||
pxor xmm3,xmm0 |
||||
db 102,15,58,68,194,0 |
||||
db 102,15,58,68,202,17 |
||||
db 102,15,58,68,220,0 |
||||
xorps xmm3,xmm0 |
||||
xorps xmm3,xmm1 |
||||
movdqa xmm4,xmm3 |
||||
psrldq xmm3,8 |
||||
pslldq xmm4,8 |
||||
pxor xmm1,xmm3 |
||||
pxor xmm0,xmm4 |
||||
movdqa xmm4,xmm0 |
||||
movdqa xmm3,xmm0 |
||||
psllq xmm0,5 |
||||
pxor xmm3,xmm0 |
||||
psllq xmm0,1 |
||||
pxor xmm0,xmm3 |
||||
psllq xmm0,57 |
||||
movdqa xmm3,xmm0 |
||||
pslldq xmm0,8 |
||||
psrldq xmm3,8 |
||||
pxor xmm0,xmm4 |
||||
pxor xmm1,xmm3 |
||||
movdqa xmm4,xmm0 |
||||
psrlq xmm0,1 |
||||
pxor xmm1,xmm4 |
||||
pxor xmm4,xmm0 |
||||
psrlq xmm0,5 |
||||
pxor xmm0,xmm4 |
||||
psrlq xmm0,1 |
||||
pxor xmm0,xmm1 |
||||
db 102,15,56,0,197 |
||||
movdqu [eax],xmm0 |
||||
ret |
||||
global _GFp_gcm_ghash_clmul |
||||
align 16 |
||||
_GFp_gcm_ghash_clmul: |
||||
L$_GFp_gcm_ghash_clmul_begin: |
||||
push ebp |
||||
push ebx |
||||
push esi |
||||
push edi |
||||
mov eax,DWORD [20+esp] |
||||
mov edx,DWORD [24+esp] |
||||
mov esi,DWORD [28+esp] |
||||
mov ebx,DWORD [32+esp] |
||||
call L$002pic |
||||
L$002pic: |
||||
pop ecx |
||||
lea ecx,[(L$bswap-L$002pic)+ecx] |
||||
movdqu xmm0,[eax] |
||||
movdqa xmm5,[ecx] |
||||
movdqu xmm2,[edx] |
||||
db 102,15,56,0,197 |
||||
sub ebx,16 |
||||
jz NEAR L$003odd_tail |
||||
movdqu xmm3,[esi] |
||||
movdqu xmm6,[16+esi] |
||||
db 102,15,56,0,221 |
||||
db 102,15,56,0,245 |
||||
movdqu xmm5,[32+edx] |
||||
pxor xmm0,xmm3 |
||||
pshufd xmm3,xmm6,78 |
||||
movdqa xmm7,xmm6 |
||||
pxor xmm3,xmm6 |
||||
lea esi,[32+esi] |
||||
db 102,15,58,68,242,0 |
||||
db 102,15,58,68,250,17 |
||||
db 102,15,58,68,221,0 |
||||
movups xmm2,[16+edx] |
||||
nop |
||||
sub ebx,32 |
||||
jbe NEAR L$004even_tail |
||||
jmp NEAR L$005mod_loop |
||||
align 32 |
||||
L$005mod_loop: |
||||
pshufd xmm4,xmm0,78 |
||||
movdqa xmm1,xmm0 |
||||
pxor xmm4,xmm0 |
||||
nop |
||||
db 102,15,58,68,194,0 |
||||
db 102,15,58,68,202,17 |
||||
db 102,15,58,68,229,16 |
||||
movups xmm2,[edx] |
||||
xorps xmm0,xmm6 |
||||
movdqa xmm5,[ecx] |
||||
xorps xmm1,xmm7 |
||||
movdqu xmm7,[esi] |
||||
pxor xmm3,xmm0 |
||||
movdqu xmm6,[16+esi] |
||||
pxor xmm3,xmm1 |
||||
db 102,15,56,0,253 |
||||
pxor xmm4,xmm3 |
||||
movdqa xmm3,xmm4 |
||||
psrldq xmm4,8 |
||||
pslldq xmm3,8 |
||||
pxor xmm1,xmm4 |
||||
pxor xmm0,xmm3 |
||||
db 102,15,56,0,245 |
||||
pxor xmm1,xmm7 |
||||
movdqa xmm7,xmm6 |
||||
movdqa xmm4,xmm0 |
||||
movdqa xmm3,xmm0 |
||||
psllq xmm0,5 |
||||
pxor xmm3,xmm0 |
||||
psllq xmm0,1 |
||||
pxor xmm0,xmm3 |
||||
db 102,15,58,68,242,0 |
||||
movups xmm5,[32+edx] |
||||
psllq xmm0,57 |
||||
movdqa xmm3,xmm0 |
||||
pslldq xmm0,8 |
||||
psrldq xmm3,8 |
||||
pxor xmm0,xmm4 |
||||
pxor xmm1,xmm3 |
||||
pshufd xmm3,xmm7,78 |
||||
movdqa xmm4,xmm0 |
||||
psrlq xmm0,1 |
||||
pxor xmm3,xmm7 |
||||
pxor xmm1,xmm4 |
||||
db 102,15,58,68,250,17 |
||||
movups xmm2,[16+edx] |
||||
pxor xmm4,xmm0 |
||||
psrlq xmm0,5 |
||||
pxor xmm0,xmm4 |
||||
psrlq xmm0,1 |
||||
pxor xmm0,xmm1 |
||||
db 102,15,58,68,221,0 |
||||
lea esi,[32+esi] |
||||
sub ebx,32 |
||||
ja NEAR L$005mod_loop |
||||
L$004even_tail: |
||||
pshufd xmm4,xmm0,78 |
||||
movdqa xmm1,xmm0 |
||||
pxor xmm4,xmm0 |
||||
db 102,15,58,68,194,0 |
||||
db 102,15,58,68,202,17 |
||||
db 102,15,58,68,229,16 |
||||
movdqa xmm5,[ecx] |
||||
xorps xmm0,xmm6 |
||||
xorps xmm1,xmm7 |
||||
pxor xmm3,xmm0 |
||||
pxor xmm3,xmm1 |
||||
pxor xmm4,xmm3 |
||||
movdqa xmm3,xmm4 |
||||
psrldq xmm4,8 |
||||
pslldq xmm3,8 |
||||
pxor xmm1,xmm4 |
||||
pxor xmm0,xmm3 |
||||
movdqa xmm4,xmm0 |
||||
movdqa xmm3,xmm0 |
||||
psllq xmm0,5 |
||||
pxor xmm3,xmm0 |
||||
psllq xmm0,1 |
||||
pxor xmm0,xmm3 |
||||
psllq xmm0,57 |
||||
movdqa xmm3,xmm0 |
||||
pslldq xmm0,8 |
||||
psrldq xmm3,8 |
||||
pxor xmm0,xmm4 |
||||
pxor xmm1,xmm3 |
||||
movdqa xmm4,xmm0 |
||||
psrlq xmm0,1 |
||||
pxor xmm1,xmm4 |
||||
pxor xmm4,xmm0 |
||||
psrlq xmm0,5 |
||||
pxor xmm0,xmm4 |
||||
psrlq xmm0,1 |
||||
pxor xmm0,xmm1 |
||||
test ebx,ebx |
||||
jnz NEAR L$006done |
||||
movups xmm2,[edx] |
||||
L$003odd_tail: |
||||
movdqu xmm3,[esi] |
||||
db 102,15,56,0,221 |
||||
pxor xmm0,xmm3 |
||||
movdqa xmm1,xmm0 |
||||
pshufd xmm3,xmm0,78 |
||||
pshufd xmm4,xmm2,78 |
||||
pxor xmm3,xmm0 |
||||
pxor xmm4,xmm2 |
||||
db 102,15,58,68,194,0 |
||||
db 102,15,58,68,202,17 |
||||
db 102,15,58,68,220,0 |
||||
xorps xmm3,xmm0 |
||||
xorps xmm3,xmm1 |
||||
movdqa xmm4,xmm3 |
||||
psrldq xmm3,8 |
||||
pslldq xmm4,8 |
||||
pxor xmm1,xmm3 |
||||
pxor xmm0,xmm4 |
||||
movdqa xmm4,xmm0 |
||||
movdqa xmm3,xmm0 |
||||
psllq xmm0,5 |
||||
pxor xmm3,xmm0 |
||||
psllq xmm0,1 |
||||
pxor xmm0,xmm3 |
||||
psllq xmm0,57 |
||||
movdqa xmm3,xmm0 |
||||
pslldq xmm0,8 |
||||
psrldq xmm3,8 |
||||
pxor xmm0,xmm4 |
||||
pxor xmm1,xmm3 |
||||
movdqa xmm4,xmm0 |
||||
psrlq xmm0,1 |
||||
pxor xmm1,xmm4 |
||||
pxor xmm4,xmm0 |
||||
psrlq xmm0,5 |
||||
pxor xmm0,xmm4 |
||||
psrlq xmm0,1 |
||||
pxor xmm0,xmm1 |
||||
L$006done: |
||||
db 102,15,56,0,197 |
||||
movdqu [eax],xmm0 |
||||
pop edi |
||||
pop esi |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
align 64 |
||||
L$bswap: |
||||
db 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 |
||||
db 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,194 |
||||
align 64 |
||||
L$007rem_8bit: |
||||
dw 0,450,900,582,1800,1738,1164,1358 |
||||
dw 3600,4050,3476,3158,2328,2266,2716,2910 |
||||
dw 7200,7650,8100,7782,6952,6890,6316,6510 |
||||
dw 4656,5106,4532,4214,5432,5370,5820,6014 |
||||
dw 14400,14722,15300,14854,16200,16010,15564,15630 |
||||
dw 13904,14226,13780,13334,12632,12442,13020,13086 |
||||
dw 9312,9634,10212,9766,9064,8874,8428,8494 |
||||
dw 10864,11186,10740,10294,11640,11450,12028,12094 |
||||
dw 28800,28994,29444,29382,30600,30282,29708,30158 |
||||
dw 32400,32594,32020,31958,31128,30810,31260,31710 |
||||
dw 27808,28002,28452,28390,27560,27242,26668,27118 |
||||
dw 25264,25458,24884,24822,26040,25722,26172,26622 |
||||
dw 18624,18690,19268,19078,20424,19978,19532,19854 |
||||
dw 18128,18194,17748,17558,16856,16410,16988,17310 |
||||
dw 21728,21794,22372,22182,21480,21034,20588,20910 |
||||
dw 23280,23346,22900,22710,24056,23610,24188,24510 |
||||
dw 57600,57538,57988,58182,58888,59338,58764,58446 |
||||
dw 61200,61138,60564,60758,59416,59866,60316,59998 |
||||
dw 64800,64738,65188,65382,64040,64490,63916,63598 |
||||
dw 62256,62194,61620,61814,62520,62970,63420,63102 |
||||
dw 55616,55426,56004,56070,56904,57226,56780,56334 |
||||
dw 55120,54930,54484,54550,53336,53658,54236,53790 |
||||
dw 50528,50338,50916,50982,49768,50090,49644,49198 |
||||
dw 52080,51890,51444,51510,52344,52666,53244,52798 |
||||
dw 37248,36930,37380,37830,38536,38730,38156,38094 |
||||
dw 40848,40530,39956,40406,39064,39258,39708,39646 |
||||
dw 36256,35938,36388,36838,35496,35690,35116,35054 |
||||
dw 33712,33394,32820,33270,33976,34170,34620,34558 |
||||
dw 43456,43010,43588,43910,44744,44810,44364,44174 |
||||
dw 42960,42514,42068,42390,41176,41242,41820,41630 |
||||
dw 46560,46114,46692,47014,45800,45866,45420,45230 |
||||
dw 48112,47666,47220,47542,48376,48442,49020,48830 |
||||
db 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67 |
||||
db 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112 |
||||
db 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62 |
||||
db 0 |
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,378 @@
|
||||
; This file is generated from a similarly-named Perl script in the BoringSSL |
||||
; source tree. Do not edit by hand. |
||||
|
||||
%ifdef BORINGSSL_PREFIX |
||||
%include "boringssl_prefix_symbols_nasm.inc" |
||||
%endif |
||||
%ifidn __OUTPUT_FORMAT__,obj |
||||
section code use32 class=code align=64 |
||||
%elifidn __OUTPUT_FORMAT__,win32 |
||||
$@feat.00 equ 1 |
||||
section .text code align=64 |
||||
%else |
||||
section .text code |
||||
%endif |
||||
align 64 |
||||
L$_vpaes_consts: |
||||
dd 218628480,235210255,168496130,67568393 |
||||
dd 252381056,17041926,33884169,51187212 |
||||
dd 252645135,252645135,252645135,252645135 |
||||
dd 1512730624,3266504856,1377990664,3401244816 |
||||
dd 830229760,1275146365,2969422977,3447763452 |
||||
dd 3411033600,2979783055,338359620,2782886510 |
||||
dd 4209124096,907596821,221174255,1006095553 |
||||
dd 191964160,3799684038,3164090317,1589111125 |
||||
dd 182528256,1777043520,2877432650,3265356744 |
||||
dd 1874708224,3503451415,3305285752,363511674 |
||||
dd 1606117888,3487855781,1093350906,2384367825 |
||||
dd 197121,67569157,134941193,202313229 |
||||
dd 67569157,134941193,202313229,197121 |
||||
dd 134941193,202313229,197121,67569157 |
||||
dd 202313229,197121,67569157,134941193 |
||||
dd 33619971,100992007,168364043,235736079 |
||||
dd 235736079,33619971,100992007,168364043 |
||||
dd 168364043,235736079,33619971,100992007 |
||||
dd 100992007,168364043,235736079,33619971 |
||||
dd 50462976,117835012,185207048,252579084 |
||||
dd 252314880,51251460,117574920,184942860 |
||||
dd 184682752,252054788,50987272,118359308 |
||||
dd 118099200,185467140,251790600,50727180 |
||||
dd 2946363062,528716217,1300004225,1881839624 |
||||
dd 1532713819,1532713819,1532713819,1532713819 |
||||
dd 3602276352,4288629033,3737020424,4153884961 |
||||
dd 1354558464,32357713,2958822624,3775749553 |
||||
dd 1201988352,132424512,1572796698,503232858 |
||||
dd 2213177600,1597421020,4103937655,675398315 |
||||
db 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 |
||||
db 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83 |
||||
db 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117 |
||||
db 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105 |
||||
db 118,101,114,115,105,116,121,41,0 |
||||
align 64 |
||||
align 16 |
||||
__vpaes_preheat: |
||||
add ebp,DWORD [esp] |
||||
movdqa xmm7,[ebp-48] |
||||
movdqa xmm6,[ebp-16] |
||||
ret |
||||
align 16 |
||||
__vpaes_encrypt_core: |
||||
mov ecx,16 |
||||
mov eax,DWORD [240+edx] |
||||
movdqa xmm1,xmm6 |
||||
movdqa xmm2,[ebp] |
||||
pandn xmm1,xmm0 |
||||
pand xmm0,xmm6 |
||||
movdqu xmm5,[edx] |
||||
db 102,15,56,0,208 |
||||
movdqa xmm0,[16+ebp] |
||||
pxor xmm2,xmm5 |
||||
psrld xmm1,4 |
||||
add edx,16 |
||||
db 102,15,56,0,193 |
||||
lea ebx,[192+ebp] |
||||
pxor xmm0,xmm2 |
||||
jmp NEAR L$000enc_entry |
||||
align 16 |
||||
L$001enc_loop: |
||||
movdqa xmm4,[32+ebp] |
||||
movdqa xmm0,[48+ebp] |
||||
db 102,15,56,0,226 |
||||
db 102,15,56,0,195 |
||||
pxor xmm4,xmm5 |
||||
movdqa xmm5,[64+ebp] |
||||
pxor xmm0,xmm4 |
||||
movdqa xmm1,[ecx*1+ebx-64] |
||||
db 102,15,56,0,234 |
||||
movdqa xmm2,[80+ebp] |
||||
movdqa xmm4,[ecx*1+ebx] |
||||
db 102,15,56,0,211 |
||||
movdqa xmm3,xmm0 |
||||
pxor xmm2,xmm5 |
||||
db 102,15,56,0,193 |
||||
add edx,16 |
||||
pxor xmm0,xmm2 |
||||
db 102,15,56,0,220 |
||||
add ecx,16 |
||||
pxor xmm3,xmm0 |
||||
db 102,15,56,0,193 |
||||
and ecx,48 |
||||
sub eax,1 |
||||
pxor xmm0,xmm3 |
||||
L$000enc_entry: |
||||
movdqa xmm1,xmm6 |
||||
movdqa xmm5,[ebp-32] |
||||
pandn xmm1,xmm0 |
||||
psrld xmm1,4 |
||||
pand xmm0,xmm6 |
||||
db 102,15,56,0,232 |
||||
movdqa xmm3,xmm7 |
||||
pxor xmm0,xmm1 |
||||
db 102,15,56,0,217 |
||||
movdqa xmm4,xmm7 |
||||
pxor xmm3,xmm5 |
||||
db 102,15,56,0,224 |
||||
movdqa xmm2,xmm7 |
||||
pxor xmm4,xmm5 |
||||
db 102,15,56,0,211 |
||||
movdqa xmm3,xmm7 |
||||
pxor xmm2,xmm0 |
||||
db 102,15,56,0,220 |
||||
movdqu xmm5,[edx] |
||||
pxor xmm3,xmm1 |
||||
jnz NEAR L$001enc_loop |
||||
movdqa xmm4,[96+ebp] |
||||
movdqa xmm0,[112+ebp] |
||||
db 102,15,56,0,226 |
||||
pxor xmm4,xmm5 |
||||
db 102,15,56,0,195 |
||||
movdqa xmm1,[64+ecx*1+ebx] |
||||
pxor xmm0,xmm4 |
||||
db 102,15,56,0,193 |
||||
ret |
||||
align 16 |
||||
__vpaes_schedule_core: |
||||
add ebp,DWORD [esp] |
||||
movdqu xmm0,[esi] |
||||
movdqa xmm2,[320+ebp] |
||||
movdqa xmm3,xmm0 |
||||
lea ebx,[ebp] |
||||
movdqa [4+esp],xmm2 |
||||
call __vpaes_schedule_transform |
||||
movdqa xmm7,xmm0 |
||||
test edi,edi |
||||
jnz NEAR L$002schedule_am_decrypting |
||||
movdqu [edx],xmm0 |
||||
jmp NEAR L$003schedule_go |
||||
L$002schedule_am_decrypting: |
||||
movdqa xmm1,[256+ecx*1+ebp] |
||||
db 102,15,56,0,217 |
||||
movdqu [edx],xmm3 |
||||
xor ecx,48 |
||||
L$003schedule_go: |
||||
cmp eax,192 |
||||
ja NEAR L$004schedule_256 |
||||
L$005schedule_128: |
||||
mov eax,10 |
||||
L$006loop_schedule_128: |
||||
call __vpaes_schedule_round |
||||
dec eax |
||||
jz NEAR L$007schedule_mangle_last |
||||
call __vpaes_schedule_mangle |
||||
jmp NEAR L$006loop_schedule_128 |
||||
align 16 |
||||
L$004schedule_256: |
||||
movdqu xmm0,[16+esi] |
||||
call __vpaes_schedule_transform |
||||
mov eax,7 |
||||
L$008loop_schedule_256: |
||||
call __vpaes_schedule_mangle |
||||
movdqa xmm6,xmm0 |
||||
call __vpaes_schedule_round |
||||
dec eax |
||||
jz NEAR L$007schedule_mangle_last |
||||
call __vpaes_schedule_mangle |
||||
pshufd xmm0,xmm0,255 |
||||
movdqa [20+esp],xmm7 |
||||
movdqa xmm7,xmm6 |
||||
call L$_vpaes_schedule_low_round |
||||
movdqa xmm7,[20+esp] |
||||
jmp NEAR L$008loop_schedule_256 |
||||
align 16 |
||||
L$007schedule_mangle_last: |
||||
lea ebx,[384+ebp] |
||||
test edi,edi |
||||
jnz NEAR L$009schedule_mangle_last_dec |
||||
movdqa xmm1,[256+ecx*1+ebp] |
||||
db 102,15,56,0,193 |
||||
lea ebx,[352+ebp] |
||||
add edx,32 |
||||
L$009schedule_mangle_last_dec: |
||||
add edx,-16 |
||||
pxor xmm0,[336+ebp] |
||||
call __vpaes_schedule_transform |
||||
movdqu [edx],xmm0 |
||||
pxor xmm0,xmm0 |
||||
pxor xmm1,xmm1 |
||||
pxor xmm2,xmm2 |
||||
pxor xmm3,xmm3 |
||||
pxor xmm4,xmm4 |
||||
pxor xmm5,xmm5 |
||||
pxor xmm6,xmm6 |
||||
pxor xmm7,xmm7 |
||||
ret |
||||
align 16 |
||||
__vpaes_schedule_round: |
||||
movdqa xmm2,[8+esp] |
||||
pxor xmm1,xmm1 |
||||
db 102,15,58,15,202,15 |
||||
db 102,15,58,15,210,15 |
||||
pxor xmm7,xmm1 |
||||
pshufd xmm0,xmm0,255 |
||||
db 102,15,58,15,192,1 |
||||
movdqa [8+esp],xmm2 |
||||
L$_vpaes_schedule_low_round: |
||||
movdqa xmm1,xmm7 |
||||
pslldq xmm7,4 |
||||
pxor xmm7,xmm1 |
||||
movdqa xmm1,xmm7 |
||||
pslldq xmm7,8 |
||||
pxor xmm7,xmm1 |
||||
pxor xmm7,[336+ebp] |
||||
movdqa xmm4,[ebp-16] |
||||
movdqa xmm5,[ebp-48] |
||||
movdqa xmm1,xmm4 |
||||
pandn xmm1,xmm0 |
||||
psrld xmm1,4 |
||||
pand xmm0,xmm4 |
||||
movdqa xmm2,[ebp-32] |
||||
db 102,15,56,0,208 |
||||
pxor xmm0,xmm1 |
||||
movdqa xmm3,xmm5 |
||||
db 102,15,56,0,217 |
||||
pxor xmm3,xmm2 |
||||
movdqa xmm4,xmm5 |
||||
db 102,15,56,0,224 |
||||
pxor xmm4,xmm2 |
||||
movdqa xmm2,xmm5 |
||||
db 102,15,56,0,211 |
||||
pxor xmm2,xmm0 |
||||
movdqa xmm3,xmm5 |
||||
db 102,15,56,0,220 |
||||
pxor xmm3,xmm1 |
||||
movdqa xmm4,[32+ebp] |
||||
db 102,15,56,0,226 |
||||
movdqa xmm0,[48+ebp] |
||||
db 102,15,56,0,195 |
||||
pxor xmm0,xmm4 |
||||
pxor xmm0,xmm7 |
||||
movdqa xmm7,xmm0 |
||||
ret |
||||
align 16 |
||||
__vpaes_schedule_transform: |
||||
movdqa xmm2,[ebp-16] |
||||
movdqa xmm1,xmm2 |
||||
pandn xmm1,xmm0 |
||||
psrld xmm1,4 |
||||
pand xmm0,xmm2 |
||||
movdqa xmm2,[ebx] |
||||
db 102,15,56,0,208 |
||||
movdqa xmm0,[16+ebx] |
||||
db 102,15,56,0,193 |
||||
pxor xmm0,xmm2 |
||||
ret |
||||
align 16 |
||||
__vpaes_schedule_mangle: |
||||
movdqa xmm4,xmm0 |
||||
movdqa xmm5,[128+ebp] |
||||
test edi,edi |
||||
jnz NEAR L$010schedule_mangle_dec |
||||
add edx,16 |
||||
pxor xmm4,[336+ebp] |
||||
db 102,15,56,0,229 |
||||
movdqa xmm3,xmm4 |
||||
db 102,15,56,0,229 |
||||
pxor xmm3,xmm4 |
||||
db 102,15,56,0,229 |
||||
pxor xmm3,xmm4 |
||||
jmp NEAR L$011schedule_mangle_both |
||||
align 16 |
||||
L$010schedule_mangle_dec: |
||||
movdqa xmm2,[ebp-16] |
||||
lea esi,[ebp] |
||||
movdqa xmm1,xmm2 |
||||
pandn xmm1,xmm4 |
||||
psrld xmm1,4 |
||||
pand xmm4,xmm2 |
||||
movdqa xmm2,[esi] |
||||
db 102,15,56,0,212 |
||||
movdqa xmm3,[16+esi] |
||||
db 102,15,56,0,217 |
||||
pxor xmm3,xmm2 |
||||
db 102,15,56,0,221 |
||||
movdqa xmm2,[32+esi] |
||||
db 102,15,56,0,212 |
||||
pxor xmm2,xmm3 |
||||
movdqa xmm3,[48+esi] |
||||
db 102,15,56,0,217 |
||||
pxor xmm3,xmm2 |
||||
db 102,15,56,0,221 |
||||
movdqa xmm2,[64+esi] |
||||
db 102,15,56,0,212 |
||||
pxor xmm2,xmm3 |
||||
movdqa xmm3,[80+esi] |
||||
db 102,15,56,0,217 |
||||
pxor xmm3,xmm2 |
||||
db 102,15,56,0,221 |
||||
movdqa xmm2,[96+esi] |
||||
db 102,15,56,0,212 |
||||
pxor xmm2,xmm3 |
||||
movdqa xmm3,[112+esi] |
||||
db 102,15,56,0,217 |
||||
pxor xmm3,xmm2 |
||||
add edx,-16 |
||||
L$011schedule_mangle_both: |
||||
movdqa xmm1,[256+ecx*1+ebp] |
||||
db 102,15,56,0,217 |
||||
add ecx,-16 |
||||
and ecx,48 |
||||
movdqu [edx],xmm3 |
||||
ret |
||||
global _GFp_vpaes_set_encrypt_key |
||||
align 16 |
||||
_GFp_vpaes_set_encrypt_key: |
||||
L$_GFp_vpaes_set_encrypt_key_begin: |
||||
push ebp |
||||
push ebx |
||||
push esi |
||||
push edi |
||||
mov esi,DWORD [20+esp] |
||||
lea ebx,[esp-56] |
||||
mov eax,DWORD [24+esp] |
||||
and ebx,-16 |
||||
mov edx,DWORD [28+esp] |
||||
xchg ebx,esp |
||||
mov DWORD [48+esp],ebx |
||||
mov ebx,eax |
||||
shr ebx,5 |
||||
add ebx,5 |
||||
mov DWORD [240+edx],ebx |
||||
mov ecx,48 |
||||
mov edi,0 |
||||
lea ebp,[(L$_vpaes_consts+0x30-L$012pic_point)] |
||||
call __vpaes_schedule_core |
||||
L$012pic_point: |
||||
mov esp,DWORD [48+esp] |
||||
xor eax,eax |
||||
pop edi |
||||
pop esi |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
global _GFp_vpaes_encrypt |
||||
align 16 |
||||
_GFp_vpaes_encrypt: |
||||
L$_GFp_vpaes_encrypt_begin: |
||||
push ebp |
||||
push ebx |
||||
push esi |
||||
push edi |
||||
lea ebp,[(L$_vpaes_consts+0x30-L$013pic_point)] |
||||
call __vpaes_preheat |
||||
L$013pic_point: |
||||
mov esi,DWORD [20+esp] |
||||
lea ebx,[esp-56] |
||||
mov edi,DWORD [24+esp] |
||||
and ebx,-16 |
||||
mov edx,DWORD [28+esp] |
||||
xchg ebx,esp |
||||
mov DWORD [48+esp],ebx |
||||
movdqu xmm0,[esi] |
||||
call __vpaes_encrypt_core |
||||
movdqu [edi],xmm0 |
||||
mov esp,DWORD [48+esp] |
||||
pop edi |
||||
pop esi |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
@ -0,0 +1,982 @@
|
||||
; This file is generated from a similarly-named Perl script in the BoringSSL |
||||
; source tree. Do not edit by hand. |
||||
|
||||
default rel |
||||
%define XMMWORD |
||||
%define YMMWORD |
||||
%define ZMMWORD |
||||
section .text code align=64 |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 16 |
||||
_vpaes_encrypt_core: |
||||
|
||||
mov r9,rdx |
||||
mov r11,16 |
||||
mov eax,DWORD[240+rdx] |
||||
movdqa xmm1,xmm9 |
||||
movdqa xmm2,XMMWORD[$L$k_ipt] |
||||
pandn xmm1,xmm0 |
||||
movdqu xmm5,XMMWORD[r9] |
||||
psrld xmm1,4 |
||||
pand xmm0,xmm9 |
||||
DB 102,15,56,0,208 |
||||
movdqa xmm0,XMMWORD[(($L$k_ipt+16))] |
||||
DB 102,15,56,0,193 |
||||
pxor xmm2,xmm5 |
||||
add r9,16 |
||||
pxor xmm0,xmm2 |
||||
lea r10,[$L$k_mc_backward] |
||||
jmp NEAR $L$enc_entry |
||||
|
||||
ALIGN 16 |
||||
$L$enc_loop: |
||||
|
||||
movdqa xmm4,xmm13 |
||||
movdqa xmm0,xmm12 |
||||
DB 102,15,56,0,226 |
||||
DB 102,15,56,0,195 |
||||
pxor xmm4,xmm5 |
||||
movdqa xmm5,xmm15 |
||||
pxor xmm0,xmm4 |
||||
movdqa xmm1,XMMWORD[((-64))+r10*1+r11] |
||||
DB 102,15,56,0,234 |
||||
movdqa xmm4,XMMWORD[r10*1+r11] |
||||
movdqa xmm2,xmm14 |
||||
DB 102,15,56,0,211 |
||||
movdqa xmm3,xmm0 |
||||
pxor xmm2,xmm5 |
||||
DB 102,15,56,0,193 |
||||
add r9,16 |
||||
pxor xmm0,xmm2 |
||||
DB 102,15,56,0,220 |
||||
add r11,16 |
||||
pxor xmm3,xmm0 |
||||
DB 102,15,56,0,193 |
||||
and r11,0x30 |
||||
sub rax,1 |
||||
pxor xmm0,xmm3 |
||||
|
||||
$L$enc_entry: |
||||
|
||||
movdqa xmm1,xmm9 |
||||
movdqa xmm5,xmm11 |
||||
pandn xmm1,xmm0 |
||||
psrld xmm1,4 |
||||
pand xmm0,xmm9 |
||||
DB 102,15,56,0,232 |
||||
movdqa xmm3,xmm10 |
||||
pxor xmm0,xmm1 |
||||
DB 102,15,56,0,217 |
||||
movdqa xmm4,xmm10 |
||||
pxor xmm3,xmm5 |
||||
DB 102,15,56,0,224 |
||||
movdqa xmm2,xmm10 |
||||
pxor xmm4,xmm5 |
||||
DB 102,15,56,0,211 |
||||
movdqa xmm3,xmm10 |
||||
pxor xmm2,xmm0 |
||||
DB 102,15,56,0,220 |
||||
movdqu xmm5,XMMWORD[r9] |
||||
pxor xmm3,xmm1 |
||||
jnz NEAR $L$enc_loop |
||||
|
||||
|
||||
movdqa xmm4,XMMWORD[((-96))+r10] |
||||
movdqa xmm0,XMMWORD[((-80))+r10] |
||||
DB 102,15,56,0,226 |
||||
pxor xmm4,xmm5 |
||||
DB 102,15,56,0,195 |
||||
movdqa xmm1,XMMWORD[64+r10*1+r11] |
||||
pxor xmm0,xmm4 |
||||
DB 102,15,56,0,193 |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 16 |
||||
_vpaes_encrypt_core_2x: |
||||
|
||||
mov r9,rdx |
||||
mov r11,16 |
||||
mov eax,DWORD[240+rdx] |
||||
movdqa xmm1,xmm9 |
||||
movdqa xmm7,xmm9 |
||||
movdqa xmm2,XMMWORD[$L$k_ipt] |
||||
movdqa xmm8,xmm2 |
||||
pandn xmm1,xmm0 |
||||
pandn xmm7,xmm6 |
||||
movdqu xmm5,XMMWORD[r9] |
||||
|
||||
psrld xmm1,4 |
||||
psrld xmm7,4 |
||||
pand xmm0,xmm9 |
||||
pand xmm6,xmm9 |
||||
DB 102,15,56,0,208 |
||||
DB 102,68,15,56,0,198 |
||||
movdqa xmm0,XMMWORD[(($L$k_ipt+16))] |
||||
movdqa xmm6,xmm0 |
||||
DB 102,15,56,0,193 |
||||
DB 102,15,56,0,247 |
||||
pxor xmm2,xmm5 |
||||
pxor xmm8,xmm5 |
||||
add r9,16 |
||||
pxor xmm0,xmm2 |
||||
pxor xmm6,xmm8 |
||||
lea r10,[$L$k_mc_backward] |
||||
jmp NEAR $L$enc2x_entry |
||||
|
||||
ALIGN 16 |
||||
$L$enc2x_loop: |
||||
|
||||
movdqa xmm4,XMMWORD[$L$k_sb1] |
||||
movdqa xmm0,XMMWORD[(($L$k_sb1+16))] |
||||
movdqa xmm12,xmm4 |
||||
movdqa xmm6,xmm0 |
||||
DB 102,15,56,0,226 |
||||
DB 102,69,15,56,0,224 |
||||
DB 102,15,56,0,195 |
||||
DB 102,65,15,56,0,243 |
||||
pxor xmm4,xmm5 |
||||
pxor xmm12,xmm5 |
||||
movdqa xmm5,XMMWORD[$L$k_sb2] |
||||
movdqa xmm13,xmm5 |
||||
pxor xmm0,xmm4 |
||||
pxor xmm6,xmm12 |
||||
movdqa xmm1,XMMWORD[((-64))+r10*1+r11] |
||||
|
||||
DB 102,15,56,0,234 |
||||
DB 102,69,15,56,0,232 |
||||
movdqa xmm4,XMMWORD[r10*1+r11] |
||||
|
||||
movdqa xmm2,XMMWORD[(($L$k_sb2+16))] |
||||
movdqa xmm8,xmm2 |
||||
DB 102,15,56,0,211 |
||||
DB 102,69,15,56,0,195 |
||||
movdqa xmm3,xmm0 |
||||
movdqa xmm11,xmm6 |
||||
pxor xmm2,xmm5 |
||||
pxor xmm8,xmm13 |
||||
DB 102,15,56,0,193 |
||||
DB 102,15,56,0,241 |
||||
add r9,16 |
||||
pxor xmm0,xmm2 |
||||
pxor xmm6,xmm8 |
||||
DB 102,15,56,0,220 |
||||
DB 102,68,15,56,0,220 |
||||
add r11,16 |
||||
pxor xmm3,xmm0 |
||||
pxor xmm11,xmm6 |
||||
DB 102,15,56,0,193 |
||||
DB 102,15,56,0,241 |
||||
and r11,0x30 |
||||
sub rax,1 |
||||
pxor xmm0,xmm3 |
||||
pxor xmm6,xmm11 |
||||
|
||||
$L$enc2x_entry: |
||||
|
||||
movdqa xmm1,xmm9 |
||||
movdqa xmm7,xmm9 |
||||
movdqa xmm5,XMMWORD[(($L$k_inv+16))] |
||||
movdqa xmm13,xmm5 |
||||
pandn xmm1,xmm0 |
||||
pandn xmm7,xmm6 |
||||
psrld xmm1,4 |
||||
psrld xmm7,4 |
||||
pand xmm0,xmm9 |
||||
pand xmm6,xmm9 |
||||
DB 102,15,56,0,232 |
||||
DB 102,68,15,56,0,238 |
||||
movdqa xmm3,xmm10 |
||||
movdqa xmm11,xmm10 |
||||
pxor xmm0,xmm1 |
||||
pxor xmm6,xmm7 |
||||
DB 102,15,56,0,217 |
||||
DB 102,68,15,56,0,223 |
||||
movdqa xmm4,xmm10 |
||||
movdqa xmm12,xmm10 |
||||
pxor xmm3,xmm5 |
||||
pxor xmm11,xmm13 |
||||
DB 102,15,56,0,224 |
||||
DB 102,68,15,56,0,230 |
||||
movdqa xmm2,xmm10 |
||||
movdqa xmm8,xmm10 |
||||
pxor xmm4,xmm5 |
||||
pxor xmm12,xmm13 |
||||
DB 102,15,56,0,211 |
||||
DB 102,69,15,56,0,195 |
||||
movdqa xmm3,xmm10 |
||||
movdqa xmm11,xmm10 |
||||
pxor xmm2,xmm0 |
||||
pxor xmm8,xmm6 |
||||
DB 102,15,56,0,220 |
||||
DB 102,69,15,56,0,220 |
||||
movdqu xmm5,XMMWORD[r9] |
||||
|
||||
pxor xmm3,xmm1 |
||||
pxor xmm11,xmm7 |
||||
jnz NEAR $L$enc2x_loop |
||||
|
||||
|
||||
movdqa xmm4,XMMWORD[((-96))+r10] |
||||
movdqa xmm0,XMMWORD[((-80))+r10] |
||||
movdqa xmm12,xmm4 |
||||
movdqa xmm6,xmm0 |
||||
DB 102,15,56,0,226 |
||||
DB 102,69,15,56,0,224 |
||||
pxor xmm4,xmm5 |
||||
pxor xmm12,xmm5 |
||||
DB 102,15,56,0,195 |
||||
DB 102,65,15,56,0,243 |
||||
movdqa xmm1,XMMWORD[64+r10*1+r11] |
||||
|
||||
pxor xmm0,xmm4 |
||||
pxor xmm6,xmm12 |
||||
DB 102,15,56,0,193 |
||||
DB 102,15,56,0,241 |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 16 |
||||
_vpaes_schedule_core: |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
call _vpaes_preheat |
||||
movdqa xmm8,XMMWORD[$L$k_rcon] |
||||
movdqu xmm0,XMMWORD[rdi] |
||||
|
||||
|
||||
movdqa xmm3,xmm0 |
||||
lea r11,[$L$k_ipt] |
||||
call _vpaes_schedule_transform |
||||
movdqa xmm7,xmm0 |
||||
|
||||
lea r10,[$L$k_sr] |
||||
|
||||
|
||||
movdqu XMMWORD[rdx],xmm0 |
||||
|
||||
$L$schedule_go: |
||||
cmp esi,192 |
||||
ja NEAR $L$schedule_256 |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$L$schedule_128: |
||||
mov esi,10 |
||||
|
||||
$L$oop_schedule_128: |
||||
call _vpaes_schedule_round |
||||
dec rsi |
||||
jz NEAR $L$schedule_mangle_last |
||||
call _vpaes_schedule_mangle |
||||
jmp NEAR $L$oop_schedule_128 |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 16 |
||||
$L$schedule_256: |
||||
movdqu xmm0,XMMWORD[16+rdi] |
||||
call _vpaes_schedule_transform |
||||
mov esi,7 |
||||
|
||||
$L$oop_schedule_256: |
||||
call _vpaes_schedule_mangle |
||||
movdqa xmm6,xmm0 |
||||
|
||||
|
||||
call _vpaes_schedule_round |
||||
dec rsi |
||||
jz NEAR $L$schedule_mangle_last |
||||
call _vpaes_schedule_mangle |
||||
|
||||
|
||||
pshufd xmm0,xmm0,0xFF |
||||
movdqa xmm5,xmm7 |
||||
movdqa xmm7,xmm6 |
||||
call _vpaes_schedule_low_round |
||||
movdqa xmm7,xmm5 |
||||
|
||||
jmp NEAR $L$oop_schedule_256 |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 16 |
||||
$L$schedule_mangle_last: |
||||
|
||||
lea r11,[$L$k_deskew] |
||||
|
||||
|
||||
movdqa xmm1,XMMWORD[r10*1+r8] |
||||
DB 102,15,56,0,193 |
||||
lea r11,[$L$k_opt] |
||||
add rdx,32 |
||||
|
||||
$L$schedule_mangle_last_dec: |
||||
add rdx,-16 |
||||
pxor xmm0,XMMWORD[$L$k_s63] |
||||
call _vpaes_schedule_transform |
||||
movdqu XMMWORD[rdx],xmm0 |
||||
|
||||
|
||||
pxor xmm0,xmm0 |
||||
pxor xmm1,xmm1 |
||||
pxor xmm2,xmm2 |
||||
pxor xmm3,xmm3 |
||||
pxor xmm4,xmm4 |
||||
pxor xmm5,xmm5 |
||||
pxor xmm6,xmm6 |
||||
pxor xmm7,xmm7 |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 16 |
||||
_vpaes_schedule_round: |
||||
|
||||
|
||||
pxor xmm1,xmm1 |
||||
DB 102,65,15,58,15,200,15 |
||||
DB 102,69,15,58,15,192,15 |
||||
pxor xmm7,xmm1 |
||||
|
||||
|
||||
pshufd xmm0,xmm0,0xFF |
||||
DB 102,15,58,15,192,1 |
||||
|
||||
|
||||
|
||||
|
||||
_vpaes_schedule_low_round: |
||||
|
||||
movdqa xmm1,xmm7 |
||||
pslldq xmm7,4 |
||||
pxor xmm7,xmm1 |
||||
movdqa xmm1,xmm7 |
||||
pslldq xmm7,8 |
||||
pxor xmm7,xmm1 |
||||
pxor xmm7,XMMWORD[$L$k_s63] |
||||
|
||||
|
||||
movdqa xmm1,xmm9 |
||||
pandn xmm1,xmm0 |
||||
psrld xmm1,4 |
||||
pand xmm0,xmm9 |
||||
movdqa xmm2,xmm11 |
||||
DB 102,15,56,0,208 |
||||
pxor xmm0,xmm1 |
||||
movdqa xmm3,xmm10 |
||||
DB 102,15,56,0,217 |
||||
pxor xmm3,xmm2 |
||||
movdqa xmm4,xmm10 |
||||
DB 102,15,56,0,224 |
||||
pxor xmm4,xmm2 |
||||
movdqa xmm2,xmm10 |
||||
DB 102,15,56,0,211 |
||||
pxor xmm2,xmm0 |
||||
movdqa xmm3,xmm10 |
||||
DB 102,15,56,0,220 |
||||
pxor xmm3,xmm1 |
||||
movdqa xmm4,xmm13 |
||||
DB 102,15,56,0,226 |
||||
movdqa xmm0,xmm12 |
||||
DB 102,15,56,0,195 |
||||
pxor xmm0,xmm4 |
||||
|
||||
|
||||
pxor xmm0,xmm7 |
||||
movdqa xmm7,xmm0 |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 16 |
||||
_vpaes_schedule_transform: |
||||
|
||||
movdqa xmm1,xmm9 |
||||
pandn xmm1,xmm0 |
||||
psrld xmm1,4 |
||||
pand xmm0,xmm9 |
||||
movdqa xmm2,XMMWORD[r11] |
||||
DB 102,15,56,0,208 |
||||
movdqa xmm0,XMMWORD[16+r11] |
||||
DB 102,15,56,0,193 |
||||
pxor xmm0,xmm2 |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 16 |
||||
_vpaes_schedule_mangle: |
||||
|
||||
movdqa xmm4,xmm0 |
||||
movdqa xmm5,XMMWORD[$L$k_mc_forward] |
||||
|
||||
|
||||
add rdx,16 |
||||
pxor xmm4,XMMWORD[$L$k_s63] |
||||
DB 102,15,56,0,229 |
||||
movdqa xmm3,xmm4 |
||||
DB 102,15,56,0,229 |
||||
pxor xmm3,xmm4 |
||||
DB 102,15,56,0,229 |
||||
pxor xmm3,xmm4 |
||||
|
||||
$L$schedule_mangle_both: |
||||
movdqa xmm1,XMMWORD[r10*1+r8] |
||||
DB 102,15,56,0,217 |
||||
add r8,-16 |
||||
and r8,0x30 |
||||
movdqu XMMWORD[rdx],xmm3 |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
global GFp_vpaes_set_encrypt_key |
||||
|
||||
ALIGN 16 |
||||
GFp_vpaes_set_encrypt_key: |
||||
mov QWORD[8+rsp],rdi ;WIN64 prologue |
||||
mov QWORD[16+rsp],rsi |
||||
mov rax,rsp |
||||
$L$SEH_begin_GFp_vpaes_set_encrypt_key: |
||||
mov rdi,rcx |
||||
mov rsi,rdx |
||||
mov rdx,r8 |
||||
|
||||
|
||||
|
||||
%ifdef BORINGSSL_DISPATCH_TEST |
||||
EXTERN BORINGSSL_function_hit |
||||
mov BYTE[((BORINGSSL_function_hit+5))],1 |
||||
%endif |
||||
|
||||
lea rsp,[((-184))+rsp] |
||||
movaps XMMWORD[16+rsp],xmm6 |
||||
movaps XMMWORD[32+rsp],xmm7 |
||||
movaps XMMWORD[48+rsp],xmm8 |
||||
movaps XMMWORD[64+rsp],xmm9 |
||||
movaps XMMWORD[80+rsp],xmm10 |
||||
movaps XMMWORD[96+rsp],xmm11 |
||||
movaps XMMWORD[112+rsp],xmm12 |
||||
movaps XMMWORD[128+rsp],xmm13 |
||||
movaps XMMWORD[144+rsp],xmm14 |
||||
movaps XMMWORD[160+rsp],xmm15 |
||||
$L$enc_key_body: |
||||
mov eax,esi |
||||
shr eax,5 |
||||
add eax,5 |
||||
mov DWORD[240+rdx],eax |
||||
|
||||
mov ecx,0 |
||||
mov r8d,0x30 |
||||
call _vpaes_schedule_core |
||||
movaps xmm6,XMMWORD[16+rsp] |
||||
movaps xmm7,XMMWORD[32+rsp] |
||||
movaps xmm8,XMMWORD[48+rsp] |
||||
movaps xmm9,XMMWORD[64+rsp] |
||||
movaps xmm10,XMMWORD[80+rsp] |
||||
movaps xmm11,XMMWORD[96+rsp] |
||||
movaps xmm12,XMMWORD[112+rsp] |
||||
movaps xmm13,XMMWORD[128+rsp] |
||||
movaps xmm14,XMMWORD[144+rsp] |
||||
movaps xmm15,XMMWORD[160+rsp] |
||||
lea rsp,[184+rsp] |
||||
$L$enc_key_epilogue: |
||||
xor eax,eax |
||||
mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
||||
mov rsi,QWORD[16+rsp] |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
$L$SEH_end_GFp_vpaes_set_encrypt_key: |
||||
|
||||
global GFp_vpaes_encrypt |
||||
|
||||
ALIGN 16 |
||||
GFp_vpaes_encrypt: |
||||
mov QWORD[8+rsp],rdi ;WIN64 prologue |
||||
mov QWORD[16+rsp],rsi |
||||
mov rax,rsp |
||||
$L$SEH_begin_GFp_vpaes_encrypt: |
||||
mov rdi,rcx |
||||
mov rsi,rdx |
||||
mov rdx,r8 |
||||
|
||||
|
||||
|
||||
lea rsp,[((-184))+rsp] |
||||
movaps XMMWORD[16+rsp],xmm6 |
||||
movaps XMMWORD[32+rsp],xmm7 |
||||
movaps XMMWORD[48+rsp],xmm8 |
||||
movaps XMMWORD[64+rsp],xmm9 |
||||
movaps XMMWORD[80+rsp],xmm10 |
||||
movaps XMMWORD[96+rsp],xmm11 |
||||
movaps XMMWORD[112+rsp],xmm12 |
||||
movaps XMMWORD[128+rsp],xmm13 |
||||
movaps XMMWORD[144+rsp],xmm14 |
||||
movaps XMMWORD[160+rsp],xmm15 |
||||
$L$enc_body: |
||||
movdqu xmm0,XMMWORD[rdi] |
||||
call _vpaes_preheat |
||||
call _vpaes_encrypt_core |
||||
movdqu XMMWORD[rsi],xmm0 |
||||
movaps xmm6,XMMWORD[16+rsp] |
||||
movaps xmm7,XMMWORD[32+rsp] |
||||
movaps xmm8,XMMWORD[48+rsp] |
||||
movaps xmm9,XMMWORD[64+rsp] |
||||
movaps xmm10,XMMWORD[80+rsp] |
||||
movaps xmm11,XMMWORD[96+rsp] |
||||
movaps xmm12,XMMWORD[112+rsp] |
||||
movaps xmm13,XMMWORD[128+rsp] |
||||
movaps xmm14,XMMWORD[144+rsp] |
||||
movaps xmm15,XMMWORD[160+rsp] |
||||
lea rsp,[184+rsp] |
||||
$L$enc_epilogue: |
||||
mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
||||
mov rsi,QWORD[16+rsp] |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
$L$SEH_end_GFp_vpaes_encrypt: |
||||
global GFp_vpaes_ctr32_encrypt_blocks |
||||
|
||||
ALIGN 16 |
||||
GFp_vpaes_ctr32_encrypt_blocks: |
||||
mov QWORD[8+rsp],rdi ;WIN64 prologue |
||||
mov QWORD[16+rsp],rsi |
||||
mov rax,rsp |
||||
$L$SEH_begin_GFp_vpaes_ctr32_encrypt_blocks: |
||||
mov rdi,rcx |
||||
mov rsi,rdx |
||||
mov rdx,r8 |
||||
mov rcx,r9 |
||||
mov r8,QWORD[40+rsp] |
||||
|
||||
|
||||
|
||||
|
||||
xchg rdx,rcx |
||||
test rcx,rcx |
||||
jz NEAR $L$ctr32_abort |
||||
lea rsp,[((-184))+rsp] |
||||
movaps XMMWORD[16+rsp],xmm6 |
||||
movaps XMMWORD[32+rsp],xmm7 |
||||
movaps XMMWORD[48+rsp],xmm8 |
||||
movaps XMMWORD[64+rsp],xmm9 |
||||
movaps XMMWORD[80+rsp],xmm10 |
||||
movaps XMMWORD[96+rsp],xmm11 |
||||
movaps XMMWORD[112+rsp],xmm12 |
||||
movaps XMMWORD[128+rsp],xmm13 |
||||
movaps XMMWORD[144+rsp],xmm14 |
||||
movaps XMMWORD[160+rsp],xmm15 |
||||
$L$ctr32_body: |
||||
movdqu xmm0,XMMWORD[r8] |
||||
movdqa xmm8,XMMWORD[$L$ctr_add_one] |
||||
sub rsi,rdi |
||||
call _vpaes_preheat |
||||
movdqa xmm6,xmm0 |
||||
pshufb xmm6,XMMWORD[$L$rev_ctr] |
||||
|
||||
test rcx,1 |
||||
jz NEAR $L$ctr32_prep_loop |
||||
|
||||
|
||||
|
||||
movdqu xmm7,XMMWORD[rdi] |
||||
call _vpaes_encrypt_core |
||||
pxor xmm0,xmm7 |
||||
paddd xmm6,xmm8 |
||||
movdqu XMMWORD[rdi*1+rsi],xmm0 |
||||
sub rcx,1 |
||||
lea rdi,[16+rdi] |
||||
jz NEAR $L$ctr32_done |
||||
|
||||
$L$ctr32_prep_loop: |
||||
|
||||
|
||||
movdqa xmm14,xmm6 |
||||
movdqa xmm15,xmm6 |
||||
paddd xmm15,xmm8 |
||||
|
||||
$L$ctr32_loop: |
||||
movdqa xmm1,XMMWORD[$L$rev_ctr] |
||||
movdqa xmm0,xmm14 |
||||
movdqa xmm6,xmm15 |
||||
DB 102,15,56,0,193 |
||||
DB 102,15,56,0,241 |
||||
call _vpaes_encrypt_core_2x |
||||
movdqu xmm1,XMMWORD[rdi] |
||||
movdqu xmm2,XMMWORD[16+rdi] |
||||
movdqa xmm3,XMMWORD[$L$ctr_add_two] |
||||
pxor xmm0,xmm1 |
||||
pxor xmm6,xmm2 |
||||
paddd xmm14,xmm3 |
||||
paddd xmm15,xmm3 |
||||
movdqu XMMWORD[rdi*1+rsi],xmm0 |
||||
movdqu XMMWORD[16+rdi*1+rsi],xmm6 |
||||
sub rcx,2 |
||||
lea rdi,[32+rdi] |
||||
jnz NEAR $L$ctr32_loop |
||||
|
||||
$L$ctr32_done: |
||||
movaps xmm6,XMMWORD[16+rsp] |
||||
movaps xmm7,XMMWORD[32+rsp] |
||||
movaps xmm8,XMMWORD[48+rsp] |
||||
movaps xmm9,XMMWORD[64+rsp] |
||||
movaps xmm10,XMMWORD[80+rsp] |
||||
movaps xmm11,XMMWORD[96+rsp] |
||||
movaps xmm12,XMMWORD[112+rsp] |
||||
movaps xmm13,XMMWORD[128+rsp] |
||||
movaps xmm14,XMMWORD[144+rsp] |
||||
movaps xmm15,XMMWORD[160+rsp] |
||||
lea rsp,[184+rsp] |
||||
$L$ctr32_epilogue: |
||||
$L$ctr32_abort: |
||||
mov rdi,QWORD[8+rsp] ;WIN64 epilogue |
||||
mov rsi,QWORD[16+rsp] |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
$L$SEH_end_GFp_vpaes_ctr32_encrypt_blocks: |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 16 |
||||
_vpaes_preheat: |
||||
|
||||
lea r10,[$L$k_s0F] |
||||
movdqa xmm10,XMMWORD[((-32))+r10] |
||||
movdqa xmm11,XMMWORD[((-16))+r10] |
||||
movdqa xmm9,XMMWORD[r10] |
||||
movdqa xmm13,XMMWORD[48+r10] |
||||
movdqa xmm12,XMMWORD[64+r10] |
||||
movdqa xmm15,XMMWORD[80+r10] |
||||
movdqa xmm14,XMMWORD[96+r10] |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
ALIGN 64 |
||||
_vpaes_consts: |
||||
$L$k_inv: |
||||
DQ 0x0E05060F0D080180,0x040703090A0B0C02 |
||||
DQ 0x01040A060F0B0780,0x030D0E0C02050809 |
||||
|
||||
$L$k_s0F: |
||||
DQ 0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F |
||||
|
||||
$L$k_ipt: |
||||
DQ 0xC2B2E8985A2A7000,0xCABAE09052227808 |
||||
DQ 0x4C01307D317C4D00,0xCD80B1FCB0FDCC81 |
||||
|
||||
$L$k_sb1: |
||||
DQ 0xB19BE18FCB503E00,0xA5DF7A6E142AF544 |
||||
DQ 0x3618D415FAE22300,0x3BF7CCC10D2ED9EF |
||||
$L$k_sb2: |
||||
DQ 0xE27A93C60B712400,0x5EB7E955BC982FCD |
||||
DQ 0x69EB88400AE12900,0xC2A163C8AB82234A |
||||
$L$k_sbo: |
||||
DQ 0xD0D26D176FBDC700,0x15AABF7AC502A878 |
||||
DQ 0xCFE474A55FBB6A00,0x8E1E90D1412B35FA |
||||
|
||||
$L$k_mc_forward: |
||||
DQ 0x0407060500030201,0x0C0F0E0D080B0A09 |
||||
DQ 0x080B0A0904070605,0x000302010C0F0E0D |
||||
DQ 0x0C0F0E0D080B0A09,0x0407060500030201 |
||||
DQ 0x000302010C0F0E0D,0x080B0A0904070605 |
||||
|
||||
$L$k_mc_backward: |
||||
DQ 0x0605040702010003,0x0E0D0C0F0A09080B |
||||
DQ 0x020100030E0D0C0F,0x0A09080B06050407 |
||||
DQ 0x0E0D0C0F0A09080B,0x0605040702010003 |
||||
DQ 0x0A09080B06050407,0x020100030E0D0C0F |
||||
|
||||
$L$k_sr: |
||||
DQ 0x0706050403020100,0x0F0E0D0C0B0A0908 |
||||
DQ 0x030E09040F0A0500,0x0B06010C07020D08 |
||||
DQ 0x0F060D040B020900,0x070E050C030A0108 |
||||
DQ 0x0B0E0104070A0D00,0x0306090C0F020508 |
||||
|
||||
$L$k_rcon: |
||||
DQ 0x1F8391B9AF9DEEB6,0x702A98084D7C7D81 |
||||
|
||||
$L$k_s63: |
||||
DQ 0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B |
||||
|
||||
$L$k_opt: |
||||
DQ 0xFF9F4929D6B66000,0xF7974121DEBE6808 |
||||
DQ 0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0 |
||||
|
||||
$L$k_deskew: |
||||
DQ 0x07E4A34047A4E300,0x1DFEB95A5DBEF91A |
||||
DQ 0x5F36B5DC83EA6900,0x2841C2ABF49D1E77 |
||||
|
||||
|
||||
$L$rev_ctr: |
||||
DQ 0x0706050403020100,0x0c0d0e0f0b0a0908 |
||||
|
||||
|
||||
$L$ctr_add_one: |
||||
DQ 0x0000000000000000,0x0000000100000000 |
||||
$L$ctr_add_two: |
||||
DQ 0x0000000000000000,0x0000000200000000 |
||||
|
||||
DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 |
||||
DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 |
||||
DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 |
||||
DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 |
||||
DB 85,110,105,118,101,114,115,105,116,121,41,0 |
||||
ALIGN 64 |
||||
|
||||
EXTERN __imp_RtlVirtualUnwind |
||||
|
||||
ALIGN 16 |
||||
se_handler: |
||||
push rsi |
||||
push rdi |
||||
push rbx |
||||
push rbp |
||||
push r12 |
||||
push r13 |
||||
push r14 |
||||
push r15 |
||||
pushfq |
||||
sub rsp,64 |
||||
|
||||
mov rax,QWORD[120+r8] |
||||
mov rbx,QWORD[248+r8] |
||||
|
||||
mov rsi,QWORD[8+r9] |
||||
mov r11,QWORD[56+r9] |
||||
|
||||
mov r10d,DWORD[r11] |
||||
lea r10,[r10*1+rsi] |
||||
cmp rbx,r10 |
||||
jb NEAR $L$in_prologue |
||||
|
||||
mov rax,QWORD[152+r8] |
||||
|
||||
mov r10d,DWORD[4+r11] |
||||
lea r10,[r10*1+rsi] |
||||
cmp rbx,r10 |
||||
jae NEAR $L$in_prologue |
||||
|
||||
lea rsi,[16+rax] |
||||
lea rdi,[512+r8] |
||||
mov ecx,20 |
||||
DD 0xa548f3fc |
||||
lea rax,[184+rax] |
||||
|
||||
$L$in_prologue: |
||||
mov rdi,QWORD[8+rax] |
||||
mov rsi,QWORD[16+rax] |
||||
mov QWORD[152+r8],rax |
||||
mov QWORD[168+r8],rsi |
||||
mov QWORD[176+r8],rdi |
||||
|
||||
mov rdi,QWORD[40+r9] |
||||
mov rsi,r8 |
||||
mov ecx,154 |
||||
DD 0xa548f3fc |
||||
|
||||
mov rsi,r9 |
||||
xor rcx,rcx |
||||
mov rdx,QWORD[8+rsi] |
||||
mov r8,QWORD[rsi] |
||||
mov r9,QWORD[16+rsi] |
||||
mov r10,QWORD[40+rsi] |
||||
lea r11,[56+rsi] |
||||
lea r12,[24+rsi] |
||||
mov QWORD[32+rsp],r10 |
||||
mov QWORD[40+rsp],r11 |
||||
mov QWORD[48+rsp],r12 |
||||
mov QWORD[56+rsp],rcx |
||||
call QWORD[__imp_RtlVirtualUnwind] |
||||
|
||||
mov eax,1 |
||||
add rsp,64 |
||||
popfq |
||||
pop r15 |
||||
pop r14 |
||||
pop r13 |
||||
pop r12 |
||||
pop rbp |
||||
pop rbx |
||||
pop rdi |
||||
pop rsi |
||||
DB 0F3h,0C3h ;repret |
||||
|
||||
|
||||
section .pdata rdata align=4 |
||||
ALIGN 4 |
||||
DD $L$SEH_begin_GFp_vpaes_set_encrypt_key wrt ..imagebase |
||||
DD $L$SEH_end_GFp_vpaes_set_encrypt_key wrt ..imagebase |
||||
DD $L$SEH_info_GFp_vpaes_set_encrypt_key wrt ..imagebase |
||||
|
||||
DD $L$SEH_begin_GFp_vpaes_encrypt wrt ..imagebase |
||||
DD $L$SEH_end_GFp_vpaes_encrypt wrt ..imagebase |
||||
DD $L$SEH_info_GFp_vpaes_encrypt wrt ..imagebase |
||||
DD $L$SEH_begin_GFp_vpaes_ctr32_encrypt_blocks wrt ..imagebase |
||||
DD $L$SEH_end_GFp_vpaes_ctr32_encrypt_blocks wrt ..imagebase |
||||
DD $L$SEH_info_GFp_vpaes_ctr32_encrypt_blocks wrt ..imagebase |
||||
|
||||
section .xdata rdata align=8 |
||||
ALIGN 8 |
||||
$L$SEH_info_GFp_vpaes_set_encrypt_key: |
||||
DB 9,0,0,0 |
||||
DD se_handler wrt ..imagebase |
||||
DD $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase |
||||
$L$SEH_info_GFp_vpaes_encrypt: |
||||
DB 9,0,0,0 |
||||
DD se_handler wrt ..imagebase |
||||
DD $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase |
||||
$L$SEH_info_GFp_vpaes_ctr32_encrypt_blocks: |
||||
DB 9,0,0,0 |
||||
DD se_handler wrt ..imagebase |
||||
DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase |
||||
@ -0,0 +1,227 @@
|
||||
; This file is generated from a similarly-named Perl script in the BoringSSL |
||||
; source tree. Do not edit by hand. |
||||
|
||||
%ifdef BORINGSSL_PREFIX |
||||
%include "boringssl_prefix_symbols_nasm.inc" |
||||
%endif |
||||
%ifidn __OUTPUT_FORMAT__,obj |
||||
section code use32 class=code align=64 |
||||
%elifidn __OUTPUT_FORMAT__,win32 |
||||
$@feat.00 equ 1 |
||||
section .text code align=64 |
||||
%else |
||||
section .text code |
||||
%endif |
||||
;extern _GFp_ia32cap_P |
||||
global _GFp_bn_mul_mont |
||||
align 16 |
||||
_GFp_bn_mul_mont: |
||||
L$_GFp_bn_mul_mont_begin: |
||||
push ebp |
||||
push ebx |
||||
push esi |
||||
push edi |
||||
xor eax,eax |
||||
mov edi,DWORD [40+esp] |
||||
lea esi,[20+esp] |
||||
lea edx,[24+esp] |
||||
add edi,2 |
||||
neg edi |
||||
lea ebp,[edi*4+esp-32] |
||||
neg edi |
||||
mov eax,ebp |
||||
sub eax,edx |
||||
and eax,2047 |
||||
sub ebp,eax |
||||
xor edx,ebp |
||||
and edx,2048 |
||||
xor edx,2048 |
||||
sub ebp,edx |
||||
and ebp,-64 |
||||
mov eax,esp |
||||
sub eax,ebp |
||||
and eax,-4096 |
||||
mov edx,esp |
||||
lea esp,[eax*1+ebp] |
||||
mov eax,DWORD [esp] |
||||
cmp esp,ebp |
||||
ja NEAR L$000page_walk |
||||
jmp NEAR L$001page_walk_done |
||||
align 16 |
||||
L$000page_walk: |
||||
lea esp,[esp-4096] |
||||
mov eax,DWORD [esp] |
||||
cmp esp,ebp |
||||
ja NEAR L$000page_walk |
||||
L$001page_walk_done: |
||||
mov eax,DWORD [esi] |
||||
mov ebx,DWORD [4+esi] |
||||
mov ecx,DWORD [8+esi] |
||||
mov ebp,DWORD [12+esi] |
||||
mov esi,DWORD [16+esi] |
||||
mov esi,DWORD [esi] |
||||
mov DWORD [4+esp],eax |
||||
mov DWORD [8+esp],ebx |
||||
mov DWORD [12+esp],ecx |
||||
mov DWORD [16+esp],ebp |
||||
mov DWORD [20+esp],esi |
||||
lea ebx,[edi-3] |
||||
mov DWORD [24+esp],edx |
||||
lea eax,[_GFp_ia32cap_P] |
||||
bt DWORD [eax],26 |
||||
mov eax,-1 |
||||
movd mm7,eax |
||||
mov esi,DWORD [8+esp] |
||||
mov edi,DWORD [12+esp] |
||||
mov ebp,DWORD [16+esp] |
||||
xor edx,edx |
||||
xor ecx,ecx |
||||
movd mm4,DWORD [edi] |
||||
movd mm5,DWORD [esi] |
||||
movd mm3,DWORD [ebp] |
||||
pmuludq mm5,mm4 |
||||
movq mm2,mm5 |
||||
movq mm0,mm5 |
||||
pand mm0,mm7 |
||||
pmuludq mm5,[20+esp] |
||||
pmuludq mm3,mm5 |
||||
paddq mm3,mm0 |
||||
movd mm1,DWORD [4+ebp] |
||||
movd mm0,DWORD [4+esi] |
||||
psrlq mm2,32 |
||||
psrlq mm3,32 |
||||
inc ecx |
||||
align 16 |
||||
L$0021st: |
||||
pmuludq mm0,mm4 |
||||
pmuludq mm1,mm5 |
||||
paddq mm2,mm0 |
||||
paddq mm3,mm1 |
||||
movq mm0,mm2 |
||||
pand mm0,mm7 |
||||
movd mm1,DWORD [4+ecx*4+ebp] |
||||
paddq mm3,mm0 |
||||
movd mm0,DWORD [4+ecx*4+esi] |
||||
psrlq mm2,32 |
||||
movd DWORD [28+ecx*4+esp],mm3 |
||||
psrlq mm3,32 |
||||
lea ecx,[1+ecx] |
||||
cmp ecx,ebx |
||||
jl NEAR L$0021st |
||||
pmuludq mm0,mm4 |
||||
pmuludq mm1,mm5 |
||||
paddq mm2,mm0 |
||||
paddq mm3,mm1 |
||||
movq mm0,mm2 |
||||
pand mm0,mm7 |
||||
paddq mm3,mm0 |
||||
movd DWORD [28+ecx*4+esp],mm3 |
||||
psrlq mm2,32 |
||||
psrlq mm3,32 |
||||
paddq mm3,mm2 |
||||
movq [32+ebx*4+esp],mm3 |
||||
inc edx |
||||
L$003outer: |
||||
xor ecx,ecx |
||||
movd mm4,DWORD [edx*4+edi] |
||||
movd mm5,DWORD [esi] |
||||
movd mm6,DWORD [32+esp] |
||||
movd mm3,DWORD [ebp] |
||||
pmuludq mm5,mm4 |
||||
paddq mm5,mm6 |
||||
movq mm0,mm5 |
||||
movq mm2,mm5 |
||||
pand mm0,mm7 |
||||
pmuludq mm5,[20+esp] |
||||
pmuludq mm3,mm5 |
||||
paddq mm3,mm0 |
||||
movd mm6,DWORD [36+esp] |
||||
movd mm1,DWORD [4+ebp] |
||||
movd mm0,DWORD [4+esi] |
||||
psrlq mm2,32 |
||||
psrlq mm3,32 |
||||
paddq mm2,mm6 |
||||
inc ecx |
||||
dec ebx |
||||
L$004inner: |
||||
pmuludq mm0,mm4 |
||||
pmuludq mm1,mm5 |
||||
paddq mm2,mm0 |
||||
paddq mm3,mm1 |
||||
movq mm0,mm2 |
||||
movd mm6,DWORD [36+ecx*4+esp] |
||||
pand mm0,mm7 |
||||
movd mm1,DWORD [4+ecx*4+ebp] |
||||
paddq mm3,mm0 |
||||
movd mm0,DWORD [4+ecx*4+esi] |
||||
psrlq mm2,32 |
||||
movd DWORD [28+ecx*4+esp],mm3 |
||||
psrlq mm3,32 |
||||
paddq mm2,mm6 |
||||
dec ebx |
||||
lea ecx,[1+ecx] |
||||
jnz NEAR L$004inner |
||||
mov ebx,ecx |
||||
pmuludq mm0,mm4 |
||||
pmuludq mm1,mm5 |
||||
paddq mm2,mm0 |
||||
paddq mm3,mm1 |
||||
movq mm0,mm2 |
||||
pand mm0,mm7 |
||||
paddq mm3,mm0 |
||||
movd DWORD [28+ecx*4+esp],mm3 |
||||
psrlq mm2,32 |
||||
psrlq mm3,32 |
||||
movd mm6,DWORD [36+ebx*4+esp] |
||||
paddq mm3,mm2 |
||||
paddq mm3,mm6 |
||||
movq [32+ebx*4+esp],mm3 |
||||
lea edx,[1+edx] |
||||
cmp edx,ebx |
||||
jle NEAR L$003outer |
||||
emms |
||||
align 16 |
||||
L$005common_tail: |
||||
mov ebp,DWORD [16+esp] |
||||
mov edi,DWORD [4+esp] |
||||
lea esi,[32+esp] |
||||
mov eax,DWORD [esi] |
||||
mov ecx,ebx |
||||
xor edx,edx |
||||
align 16 |
||||
L$006sub: |
||||
sbb eax,DWORD [edx*4+ebp] |
||||
mov DWORD [edx*4+edi],eax |
||||
dec ecx |
||||
mov eax,DWORD [4+edx*4+esi] |
||||
lea edx,[1+edx] |
||||
jge NEAR L$006sub |
||||
sbb eax,0 |
||||
mov edx,-1 |
||||
xor edx,eax |
||||
jmp NEAR L$007copy |
||||
align 16 |
||||
L$007copy: |
||||
mov esi,DWORD [32+ebx*4+esp] |
||||
mov ebp,DWORD [ebx*4+edi] |
||||
mov DWORD [32+ebx*4+esp],ecx |
||||
and esi,eax |
||||
and ebp,edx |
||||
or ebp,esi |
||||
mov DWORD [ebx*4+edi],ebp |
||||
dec ebx |
||||
jge NEAR L$007copy |
||||
mov esp,DWORD [24+esp] |
||||
mov eax,1 |
||||
pop edi |
||||
pop esi |
||||
pop ebx |
||||
pop ebp |
||||
ret |
||||
db 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105 |
||||
db 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56 |
||||
db 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121 |
||||
db 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46 |
||||
db 111,114,103,62,0 |
||||
segment .bss |
||||
common _GFp_ia32cap_P 16 |
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue