mirror of https://github.com/acidanthera/audk.git
CryptoPkg/OpensslLib: Commit the auto-generated assembly files for IA32
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3654 Adding the auto-generated assembly files for IA32 architectures. Cc: Yi Li <yi1.li@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com> Cc: Guomin Jiang <guomin.jiang@intel.com> Signed-off-by: Christopher Zurcher <christopher.zurcher@microsoft.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
parent
03f708090b
commit
4102950a21
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,651 @@
|
|||
; WARNING: do not edit!
|
||||
; Generated from openssl/crypto/aes/asm/vpaes-x86.pl
|
||||
;
|
||||
; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
;
|
||||
; Licensed under the OpenSSL license (the "License"). You may not use
|
||||
; this file except in compliance with the License. You can obtain a copy
|
||||
; in the file LICENSE in the source distribution or at
|
||||
; https://www.openssl.org/source/license.html
|
||||
|
||||
%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
|
||||
dd 2749646592,4273543773,1511898873,121693092
|
||||
dd 3040248576,1103263732,2871565598,1608280554
|
||||
dd 2236667136,2588920351,482954393,64377734
|
||||
dd 3069987328,291237287,2117370568,3650299247
|
||||
dd 533321216,3573750986,2572112006,1401264716
|
||||
dd 1339849704,2721158661,548607111,3445553514
|
||||
dd 2128193280,3054596040,2183486460,1257083700
|
||||
dd 655635200,1165381986,3923443150,2344132524
|
||||
dd 190078720,256924420,290342170,357187870
|
||||
dd 1610966272,2263057382,4103205268,309794674
|
||||
dd 2592527872,2233205587,1335446729,3402964816
|
||||
dd 3973531904,3225098121,3002836325,1918774430
|
||||
dd 3870401024,2102906079,2284471353,4117666579
|
||||
dd 617007872,1021508343,366931923,691083277
|
||||
dd 2528395776,3491914898,2968704004,1613121270
|
||||
dd 3445188352,3247741094,844474987,4093578302
|
||||
dd 651481088,1190302358,1689581232,574775300
|
||||
dd 4289380608,206939853,2555985458,2489840491
|
||||
dd 2130264064,327674451,3566485037,3349835193
|
||||
dd 2470714624,316102159,3636825756,3393945945
|
||||
db 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
|
||||
db 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
|
||||
db 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
|
||||
db 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
|
||||
db 118,101,114,115,105,116,121,41,0
|
||||
align 64
|
||||
align 16
|
||||
__vpaes_preheat:
|
||||
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_decrypt_core:
|
||||
lea ebx,[608+ebp]
|
||||
mov eax,DWORD [240+edx]
|
||||
movdqa xmm1,xmm6
|
||||
movdqa xmm2,[ebx-64]
|
||||
pandn xmm1,xmm0
|
||||
mov ecx,eax
|
||||
psrld xmm1,4
|
||||
movdqu xmm5,[edx]
|
||||
shl ecx,4
|
||||
pand xmm0,xmm6
|
||||
db 102,15,56,0,208
|
||||
movdqa xmm0,[ebx-48]
|
||||
xor ecx,48
|
||||
db 102,15,56,0,193
|
||||
and ecx,48
|
||||
pxor xmm2,xmm5
|
||||
movdqa xmm5,[176+ebp]
|
||||
pxor xmm0,xmm2
|
||||
add edx,16
|
||||
lea ecx,[ecx*1+ebx-352]
|
||||
jmp NEAR L$002dec_entry
|
||||
align 16
|
||||
L$003dec_loop:
|
||||
movdqa xmm4,[ebx-32]
|
||||
movdqa xmm1,[ebx-16]
|
||||
db 102,15,56,0,226
|
||||
db 102,15,56,0,203
|
||||
pxor xmm0,xmm4
|
||||
movdqa xmm4,[ebx]
|
||||
pxor xmm0,xmm1
|
||||
movdqa xmm1,[16+ebx]
|
||||
db 102,15,56,0,226
|
||||
db 102,15,56,0,197
|
||||
db 102,15,56,0,203
|
||||
pxor xmm0,xmm4
|
||||
movdqa xmm4,[32+ebx]
|
||||
pxor xmm0,xmm1
|
||||
movdqa xmm1,[48+ebx]
|
||||
db 102,15,56,0,226
|
||||
db 102,15,56,0,197
|
||||
db 102,15,56,0,203
|
||||
pxor xmm0,xmm4
|
||||
movdqa xmm4,[64+ebx]
|
||||
pxor xmm0,xmm1
|
||||
movdqa xmm1,[80+ebx]
|
||||
db 102,15,56,0,226
|
||||
db 102,15,56,0,197
|
||||
db 102,15,56,0,203
|
||||
pxor xmm0,xmm4
|
||||
add edx,16
|
||||
db 102,15,58,15,237,12
|
||||
pxor xmm0,xmm1
|
||||
sub eax,1
|
||||
L$002dec_entry:
|
||||
movdqa xmm1,xmm6
|
||||
movdqa xmm2,[ebp-32]
|
||||
pandn xmm1,xmm0
|
||||
pand xmm0,xmm6
|
||||
psrld xmm1,4
|
||||
db 102,15,56,0,208
|
||||
movdqa xmm3,xmm7
|
||||
pxor xmm0,xmm1
|
||||
db 102,15,56,0,217
|
||||
movdqa xmm4,xmm7
|
||||
pxor xmm3,xmm2
|
||||
db 102,15,56,0,224
|
||||
pxor xmm4,xmm2
|
||||
movdqa xmm2,xmm7
|
||||
db 102,15,56,0,211
|
||||
movdqa xmm3,xmm7
|
||||
pxor xmm2,xmm0
|
||||
db 102,15,56,0,220
|
||||
movdqu xmm0,[edx]
|
||||
pxor xmm3,xmm1
|
||||
jnz NEAR L$003dec_loop
|
||||
movdqa xmm4,[96+ebx]
|
||||
db 102,15,56,0,226
|
||||
pxor xmm4,xmm0
|
||||
movdqa xmm0,[112+ebx]
|
||||
movdqa xmm2,[ecx]
|
||||
db 102,15,56,0,195
|
||||
pxor xmm0,xmm4
|
||||
db 102,15,56,0,194
|
||||
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$004schedule_am_decrypting
|
||||
movdqu [edx],xmm0
|
||||
jmp NEAR L$005schedule_go
|
||||
L$004schedule_am_decrypting:
|
||||
movdqa xmm1,[256+ecx*1+ebp]
|
||||
db 102,15,56,0,217
|
||||
movdqu [edx],xmm3
|
||||
xor ecx,48
|
||||
L$005schedule_go:
|
||||
cmp eax,192
|
||||
ja NEAR L$006schedule_256
|
||||
je NEAR L$007schedule_192
|
||||
L$008schedule_128:
|
||||
mov eax,10
|
||||
L$009loop_schedule_128:
|
||||
call __vpaes_schedule_round
|
||||
dec eax
|
||||
jz NEAR L$010schedule_mangle_last
|
||||
call __vpaes_schedule_mangle
|
||||
jmp NEAR L$009loop_schedule_128
|
||||
align 16
|
||||
L$007schedule_192:
|
||||
movdqu xmm0,[8+esi]
|
||||
call __vpaes_schedule_transform
|
||||
movdqa xmm6,xmm0
|
||||
pxor xmm4,xmm4
|
||||
movhlps xmm6,xmm4
|
||||
mov eax,4
|
||||
L$011loop_schedule_192:
|
||||
call __vpaes_schedule_round
|
||||
db 102,15,58,15,198,8
|
||||
call __vpaes_schedule_mangle
|
||||
call __vpaes_schedule_192_smear
|
||||
call __vpaes_schedule_mangle
|
||||
call __vpaes_schedule_round
|
||||
dec eax
|
||||
jz NEAR L$010schedule_mangle_last
|
||||
call __vpaes_schedule_mangle
|
||||
call __vpaes_schedule_192_smear
|
||||
jmp NEAR L$011loop_schedule_192
|
||||
align 16
|
||||
L$006schedule_256:
|
||||
movdqu xmm0,[16+esi]
|
||||
call __vpaes_schedule_transform
|
||||
mov eax,7
|
||||
L$012loop_schedule_256:
|
||||
call __vpaes_schedule_mangle
|
||||
movdqa xmm6,xmm0
|
||||
call __vpaes_schedule_round
|
||||
dec eax
|
||||
jz NEAR L$010schedule_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$012loop_schedule_256
|
||||
align 16
|
||||
L$010schedule_mangle_last:
|
||||
lea ebx,[384+ebp]
|
||||
test edi,edi
|
||||
jnz NEAR L$013schedule_mangle_last_dec
|
||||
movdqa xmm1,[256+ecx*1+ebp]
|
||||
db 102,15,56,0,193
|
||||
lea ebx,[352+ebp]
|
||||
add edx,32
|
||||
L$013schedule_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_192_smear:
|
||||
pshufd xmm1,xmm6,128
|
||||
pshufd xmm0,xmm7,254
|
||||
pxor xmm6,xmm1
|
||||
pxor xmm1,xmm1
|
||||
pxor xmm6,xmm0
|
||||
movdqa xmm0,xmm6
|
||||
movhlps xmm6,xmm1
|
||||
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$014schedule_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$015schedule_mangle_both
|
||||
align 16
|
||||
L$014schedule_mangle_dec:
|
||||
movdqa xmm2,[ebp-16]
|
||||
lea esi,[416+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$015schedule_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 _vpaes_set_encrypt_key
|
||||
align 16
|
||||
_vpaes_set_encrypt_key:
|
||||
L$_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$016pic_point)]
|
||||
call __vpaes_schedule_core
|
||||
L$016pic_point:
|
||||
mov esp,DWORD [48+esp]
|
||||
xor eax,eax
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
global _vpaes_set_decrypt_key
|
||||
align 16
|
||||
_vpaes_set_decrypt_key:
|
||||
L$_vpaes_set_decrypt_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
|
||||
shl ebx,4
|
||||
lea edx,[16+ebx*1+edx]
|
||||
mov edi,1
|
||||
mov ecx,eax
|
||||
shr ecx,1
|
||||
and ecx,32
|
||||
xor ecx,32
|
||||
lea ebp,[(L$_vpaes_consts+0x30-L$017pic_point)]
|
||||
call __vpaes_schedule_core
|
||||
L$017pic_point:
|
||||
mov esp,DWORD [48+esp]
|
||||
xor eax,eax
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
global _vpaes_encrypt
|
||||
align 16
|
||||
_vpaes_encrypt:
|
||||
L$_vpaes_encrypt_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
lea ebp,[(L$_vpaes_consts+0x30-L$018pic_point)]
|
||||
call __vpaes_preheat
|
||||
L$018pic_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
|
||||
global _vpaes_decrypt
|
||||
align 16
|
||||
_vpaes_decrypt:
|
||||
L$_vpaes_decrypt_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
lea ebp,[(L$_vpaes_consts+0x30-L$019pic_point)]
|
||||
call __vpaes_preheat
|
||||
L$019pic_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_decrypt_core
|
||||
movdqu [edi],xmm0
|
||||
mov esp,DWORD [48+esp]
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
global _vpaes_cbc_encrypt
|
||||
align 16
|
||||
_vpaes_cbc_encrypt:
|
||||
L$_vpaes_cbc_encrypt_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]
|
||||
sub eax,16
|
||||
jc NEAR L$020cbc_abort
|
||||
lea ebx,[esp-56]
|
||||
mov ebp,DWORD [36+esp]
|
||||
and ebx,-16
|
||||
mov ecx,DWORD [40+esp]
|
||||
xchg ebx,esp
|
||||
movdqu xmm1,[ebp]
|
||||
sub edi,esi
|
||||
mov DWORD [48+esp],ebx
|
||||
mov DWORD [esp],edi
|
||||
mov DWORD [4+esp],edx
|
||||
mov DWORD [8+esp],ebp
|
||||
mov edi,eax
|
||||
lea ebp,[(L$_vpaes_consts+0x30-L$021pic_point)]
|
||||
call __vpaes_preheat
|
||||
L$021pic_point:
|
||||
cmp ecx,0
|
||||
je NEAR L$022cbc_dec_loop
|
||||
jmp NEAR L$023cbc_enc_loop
|
||||
align 16
|
||||
L$023cbc_enc_loop:
|
||||
movdqu xmm0,[esi]
|
||||
pxor xmm0,xmm1
|
||||
call __vpaes_encrypt_core
|
||||
mov ebx,DWORD [esp]
|
||||
mov edx,DWORD [4+esp]
|
||||
movdqa xmm1,xmm0
|
||||
movdqu [esi*1+ebx],xmm0
|
||||
lea esi,[16+esi]
|
||||
sub edi,16
|
||||
jnc NEAR L$023cbc_enc_loop
|
||||
jmp NEAR L$024cbc_done
|
||||
align 16
|
||||
L$022cbc_dec_loop:
|
||||
movdqu xmm0,[esi]
|
||||
movdqa [16+esp],xmm1
|
||||
movdqa [32+esp],xmm0
|
||||
call __vpaes_decrypt_core
|
||||
mov ebx,DWORD [esp]
|
||||
mov edx,DWORD [4+esp]
|
||||
pxor xmm0,[16+esp]
|
||||
movdqa xmm1,[32+esp]
|
||||
movdqu [esi*1+ebx],xmm0
|
||||
lea esi,[16+esi]
|
||||
sub edi,16
|
||||
jnc NEAR L$022cbc_dec_loop
|
||||
L$024cbc_done:
|
||||
mov ebx,DWORD [8+esp]
|
||||
mov esp,DWORD [48+esp]
|
||||
movdqu [ebx],xmm1
|
||||
L$020cbc_abort:
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
|
@ -0,0 +1,700 @@
|
|||
; WARNING: do not edit!
|
||||
; Generated from openssl/crypto/modes/asm/ghash-x86.pl
|
||||
;
|
||||
; Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
;
|
||||
; Licensed under the OpenSSL license (the "License"). You may not use
|
||||
; this file except in compliance with the License. You can obtain a copy
|
||||
; in the file LICENSE in the source distribution or at
|
||||
; https://www.openssl.org/source/license.html
|
||||
|
||||
%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 _gcm_gmult_4bit_x86
|
||||
align 16
|
||||
_gcm_gmult_4bit_x86:
|
||||
L$_gcm_gmult_4bit_x86_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
sub esp,84
|
||||
mov edi,DWORD [104+esp]
|
||||
mov esi,DWORD [108+esp]
|
||||
mov ebp,DWORD [edi]
|
||||
mov edx,DWORD [4+edi]
|
||||
mov ecx,DWORD [8+edi]
|
||||
mov ebx,DWORD [12+edi]
|
||||
mov DWORD [16+esp],0
|
||||
mov DWORD [20+esp],471859200
|
||||
mov DWORD [24+esp],943718400
|
||||
mov DWORD [28+esp],610271232
|
||||
mov DWORD [32+esp],1887436800
|
||||
mov DWORD [36+esp],1822425088
|
||||
mov DWORD [40+esp],1220542464
|
||||
mov DWORD [44+esp],1423966208
|
||||
mov DWORD [48+esp],3774873600
|
||||
mov DWORD [52+esp],4246732800
|
||||
mov DWORD [56+esp],3644850176
|
||||
mov DWORD [60+esp],3311403008
|
||||
mov DWORD [64+esp],2441084928
|
||||
mov DWORD [68+esp],2376073216
|
||||
mov DWORD [72+esp],2847932416
|
||||
mov DWORD [76+esp],3051356160
|
||||
mov DWORD [esp],ebp
|
||||
mov DWORD [4+esp],edx
|
||||
mov DWORD [8+esp],ecx
|
||||
mov DWORD [12+esp],ebx
|
||||
shr ebx,20
|
||||
and ebx,240
|
||||
mov ebp,DWORD [4+ebx*1+esi]
|
||||
mov edx,DWORD [ebx*1+esi]
|
||||
mov ecx,DWORD [12+ebx*1+esi]
|
||||
mov ebx,DWORD [8+ebx*1+esi]
|
||||
xor eax,eax
|
||||
mov edi,15
|
||||
jmp NEAR L$000x86_loop
|
||||
align 16
|
||||
L$000x86_loop:
|
||||
mov al,bl
|
||||
shrd ebx,ecx,4
|
||||
and al,15
|
||||
shrd ecx,edx,4
|
||||
shrd edx,ebp,4
|
||||
shr ebp,4
|
||||
xor ebp,DWORD [16+eax*4+esp]
|
||||
mov al,BYTE [edi*1+esp]
|
||||
and al,240
|
||||
xor ebx,DWORD [8+eax*1+esi]
|
||||
xor ecx,DWORD [12+eax*1+esi]
|
||||
xor edx,DWORD [eax*1+esi]
|
||||
xor ebp,DWORD [4+eax*1+esi]
|
||||
dec edi
|
||||
js NEAR L$001x86_break
|
||||
mov al,bl
|
||||
shrd ebx,ecx,4
|
||||
and al,15
|
||||
shrd ecx,edx,4
|
||||
shrd edx,ebp,4
|
||||
shr ebp,4
|
||||
xor ebp,DWORD [16+eax*4+esp]
|
||||
mov al,BYTE [edi*1+esp]
|
||||
shl al,4
|
||||
xor ebx,DWORD [8+eax*1+esi]
|
||||
xor ecx,DWORD [12+eax*1+esi]
|
||||
xor edx,DWORD [eax*1+esi]
|
||||
xor ebp,DWORD [4+eax*1+esi]
|
||||
jmp NEAR L$000x86_loop
|
||||
align 16
|
||||
L$001x86_break:
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
bswap ebp
|
||||
mov edi,DWORD [104+esp]
|
||||
mov DWORD [12+edi],ebx
|
||||
mov DWORD [8+edi],ecx
|
||||
mov DWORD [4+edi],edx
|
||||
mov DWORD [edi],ebp
|
||||
add esp,84
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
global _gcm_ghash_4bit_x86
|
||||
align 16
|
||||
_gcm_ghash_4bit_x86:
|
||||
L$_gcm_ghash_4bit_x86_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
sub esp,84
|
||||
mov ebx,DWORD [104+esp]
|
||||
mov esi,DWORD [108+esp]
|
||||
mov edi,DWORD [112+esp]
|
||||
mov ecx,DWORD [116+esp]
|
||||
add ecx,edi
|
||||
mov DWORD [116+esp],ecx
|
||||
mov ebp,DWORD [ebx]
|
||||
mov edx,DWORD [4+ebx]
|
||||
mov ecx,DWORD [8+ebx]
|
||||
mov ebx,DWORD [12+ebx]
|
||||
mov DWORD [16+esp],0
|
||||
mov DWORD [20+esp],471859200
|
||||
mov DWORD [24+esp],943718400
|
||||
mov DWORD [28+esp],610271232
|
||||
mov DWORD [32+esp],1887436800
|
||||
mov DWORD [36+esp],1822425088
|
||||
mov DWORD [40+esp],1220542464
|
||||
mov DWORD [44+esp],1423966208
|
||||
mov DWORD [48+esp],3774873600
|
||||
mov DWORD [52+esp],4246732800
|
||||
mov DWORD [56+esp],3644850176
|
||||
mov DWORD [60+esp],3311403008
|
||||
mov DWORD [64+esp],2441084928
|
||||
mov DWORD [68+esp],2376073216
|
||||
mov DWORD [72+esp],2847932416
|
||||
mov DWORD [76+esp],3051356160
|
||||
align 16
|
||||
L$002x86_outer_loop:
|
||||
xor ebx,DWORD [12+edi]
|
||||
xor ecx,DWORD [8+edi]
|
||||
xor edx,DWORD [4+edi]
|
||||
xor ebp,DWORD [edi]
|
||||
mov DWORD [12+esp],ebx
|
||||
mov DWORD [8+esp],ecx
|
||||
mov DWORD [4+esp],edx
|
||||
mov DWORD [esp],ebp
|
||||
shr ebx,20
|
||||
and ebx,240
|
||||
mov ebp,DWORD [4+ebx*1+esi]
|
||||
mov edx,DWORD [ebx*1+esi]
|
||||
mov ecx,DWORD [12+ebx*1+esi]
|
||||
mov ebx,DWORD [8+ebx*1+esi]
|
||||
xor eax,eax
|
||||
mov edi,15
|
||||
jmp NEAR L$003x86_loop
|
||||
align 16
|
||||
L$003x86_loop:
|
||||
mov al,bl
|
||||
shrd ebx,ecx,4
|
||||
and al,15
|
||||
shrd ecx,edx,4
|
||||
shrd edx,ebp,4
|
||||
shr ebp,4
|
||||
xor ebp,DWORD [16+eax*4+esp]
|
||||
mov al,BYTE [edi*1+esp]
|
||||
and al,240
|
||||
xor ebx,DWORD [8+eax*1+esi]
|
||||
xor ecx,DWORD [12+eax*1+esi]
|
||||
xor edx,DWORD [eax*1+esi]
|
||||
xor ebp,DWORD [4+eax*1+esi]
|
||||
dec edi
|
||||
js NEAR L$004x86_break
|
||||
mov al,bl
|
||||
shrd ebx,ecx,4
|
||||
and al,15
|
||||
shrd ecx,edx,4
|
||||
shrd edx,ebp,4
|
||||
shr ebp,4
|
||||
xor ebp,DWORD [16+eax*4+esp]
|
||||
mov al,BYTE [edi*1+esp]
|
||||
shl al,4
|
||||
xor ebx,DWORD [8+eax*1+esi]
|
||||
xor ecx,DWORD [12+eax*1+esi]
|
||||
xor edx,DWORD [eax*1+esi]
|
||||
xor ebp,DWORD [4+eax*1+esi]
|
||||
jmp NEAR L$003x86_loop
|
||||
align 16
|
||||
L$004x86_break:
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
bswap ebp
|
||||
mov edi,DWORD [112+esp]
|
||||
lea edi,[16+edi]
|
||||
cmp edi,DWORD [116+esp]
|
||||
mov DWORD [112+esp],edi
|
||||
jb NEAR L$002x86_outer_loop
|
||||
mov edi,DWORD [104+esp]
|
||||
mov DWORD [12+edi],ebx
|
||||
mov DWORD [8+edi],ecx
|
||||
mov DWORD [4+edi],edx
|
||||
mov DWORD [edi],ebp
|
||||
add esp,84
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
align 16
|
||||
__mmx_gmult_4bit_inner:
|
||||
xor ecx,ecx
|
||||
mov edx,ebx
|
||||
mov cl,dl
|
||||
shl cl,4
|
||||
and edx,240
|
||||
movq mm0,[8+ecx*1+esi]
|
||||
movq mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [14+edi]
|
||||
psllq mm2,60
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [13+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [12+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [11+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [10+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [9+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [8+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [7+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [6+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [5+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [4+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [3+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [2+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [1+edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
mov cl,BYTE [edi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
mov edx,ecx
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
shl cl,4
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+ecx*1+esi]
|
||||
psllq mm2,60
|
||||
and edx,240
|
||||
pxor mm1,[ebp*8+eax]
|
||||
and ebx,15
|
||||
pxor mm1,[ecx*1+esi]
|
||||
movd ebp,mm0
|
||||
pxor mm0,mm2
|
||||
psrlq mm0,4
|
||||
movq mm2,mm1
|
||||
psrlq mm1,4
|
||||
pxor mm0,[8+edx*1+esi]
|
||||
psllq mm2,60
|
||||
pxor mm1,[ebx*8+eax]
|
||||
and ebp,15
|
||||
pxor mm1,[edx*1+esi]
|
||||
movd ebx,mm0
|
||||
pxor mm0,mm2
|
||||
mov edi,DWORD [4+ebp*8+eax]
|
||||
psrlq mm0,32
|
||||
movd edx,mm1
|
||||
psrlq mm1,32
|
||||
movd ecx,mm0
|
||||
movd ebp,mm1
|
||||
shl edi,4
|
||||
bswap ebx
|
||||
bswap edx
|
||||
bswap ecx
|
||||
xor ebp,edi
|
||||
bswap ebp
|
||||
ret
|
||||
global _gcm_gmult_4bit_mmx
|
||||
align 16
|
||||
_gcm_gmult_4bit_mmx:
|
||||
L$_gcm_gmult_4bit_mmx_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
mov edi,DWORD [20+esp]
|
||||
mov esi,DWORD [24+esp]
|
||||
call L$005pic_point
|
||||
L$005pic_point:
|
||||
pop eax
|
||||
lea eax,[(L$rem_4bit-L$005pic_point)+eax]
|
||||
movzx ebx,BYTE [15+edi]
|
||||
call __mmx_gmult_4bit_inner
|
||||
mov edi,DWORD [20+esp]
|
||||
emms
|
||||
mov DWORD [12+edi],ebx
|
||||
mov DWORD [4+edi],edx
|
||||
mov DWORD [8+edi],ecx
|
||||
mov DWORD [edi],ebp
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
global _gcm_ghash_4bit_mmx
|
||||
align 16
|
||||
_gcm_ghash_4bit_mmx:
|
||||
L$_gcm_ghash_4bit_mmx_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
mov ebp,DWORD [20+esp]
|
||||
mov esi,DWORD [24+esp]
|
||||
mov edi,DWORD [28+esp]
|
||||
mov ecx,DWORD [32+esp]
|
||||
call L$006pic_point
|
||||
L$006pic_point:
|
||||
pop eax
|
||||
lea eax,[(L$rem_4bit-L$006pic_point)+eax]
|
||||
add ecx,edi
|
||||
mov DWORD [32+esp],ecx
|
||||
sub esp,20
|
||||
mov ebx,DWORD [12+ebp]
|
||||
mov edx,DWORD [4+ebp]
|
||||
mov ecx,DWORD [8+ebp]
|
||||
mov ebp,DWORD [ebp]
|
||||
jmp NEAR L$007mmx_outer_loop
|
||||
align 16
|
||||
L$007mmx_outer_loop:
|
||||
xor ebx,DWORD [12+edi]
|
||||
xor edx,DWORD [4+edi]
|
||||
xor ecx,DWORD [8+edi]
|
||||
xor ebp,DWORD [edi]
|
||||
mov DWORD [48+esp],edi
|
||||
mov DWORD [12+esp],ebx
|
||||
mov DWORD [4+esp],edx
|
||||
mov DWORD [8+esp],ecx
|
||||
mov DWORD [esp],ebp
|
||||
mov edi,esp
|
||||
shr ebx,24
|
||||
call __mmx_gmult_4bit_inner
|
||||
mov edi,DWORD [48+esp]
|
||||
lea edi,[16+edi]
|
||||
cmp edi,DWORD [52+esp]
|
||||
jb NEAR L$007mmx_outer_loop
|
||||
mov edi,DWORD [40+esp]
|
||||
emms
|
||||
mov DWORD [12+edi],ebx
|
||||
mov DWORD [4+edi],edx
|
||||
mov DWORD [8+edi],ecx
|
||||
mov DWORD [edi],ebp
|
||||
add esp,20
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
align 64
|
||||
L$rem_4bit:
|
||||
dd 0,0,0,29491200,0,58982400,0,38141952
|
||||
dd 0,117964800,0,113901568,0,76283904,0,88997888
|
||||
dd 0,235929600,0,265420800,0,227803136,0,206962688
|
||||
dd 0,152567808,0,148504576,0,177995776,0,190709760
|
||||
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
|
@ -0,0 +1,579 @@
|
|||
; WARNING: do not edit!
|
||||
; Generated from openssl/crypto/sha/asm/sha512-586.pl
|
||||
;
|
||||
; Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
;
|
||||
; Licensed under the OpenSSL license (the "License"). You may not use
|
||||
; this file except in compliance with the License. You can obtain a copy
|
||||
; in the file LICENSE in the source distribution or at
|
||||
; https://www.openssl.org/source/license.html
|
||||
|
||||
%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 _sha512_block_data_order
|
||||
align 16
|
||||
_sha512_block_data_order:
|
||||
L$_sha512_block_data_order_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 ebx,esp
|
||||
call L$000pic_point
|
||||
L$000pic_point:
|
||||
pop ebp
|
||||
lea ebp,[(L$001K512-L$000pic_point)+ebp]
|
||||
sub esp,16
|
||||
and esp,-64
|
||||
shl eax,7
|
||||
add eax,edi
|
||||
mov DWORD [esp],esi
|
||||
mov DWORD [4+esp],edi
|
||||
mov DWORD [8+esp],eax
|
||||
mov DWORD [12+esp],ebx
|
||||
align 16
|
||||
L$002loop_x86:
|
||||
mov eax,DWORD [edi]
|
||||
mov ebx,DWORD [4+edi]
|
||||
mov ecx,DWORD [8+edi]
|
||||
mov edx,DWORD [12+edi]
|
||||
bswap eax
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
mov eax,DWORD [16+edi]
|
||||
mov ebx,DWORD [20+edi]
|
||||
mov ecx,DWORD [24+edi]
|
||||
mov edx,DWORD [28+edi]
|
||||
bswap eax
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
mov eax,DWORD [32+edi]
|
||||
mov ebx,DWORD [36+edi]
|
||||
mov ecx,DWORD [40+edi]
|
||||
mov edx,DWORD [44+edi]
|
||||
bswap eax
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
mov eax,DWORD [48+edi]
|
||||
mov ebx,DWORD [52+edi]
|
||||
mov ecx,DWORD [56+edi]
|
||||
mov edx,DWORD [60+edi]
|
||||
bswap eax
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
mov eax,DWORD [64+edi]
|
||||
mov ebx,DWORD [68+edi]
|
||||
mov ecx,DWORD [72+edi]
|
||||
mov edx,DWORD [76+edi]
|
||||
bswap eax
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
mov eax,DWORD [80+edi]
|
||||
mov ebx,DWORD [84+edi]
|
||||
mov ecx,DWORD [88+edi]
|
||||
mov edx,DWORD [92+edi]
|
||||
bswap eax
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
mov eax,DWORD [96+edi]
|
||||
mov ebx,DWORD [100+edi]
|
||||
mov ecx,DWORD [104+edi]
|
||||
mov edx,DWORD [108+edi]
|
||||
bswap eax
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
mov eax,DWORD [112+edi]
|
||||
mov ebx,DWORD [116+edi]
|
||||
mov ecx,DWORD [120+edi]
|
||||
mov edx,DWORD [124+edi]
|
||||
bswap eax
|
||||
bswap ebx
|
||||
bswap ecx
|
||||
bswap edx
|
||||
push eax
|
||||
push ebx
|
||||
push ecx
|
||||
push edx
|
||||
add edi,128
|
||||
sub esp,72
|
||||
mov DWORD [204+esp],edi
|
||||
lea edi,[8+esp]
|
||||
mov ecx,16
|
||||
dd 2784229001
|
||||
align 16
|
||||
L$00300_15_x86:
|
||||
mov ecx,DWORD [40+esp]
|
||||
mov edx,DWORD [44+esp]
|
||||
mov esi,ecx
|
||||
shr ecx,9
|
||||
mov edi,edx
|
||||
shr edx,9
|
||||
mov ebx,ecx
|
||||
shl esi,14
|
||||
mov eax,edx
|
||||
shl edi,14
|
||||
xor ebx,esi
|
||||
shr ecx,5
|
||||
xor eax,edi
|
||||
shr edx,5
|
||||
xor eax,ecx
|
||||
shl esi,4
|
||||
xor ebx,edx
|
||||
shl edi,4
|
||||
xor ebx,esi
|
||||
shr ecx,4
|
||||
xor eax,edi
|
||||
shr edx,4
|
||||
xor eax,ecx
|
||||
shl esi,5
|
||||
xor ebx,edx
|
||||
shl edi,5
|
||||
xor eax,esi
|
||||
xor ebx,edi
|
||||
mov ecx,DWORD [48+esp]
|
||||
mov edx,DWORD [52+esp]
|
||||
mov esi,DWORD [56+esp]
|
||||
mov edi,DWORD [60+esp]
|
||||
add eax,DWORD [64+esp]
|
||||
adc ebx,DWORD [68+esp]
|
||||
xor ecx,esi
|
||||
xor edx,edi
|
||||
and ecx,DWORD [40+esp]
|
||||
and edx,DWORD [44+esp]
|
||||
add eax,DWORD [192+esp]
|
||||
adc ebx,DWORD [196+esp]
|
||||
xor ecx,esi
|
||||
xor edx,edi
|
||||
mov esi,DWORD [ebp]
|
||||
mov edi,DWORD [4+ebp]
|
||||
add eax,ecx
|
||||
adc ebx,edx
|
||||
mov ecx,DWORD [32+esp]
|
||||
mov edx,DWORD [36+esp]
|
||||
add eax,esi
|
||||
adc ebx,edi
|
||||
mov DWORD [esp],eax
|
||||
mov DWORD [4+esp],ebx
|
||||
add eax,ecx
|
||||
adc ebx,edx
|
||||
mov ecx,DWORD [8+esp]
|
||||
mov edx,DWORD [12+esp]
|
||||
mov DWORD [32+esp],eax
|
||||
mov DWORD [36+esp],ebx
|
||||
mov esi,ecx
|
||||
shr ecx,2
|
||||
mov edi,edx
|
||||
shr edx,2
|
||||
mov ebx,ecx
|
||||
shl esi,4
|
||||
mov eax,edx
|
||||
shl edi,4
|
||||
xor ebx,esi
|
||||
shr ecx,5
|
||||
xor eax,edi
|
||||
shr edx,5
|
||||
xor ebx,ecx
|
||||
shl esi,21
|
||||
xor eax,edx
|
||||
shl edi,21
|
||||
xor eax,esi
|
||||
shr ecx,21
|
||||
xor ebx,edi
|
||||
shr edx,21
|
||||
xor eax,ecx
|
||||
shl esi,5
|
||||
xor ebx,edx
|
||||
shl edi,5
|
||||
xor eax,esi
|
||||
xor ebx,edi
|
||||
mov ecx,DWORD [8+esp]
|
||||
mov edx,DWORD [12+esp]
|
||||
mov esi,DWORD [16+esp]
|
||||
mov edi,DWORD [20+esp]
|
||||
add eax,DWORD [esp]
|
||||
adc ebx,DWORD [4+esp]
|
||||
or ecx,esi
|
||||
or edx,edi
|
||||
and ecx,DWORD [24+esp]
|
||||
and edx,DWORD [28+esp]
|
||||
and esi,DWORD [8+esp]
|
||||
and edi,DWORD [12+esp]
|
||||
or ecx,esi
|
||||
or edx,edi
|
||||
add eax,ecx
|
||||
adc ebx,edx
|
||||
mov DWORD [esp],eax
|
||||
mov DWORD [4+esp],ebx
|
||||
mov dl,BYTE [ebp]
|
||||
sub esp,8
|
||||
lea ebp,[8+ebp]
|
||||
cmp dl,148
|
||||
jne NEAR L$00300_15_x86
|
||||
align 16
|
||||
L$00416_79_x86:
|
||||
mov ecx,DWORD [312+esp]
|
||||
mov edx,DWORD [316+esp]
|
||||
mov esi,ecx
|
||||
shr ecx,1
|
||||
mov edi,edx
|
||||
shr edx,1
|
||||
mov eax,ecx
|
||||
shl esi,24
|
||||
mov ebx,edx
|
||||
shl edi,24
|
||||
xor ebx,esi
|
||||
shr ecx,6
|
||||
xor eax,edi
|
||||
shr edx,6
|
||||
xor eax,ecx
|
||||
shl esi,7
|
||||
xor ebx,edx
|
||||
shl edi,1
|
||||
xor ebx,esi
|
||||
shr ecx,1
|
||||
xor eax,edi
|
||||
shr edx,1
|
||||
xor eax,ecx
|
||||
shl edi,6
|
||||
xor ebx,edx
|
||||
xor eax,edi
|
||||
mov DWORD [esp],eax
|
||||
mov DWORD [4+esp],ebx
|
||||
mov ecx,DWORD [208+esp]
|
||||
mov edx,DWORD [212+esp]
|
||||
mov esi,ecx
|
||||
shr ecx,6
|
||||
mov edi,edx
|
||||
shr edx,6
|
||||
mov eax,ecx
|
||||
shl esi,3
|
||||
mov ebx,edx
|
||||
shl edi,3
|
||||
xor eax,esi
|
||||
shr ecx,13
|
||||
xor ebx,edi
|
||||
shr edx,13
|
||||
xor eax,ecx
|
||||
shl esi,10
|
||||
xor ebx,edx
|
||||
shl edi,10
|
||||
xor ebx,esi
|
||||
shr ecx,10
|
||||
xor eax,edi
|
||||
shr edx,10
|
||||
xor ebx,ecx
|
||||
shl edi,13
|
||||
xor eax,edx
|
||||
xor eax,edi
|
||||
mov ecx,DWORD [320+esp]
|
||||
mov edx,DWORD [324+esp]
|
||||
add eax,DWORD [esp]
|
||||
adc ebx,DWORD [4+esp]
|
||||
mov esi,DWORD [248+esp]
|
||||
mov edi,DWORD [252+esp]
|
||||
add eax,ecx
|
||||
adc ebx,edx
|
||||
add eax,esi
|
||||
adc ebx,edi
|
||||
mov DWORD [192+esp],eax
|
||||
mov DWORD [196+esp],ebx
|
||||
mov ecx,DWORD [40+esp]
|
||||
mov edx,DWORD [44+esp]
|
||||
mov esi,ecx
|
||||
shr ecx,9
|
||||
mov edi,edx
|
||||
shr edx,9
|
||||
mov ebx,ecx
|
||||
shl esi,14
|
||||
mov eax,edx
|
||||
shl edi,14
|
||||
xor ebx,esi
|
||||
shr ecx,5
|
||||
xor eax,edi
|
||||
shr edx,5
|
||||
xor eax,ecx
|
||||
shl esi,4
|
||||
xor ebx,edx
|
||||
shl edi,4
|
||||
xor ebx,esi
|
||||
shr ecx,4
|
||||
xor eax,edi
|
||||
shr edx,4
|
||||
xor eax,ecx
|
||||
shl esi,5
|
||||
xor ebx,edx
|
||||
shl edi,5
|
||||
xor eax,esi
|
||||
xor ebx,edi
|
||||
mov ecx,DWORD [48+esp]
|
||||
mov edx,DWORD [52+esp]
|
||||
mov esi,DWORD [56+esp]
|
||||
mov edi,DWORD [60+esp]
|
||||
add eax,DWORD [64+esp]
|
||||
adc ebx,DWORD [68+esp]
|
||||
xor ecx,esi
|
||||
xor edx,edi
|
||||
and ecx,DWORD [40+esp]
|
||||
and edx,DWORD [44+esp]
|
||||
add eax,DWORD [192+esp]
|
||||
adc ebx,DWORD [196+esp]
|
||||
xor ecx,esi
|
||||
xor edx,edi
|
||||
mov esi,DWORD [ebp]
|
||||
mov edi,DWORD [4+ebp]
|
||||
add eax,ecx
|
||||
adc ebx,edx
|
||||
mov ecx,DWORD [32+esp]
|
||||
mov edx,DWORD [36+esp]
|
||||
add eax,esi
|
||||
adc ebx,edi
|
||||
mov DWORD [esp],eax
|
||||
mov DWORD [4+esp],ebx
|
||||
add eax,ecx
|
||||
adc ebx,edx
|
||||
mov ecx,DWORD [8+esp]
|
||||
mov edx,DWORD [12+esp]
|
||||
mov DWORD [32+esp],eax
|
||||
mov DWORD [36+esp],ebx
|
||||
mov esi,ecx
|
||||
shr ecx,2
|
||||
mov edi,edx
|
||||
shr edx,2
|
||||
mov ebx,ecx
|
||||
shl esi,4
|
||||
mov eax,edx
|
||||
shl edi,4
|
||||
xor ebx,esi
|
||||
shr ecx,5
|
||||
xor eax,edi
|
||||
shr edx,5
|
||||
xor ebx,ecx
|
||||
shl esi,21
|
||||
xor eax,edx
|
||||
shl edi,21
|
||||
xor eax,esi
|
||||
shr ecx,21
|
||||
xor ebx,edi
|
||||
shr edx,21
|
||||
xor eax,ecx
|
||||
shl esi,5
|
||||
xor ebx,edx
|
||||
shl edi,5
|
||||
xor eax,esi
|
||||
xor ebx,edi
|
||||
mov ecx,DWORD [8+esp]
|
||||
mov edx,DWORD [12+esp]
|
||||
mov esi,DWORD [16+esp]
|
||||
mov edi,DWORD [20+esp]
|
||||
add eax,DWORD [esp]
|
||||
adc ebx,DWORD [4+esp]
|
||||
or ecx,esi
|
||||
or edx,edi
|
||||
and ecx,DWORD [24+esp]
|
||||
and edx,DWORD [28+esp]
|
||||
and esi,DWORD [8+esp]
|
||||
and edi,DWORD [12+esp]
|
||||
or ecx,esi
|
||||
or edx,edi
|
||||
add eax,ecx
|
||||
adc ebx,edx
|
||||
mov DWORD [esp],eax
|
||||
mov DWORD [4+esp],ebx
|
||||
mov dl,BYTE [ebp]
|
||||
sub esp,8
|
||||
lea ebp,[8+ebp]
|
||||
cmp dl,23
|
||||
jne NEAR L$00416_79_x86
|
||||
mov esi,DWORD [840+esp]
|
||||
mov edi,DWORD [844+esp]
|
||||
mov eax,DWORD [esi]
|
||||
mov ebx,DWORD [4+esi]
|
||||
mov ecx,DWORD [8+esi]
|
||||
mov edx,DWORD [12+esi]
|
||||
add eax,DWORD [8+esp]
|
||||
adc ebx,DWORD [12+esp]
|
||||
mov DWORD [esi],eax
|
||||
mov DWORD [4+esi],ebx
|
||||
add ecx,DWORD [16+esp]
|
||||
adc edx,DWORD [20+esp]
|
||||
mov DWORD [8+esi],ecx
|
||||
mov DWORD [12+esi],edx
|
||||
mov eax,DWORD [16+esi]
|
||||
mov ebx,DWORD [20+esi]
|
||||
mov ecx,DWORD [24+esi]
|
||||
mov edx,DWORD [28+esi]
|
||||
add eax,DWORD [24+esp]
|
||||
adc ebx,DWORD [28+esp]
|
||||
mov DWORD [16+esi],eax
|
||||
mov DWORD [20+esi],ebx
|
||||
add ecx,DWORD [32+esp]
|
||||
adc edx,DWORD [36+esp]
|
||||
mov DWORD [24+esi],ecx
|
||||
mov DWORD [28+esi],edx
|
||||
mov eax,DWORD [32+esi]
|
||||
mov ebx,DWORD [36+esi]
|
||||
mov ecx,DWORD [40+esi]
|
||||
mov edx,DWORD [44+esi]
|
||||
add eax,DWORD [40+esp]
|
||||
adc ebx,DWORD [44+esp]
|
||||
mov DWORD [32+esi],eax
|
||||
mov DWORD [36+esi],ebx
|
||||
add ecx,DWORD [48+esp]
|
||||
adc edx,DWORD [52+esp]
|
||||
mov DWORD [40+esi],ecx
|
||||
mov DWORD [44+esi],edx
|
||||
mov eax,DWORD [48+esi]
|
||||
mov ebx,DWORD [52+esi]
|
||||
mov ecx,DWORD [56+esi]
|
||||
mov edx,DWORD [60+esi]
|
||||
add eax,DWORD [56+esp]
|
||||
adc ebx,DWORD [60+esp]
|
||||
mov DWORD [48+esi],eax
|
||||
mov DWORD [52+esi],ebx
|
||||
add ecx,DWORD [64+esp]
|
||||
adc edx,DWORD [68+esp]
|
||||
mov DWORD [56+esi],ecx
|
||||
mov DWORD [60+esi],edx
|
||||
add esp,840
|
||||
sub ebp,640
|
||||
cmp edi,DWORD [8+esp]
|
||||
jb NEAR L$002loop_x86
|
||||
mov esp,DWORD [12+esp]
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
align 64
|
||||
L$001K512:
|
||||
dd 3609767458,1116352408
|
||||
dd 602891725,1899447441
|
||||
dd 3964484399,3049323471
|
||||
dd 2173295548,3921009573
|
||||
dd 4081628472,961987163
|
||||
dd 3053834265,1508970993
|
||||
dd 2937671579,2453635748
|
||||
dd 3664609560,2870763221
|
||||
dd 2734883394,3624381080
|
||||
dd 1164996542,310598401
|
||||
dd 1323610764,607225278
|
||||
dd 3590304994,1426881987
|
||||
dd 4068182383,1925078388
|
||||
dd 991336113,2162078206
|
||||
dd 633803317,2614888103
|
||||
dd 3479774868,3248222580
|
||||
dd 2666613458,3835390401
|
||||
dd 944711139,4022224774
|
||||
dd 2341262773,264347078
|
||||
dd 2007800933,604807628
|
||||
dd 1495990901,770255983
|
||||
dd 1856431235,1249150122
|
||||
dd 3175218132,1555081692
|
||||
dd 2198950837,1996064986
|
||||
dd 3999719339,2554220882
|
||||
dd 766784016,2821834349
|
||||
dd 2566594879,2952996808
|
||||
dd 3203337956,3210313671
|
||||
dd 1034457026,3336571891
|
||||
dd 2466948901,3584528711
|
||||
dd 3758326383,113926993
|
||||
dd 168717936,338241895
|
||||
dd 1188179964,666307205
|
||||
dd 1546045734,773529912
|
||||
dd 1522805485,1294757372
|
||||
dd 2643833823,1396182291
|
||||
dd 2343527390,1695183700
|
||||
dd 1014477480,1986661051
|
||||
dd 1206759142,2177026350
|
||||
dd 344077627,2456956037
|
||||
dd 1290863460,2730485921
|
||||
dd 3158454273,2820302411
|
||||
dd 3505952657,3259730800
|
||||
dd 106217008,3345764771
|
||||
dd 3606008344,3516065817
|
||||
dd 1432725776,3600352804
|
||||
dd 1467031594,4094571909
|
||||
dd 851169720,275423344
|
||||
dd 3100823752,430227734
|
||||
dd 1363258195,506948616
|
||||
dd 3750685593,659060556
|
||||
dd 3785050280,883997877
|
||||
dd 3318307427,958139571
|
||||
dd 3812723403,1322822218
|
||||
dd 2003034995,1537002063
|
||||
dd 3602036899,1747873779
|
||||
dd 1575990012,1955562222
|
||||
dd 1125592928,2024104815
|
||||
dd 2716904306,2227730452
|
||||
dd 442776044,2361852424
|
||||
dd 593698344,2428436474
|
||||
dd 3733110249,2756734187
|
||||
dd 2999351573,3204031479
|
||||
dd 3815920427,3329325298
|
||||
dd 3928383900,3391569614
|
||||
dd 566280711,3515267271
|
||||
dd 3454069534,3940187606
|
||||
dd 4000239992,4118630271
|
||||
dd 1914138554,116418474
|
||||
dd 2731055270,174292421
|
||||
dd 3203993006,289380356
|
||||
dd 320620315,460393269
|
||||
dd 587496836,685471733
|
||||
dd 1086792851,852142971
|
||||
dd 365543100,1017036298
|
||||
dd 2618297676,1126000580
|
||||
dd 3409855158,1288033470
|
||||
dd 4234509866,1501505948
|
||||
dd 987167468,1607167915
|
||||
dd 1246189591,1816402316
|
||||
dd 67438087,66051
|
||||
dd 202182159,134810123
|
||||
db 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
|
||||
db 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
|
||||
db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
|
||||
db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
|
||||
db 62,0
|
|
@ -0,0 +1,433 @@
|
|||
; WARNING: do not edit!
|
||||
; Generated from openssl/crypto/x86cpuid.pl
|
||||
;
|
||||
; Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
;
|
||||
; Licensed under the OpenSSL license (the "License"). You may not use
|
||||
; this file except in compliance with the License. You can obtain a copy
|
||||
; in the file LICENSE in the source distribution or at
|
||||
; https://www.openssl.org/source/license.html
|
||||
|
||||
%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 _OPENSSL_ia32_cpuid
|
||||
align 16
|
||||
_OPENSSL_ia32_cpuid:
|
||||
L$_OPENSSL_ia32_cpuid_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
xor edx,edx
|
||||
pushfd
|
||||
pop eax
|
||||
mov ecx,eax
|
||||
xor eax,2097152
|
||||
push eax
|
||||
popfd
|
||||
pushfd
|
||||
pop eax
|
||||
xor ecx,eax
|
||||
xor eax,eax
|
||||
mov esi,DWORD [20+esp]
|
||||
mov DWORD [8+esi],eax
|
||||
bt ecx,21
|
||||
jnc NEAR L$000nocpuid
|
||||
cpuid
|
||||
mov edi,eax
|
||||
xor eax,eax
|
||||
cmp ebx,1970169159
|
||||
setne al
|
||||
mov ebp,eax
|
||||
cmp edx,1231384169
|
||||
setne al
|
||||
or ebp,eax
|
||||
cmp ecx,1818588270
|
||||
setne al
|
||||
or ebp,eax
|
||||
jz NEAR L$001intel
|
||||
cmp ebx,1752462657
|
||||
setne al
|
||||
mov esi,eax
|
||||
cmp edx,1769238117
|
||||
setne al
|
||||
or esi,eax
|
||||
cmp ecx,1145913699
|
||||
setne al
|
||||
or esi,eax
|
||||
jnz NEAR L$001intel
|
||||
mov eax,2147483648
|
||||
cpuid
|
||||
cmp eax,2147483649
|
||||
jb NEAR L$001intel
|
||||
mov esi,eax
|
||||
mov eax,2147483649
|
||||
cpuid
|
||||
or ebp,ecx
|
||||
and ebp,2049
|
||||
cmp esi,2147483656
|
||||
jb NEAR L$001intel
|
||||
mov eax,2147483656
|
||||
cpuid
|
||||
movzx esi,cl
|
||||
inc esi
|
||||
mov eax,1
|
||||
xor ecx,ecx
|
||||
cpuid
|
||||
bt edx,28
|
||||
jnc NEAR L$002generic
|
||||
shr ebx,16
|
||||
and ebx,255
|
||||
cmp ebx,esi
|
||||
ja NEAR L$002generic
|
||||
and edx,4026531839
|
||||
jmp NEAR L$002generic
|
||||
L$001intel:
|
||||
cmp edi,4
|
||||
mov esi,-1
|
||||
jb NEAR L$003nocacheinfo
|
||||
mov eax,4
|
||||
mov ecx,0
|
||||
cpuid
|
||||
mov esi,eax
|
||||
shr esi,14
|
||||
and esi,4095
|
||||
L$003nocacheinfo:
|
||||
mov eax,1
|
||||
xor ecx,ecx
|
||||
cpuid
|
||||
and edx,3220176895
|
||||
cmp ebp,0
|
||||
jne NEAR L$004notintel
|
||||
or edx,1073741824
|
||||
and ah,15
|
||||
cmp ah,15
|
||||
jne NEAR L$004notintel
|
||||
or edx,1048576
|
||||
L$004notintel:
|
||||
bt edx,28
|
||||
jnc NEAR L$002generic
|
||||
and edx,4026531839
|
||||
cmp esi,0
|
||||
je NEAR L$002generic
|
||||
or edx,268435456
|
||||
shr ebx,16
|
||||
cmp bl,1
|
||||
ja NEAR L$002generic
|
||||
and edx,4026531839
|
||||
L$002generic:
|
||||
and ebp,2048
|
||||
and ecx,4294965247
|
||||
mov esi,edx
|
||||
or ebp,ecx
|
||||
cmp edi,7
|
||||
mov edi,DWORD [20+esp]
|
||||
jb NEAR L$005no_extended_info
|
||||
mov eax,7
|
||||
xor ecx,ecx
|
||||
cpuid
|
||||
mov DWORD [8+edi],ebx
|
||||
L$005no_extended_info:
|
||||
bt ebp,27
|
||||
jnc NEAR L$006clear_avx
|
||||
xor ecx,ecx
|
||||
db 15,1,208
|
||||
and eax,6
|
||||
cmp eax,6
|
||||
je NEAR L$007done
|
||||
cmp eax,2
|
||||
je NEAR L$006clear_avx
|
||||
L$008clear_xmm:
|
||||
and ebp,4261412861
|
||||
and esi,4278190079
|
||||
L$006clear_avx:
|
||||
and ebp,4026525695
|
||||
and DWORD [8+edi],4294967263
|
||||
L$007done:
|
||||
mov eax,esi
|
||||
mov edx,ebp
|
||||
L$000nocpuid:
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
;extern _OPENSSL_ia32cap_P
|
||||
global _OPENSSL_rdtsc
|
||||
align 16
|
||||
_OPENSSL_rdtsc:
|
||||
L$_OPENSSL_rdtsc_begin:
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
lea ecx,[_OPENSSL_ia32cap_P]
|
||||
bt DWORD [ecx],4
|
||||
jnc NEAR L$009notsc
|
||||
rdtsc
|
||||
L$009notsc:
|
||||
ret
|
||||
global _OPENSSL_instrument_halt
|
||||
align 16
|
||||
_OPENSSL_instrument_halt:
|
||||
L$_OPENSSL_instrument_halt_begin:
|
||||
lea ecx,[_OPENSSL_ia32cap_P]
|
||||
bt DWORD [ecx],4
|
||||
jnc NEAR L$010nohalt
|
||||
dd 2421723150
|
||||
and eax,3
|
||||
jnz NEAR L$010nohalt
|
||||
pushfd
|
||||
pop eax
|
||||
bt eax,9
|
||||
jnc NEAR L$010nohalt
|
||||
rdtsc
|
||||
push edx
|
||||
push eax
|
||||
hlt
|
||||
rdtsc
|
||||
sub eax,DWORD [esp]
|
||||
sbb edx,DWORD [4+esp]
|
||||
add esp,8
|
||||
ret
|
||||
L$010nohalt:
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
ret
|
||||
global _OPENSSL_far_spin
|
||||
align 16
|
||||
_OPENSSL_far_spin:
|
||||
L$_OPENSSL_far_spin_begin:
|
||||
pushfd
|
||||
pop eax
|
||||
bt eax,9
|
||||
jnc NEAR L$011nospin
|
||||
mov eax,DWORD [4+esp]
|
||||
mov ecx,DWORD [8+esp]
|
||||
dd 2430111262
|
||||
xor eax,eax
|
||||
mov edx,DWORD [ecx]
|
||||
jmp NEAR L$012spin
|
||||
align 16
|
||||
L$012spin:
|
||||
inc eax
|
||||
cmp edx,DWORD [ecx]
|
||||
je NEAR L$012spin
|
||||
dd 529567888
|
||||
ret
|
||||
L$011nospin:
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
ret
|
||||
global _OPENSSL_wipe_cpu
|
||||
align 16
|
||||
_OPENSSL_wipe_cpu:
|
||||
L$_OPENSSL_wipe_cpu_begin:
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
lea ecx,[_OPENSSL_ia32cap_P]
|
||||
mov ecx,DWORD [ecx]
|
||||
bt DWORD [ecx],1
|
||||
jnc NEAR L$013no_x87
|
||||
dd 4007259865,4007259865,4007259865,4007259865,2430851995
|
||||
L$013no_x87:
|
||||
lea eax,[4+esp]
|
||||
ret
|
||||
global _OPENSSL_atomic_add
|
||||
align 16
|
||||
_OPENSSL_atomic_add:
|
||||
L$_OPENSSL_atomic_add_begin:
|
||||
mov edx,DWORD [4+esp]
|
||||
mov ecx,DWORD [8+esp]
|
||||
push ebx
|
||||
nop
|
||||
mov eax,DWORD [edx]
|
||||
L$014spin:
|
||||
lea ebx,[ecx*1+eax]
|
||||
nop
|
||||
dd 447811568
|
||||
jne NEAR L$014spin
|
||||
mov eax,ebx
|
||||
pop ebx
|
||||
ret
|
||||
global _OPENSSL_cleanse
|
||||
align 16
|
||||
_OPENSSL_cleanse:
|
||||
L$_OPENSSL_cleanse_begin:
|
||||
mov edx,DWORD [4+esp]
|
||||
mov ecx,DWORD [8+esp]
|
||||
xor eax,eax
|
||||
cmp ecx,7
|
||||
jae NEAR L$015lot
|
||||
cmp ecx,0
|
||||
je NEAR L$016ret
|
||||
L$017little:
|
||||
mov BYTE [edx],al
|
||||
sub ecx,1
|
||||
lea edx,[1+edx]
|
||||
jnz NEAR L$017little
|
||||
L$016ret:
|
||||
ret
|
||||
align 16
|
||||
L$015lot:
|
||||
test edx,3
|
||||
jz NEAR L$018aligned
|
||||
mov BYTE [edx],al
|
||||
lea ecx,[ecx-1]
|
||||
lea edx,[1+edx]
|
||||
jmp NEAR L$015lot
|
||||
L$018aligned:
|
||||
mov DWORD [edx],eax
|
||||
lea ecx,[ecx-4]
|
||||
test ecx,-4
|
||||
lea edx,[4+edx]
|
||||
jnz NEAR L$018aligned
|
||||
cmp ecx,0
|
||||
jne NEAR L$017little
|
||||
ret
|
||||
global _CRYPTO_memcmp
|
||||
align 16
|
||||
_CRYPTO_memcmp:
|
||||
L$_CRYPTO_memcmp_begin:
|
||||
push esi
|
||||
push edi
|
||||
mov esi,DWORD [12+esp]
|
||||
mov edi,DWORD [16+esp]
|
||||
mov ecx,DWORD [20+esp]
|
||||
xor eax,eax
|
||||
xor edx,edx
|
||||
cmp ecx,0
|
||||
je NEAR L$019no_data
|
||||
L$020loop:
|
||||
mov dl,BYTE [esi]
|
||||
lea esi,[1+esi]
|
||||
xor dl,BYTE [edi]
|
||||
lea edi,[1+edi]
|
||||
or al,dl
|
||||
dec ecx
|
||||
jnz NEAR L$020loop
|
||||
neg eax
|
||||
shr eax,31
|
||||
L$019no_data:
|
||||
pop edi
|
||||
pop esi
|
||||
ret
|
||||
global _OPENSSL_instrument_bus
|
||||
align 16
|
||||
_OPENSSL_instrument_bus:
|
||||
L$_OPENSSL_instrument_bus_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
mov eax,0
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
global _OPENSSL_instrument_bus2
|
||||
align 16
|
||||
_OPENSSL_instrument_bus2:
|
||||
L$_OPENSSL_instrument_bus2_begin:
|
||||
push ebp
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
mov eax,0
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
pop ebp
|
||||
ret
|
||||
global _OPENSSL_ia32_rdrand_bytes
|
||||
align 16
|
||||
_OPENSSL_ia32_rdrand_bytes:
|
||||
L$_OPENSSL_ia32_rdrand_bytes_begin:
|
||||
push edi
|
||||
push ebx
|
||||
xor eax,eax
|
||||
mov edi,DWORD [12+esp]
|
||||
mov ebx,DWORD [16+esp]
|
||||
cmp ebx,0
|
||||
je NEAR L$021done
|
||||
mov ecx,8
|
||||
L$022loop:
|
||||
db 15,199,242
|
||||
jc NEAR L$023break
|
||||
loop L$022loop
|
||||
jmp NEAR L$021done
|
||||
align 16
|
||||
L$023break:
|
||||
cmp ebx,4
|
||||
jb NEAR L$024tail
|
||||
mov DWORD [edi],edx
|
||||
lea edi,[4+edi]
|
||||
add eax,4
|
||||
sub ebx,4
|
||||
jz NEAR L$021done
|
||||
mov ecx,8
|
||||
jmp NEAR L$022loop
|
||||
align 16
|
||||
L$024tail:
|
||||
mov BYTE [edi],dl
|
||||
lea edi,[1+edi]
|
||||
inc eax
|
||||
shr edx,8
|
||||
dec ebx
|
||||
jnz NEAR L$024tail
|
||||
L$021done:
|
||||
xor edx,edx
|
||||
pop ebx
|
||||
pop edi
|
||||
ret
|
||||
global _OPENSSL_ia32_rdseed_bytes
|
||||
align 16
|
||||
_OPENSSL_ia32_rdseed_bytes:
|
||||
L$_OPENSSL_ia32_rdseed_bytes_begin:
|
||||
push edi
|
||||
push ebx
|
||||
xor eax,eax
|
||||
mov edi,DWORD [12+esp]
|
||||
mov ebx,DWORD [16+esp]
|
||||
cmp ebx,0
|
||||
je NEAR L$025done
|
||||
mov ecx,8
|
||||
L$026loop:
|
||||
db 15,199,250
|
||||
jc NEAR L$027break
|
||||
loop L$026loop
|
||||
jmp NEAR L$025done
|
||||
align 16
|
||||
L$027break:
|
||||
cmp ebx,4
|
||||
jb NEAR L$028tail
|
||||
mov DWORD [edi],edx
|
||||
lea edi,[4+edi]
|
||||
add eax,4
|
||||
sub ebx,4
|
||||
jz NEAR L$025done
|
||||
mov ecx,8
|
||||
jmp NEAR L$026loop
|
||||
align 16
|
||||
L$028tail:
|
||||
mov BYTE [edi],dl
|
||||
lea edi,[1+edi]
|
||||
inc eax
|
||||
shr edx,8
|
||||
dec ebx
|
||||
jnz NEAR L$028tail
|
||||
L$025done:
|
||||
xor edx,edx
|
||||
pop ebx
|
||||
pop edi
|
||||
ret
|
||||
segment .bss
|
||||
common _OPENSSL_ia32cap_P 16
|
||||
segment .CRT$XCU data align=4
|
||||
extern _OPENSSL_cpuid_setup
|
||||
dd _OPENSSL_cpuid_setup
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,670 @@
|
|||
# WARNING: do not edit!
|
||||
# Generated from openssl/crypto/aes/asm/vpaes-x86.pl
|
||||
#
|
||||
# Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the OpenSSL license (the "License"). You may not use
|
||||
# this file except in compliance with the License. You can obtain a copy
|
||||
# in the file LICENSE in the source distribution or at
|
||||
# https://www.openssl.org/source/license.html
|
||||
|
||||
.text
|
||||
.align 64
|
||||
.L_vpaes_consts:
|
||||
.long 218628480,235210255,168496130,67568393
|
||||
.long 252381056,17041926,33884169,51187212
|
||||
.long 252645135,252645135,252645135,252645135
|
||||
.long 1512730624,3266504856,1377990664,3401244816
|
||||
.long 830229760,1275146365,2969422977,3447763452
|
||||
.long 3411033600,2979783055,338359620,2782886510
|
||||
.long 4209124096,907596821,221174255,1006095553
|
||||
.long 191964160,3799684038,3164090317,1589111125
|
||||
.long 182528256,1777043520,2877432650,3265356744
|
||||
.long 1874708224,3503451415,3305285752,363511674
|
||||
.long 1606117888,3487855781,1093350906,2384367825
|
||||
.long 197121,67569157,134941193,202313229
|
||||
.long 67569157,134941193,202313229,197121
|
||||
.long 134941193,202313229,197121,67569157
|
||||
.long 202313229,197121,67569157,134941193
|
||||
.long 33619971,100992007,168364043,235736079
|
||||
.long 235736079,33619971,100992007,168364043
|
||||
.long 168364043,235736079,33619971,100992007
|
||||
.long 100992007,168364043,235736079,33619971
|
||||
.long 50462976,117835012,185207048,252579084
|
||||
.long 252314880,51251460,117574920,184942860
|
||||
.long 184682752,252054788,50987272,118359308
|
||||
.long 118099200,185467140,251790600,50727180
|
||||
.long 2946363062,528716217,1300004225,1881839624
|
||||
.long 1532713819,1532713819,1532713819,1532713819
|
||||
.long 3602276352,4288629033,3737020424,4153884961
|
||||
.long 1354558464,32357713,2958822624,3775749553
|
||||
.long 1201988352,132424512,1572796698,503232858
|
||||
.long 2213177600,1597421020,4103937655,675398315
|
||||
.long 2749646592,4273543773,1511898873,121693092
|
||||
.long 3040248576,1103263732,2871565598,1608280554
|
||||
.long 2236667136,2588920351,482954393,64377734
|
||||
.long 3069987328,291237287,2117370568,3650299247
|
||||
.long 533321216,3573750986,2572112006,1401264716
|
||||
.long 1339849704,2721158661,548607111,3445553514
|
||||
.long 2128193280,3054596040,2183486460,1257083700
|
||||
.long 655635200,1165381986,3923443150,2344132524
|
||||
.long 190078720,256924420,290342170,357187870
|
||||
.long 1610966272,2263057382,4103205268,309794674
|
||||
.long 2592527872,2233205587,1335446729,3402964816
|
||||
.long 3973531904,3225098121,3002836325,1918774430
|
||||
.long 3870401024,2102906079,2284471353,4117666579
|
||||
.long 617007872,1021508343,366931923,691083277
|
||||
.long 2528395776,3491914898,2968704004,1613121270
|
||||
.long 3445188352,3247741094,844474987,4093578302
|
||||
.long 651481088,1190302358,1689581232,574775300
|
||||
.long 4289380608,206939853,2555985458,2489840491
|
||||
.long 2130264064,327674451,3566485037,3349835193
|
||||
.long 2470714624,316102159,3636825756,3393945945
|
||||
.byte 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105
|
||||
.byte 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83
|
||||
.byte 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117
|
||||
.byte 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105
|
||||
.byte 118,101,114,115,105,116,121,41,0
|
||||
.align 64
|
||||
.type _vpaes_preheat,@function
|
||||
.align 16
|
||||
_vpaes_preheat:
|
||||
addl (%esp),%ebp
|
||||
movdqa -48(%ebp),%xmm7
|
||||
movdqa -16(%ebp),%xmm6
|
||||
ret
|
||||
.size _vpaes_preheat,.-_vpaes_preheat
|
||||
.type _vpaes_encrypt_core,@function
|
||||
.align 16
|
||||
_vpaes_encrypt_core:
|
||||
movl $16,%ecx
|
||||
movl 240(%edx),%eax
|
||||
movdqa %xmm6,%xmm1
|
||||
movdqa (%ebp),%xmm2
|
||||
pandn %xmm0,%xmm1
|
||||
pand %xmm6,%xmm0
|
||||
movdqu (%edx),%xmm5
|
||||
.byte 102,15,56,0,208
|
||||
movdqa 16(%ebp),%xmm0
|
||||
pxor %xmm5,%xmm2
|
||||
psrld $4,%xmm1
|
||||
addl $16,%edx
|
||||
.byte 102,15,56,0,193
|
||||
leal 192(%ebp),%ebx
|
||||
pxor %xmm2,%xmm0
|
||||
jmp .L000enc_entry
|
||||
.align 16
|
||||
.L001enc_loop:
|
||||
movdqa 32(%ebp),%xmm4
|
||||
movdqa 48(%ebp),%xmm0
|
||||
.byte 102,15,56,0,226
|
||||
.byte 102,15,56,0,195
|
||||
pxor %xmm5,%xmm4
|
||||
movdqa 64(%ebp),%xmm5
|
||||
pxor %xmm4,%xmm0
|
||||
movdqa -64(%ebx,%ecx,1),%xmm1
|
||||
.byte 102,15,56,0,234
|
||||
movdqa 80(%ebp),%xmm2
|
||||
movdqa (%ebx,%ecx,1),%xmm4
|
||||
.byte 102,15,56,0,211
|
||||
movdqa %xmm0,%xmm3
|
||||
pxor %xmm5,%xmm2
|
||||
.byte 102,15,56,0,193
|
||||
addl $16,%edx
|
||||
pxor %xmm2,%xmm0
|
||||
.byte 102,15,56,0,220
|
||||
addl $16,%ecx
|
||||
pxor %xmm0,%xmm3
|
||||
.byte 102,15,56,0,193
|
||||
andl $48,%ecx
|
||||
subl $1,%eax
|
||||
pxor %xmm3,%xmm0
|
||||
.L000enc_entry:
|
||||
movdqa %xmm6,%xmm1
|
||||
movdqa -32(%ebp),%xmm5
|
||||
pandn %xmm0,%xmm1
|
||||
psrld $4,%xmm1
|
||||
pand %xmm6,%xmm0
|
||||
.byte 102,15,56,0,232
|
||||
movdqa %xmm7,%xmm3
|
||||
pxor %xmm1,%xmm0
|
||||
.byte 102,15,56,0,217
|
||||
movdqa %xmm7,%xmm4
|
||||
pxor %xmm5,%xmm3
|
||||
.byte 102,15,56,0,224
|
||||
movdqa %xmm7,%xmm2
|
||||
pxor %xmm5,%xmm4
|
||||
.byte 102,15,56,0,211
|
||||
movdqa %xmm7,%xmm3
|
||||
pxor %xmm0,%xmm2
|
||||
.byte 102,15,56,0,220
|
||||
movdqu (%edx),%xmm5
|
||||
pxor %xmm1,%xmm3
|
||||
jnz .L001enc_loop
|
||||
movdqa 96(%ebp),%xmm4
|
||||
movdqa 112(%ebp),%xmm0
|
||||
.byte 102,15,56,0,226
|
||||
pxor %xmm5,%xmm4
|
||||
.byte 102,15,56,0,195
|
||||
movdqa 64(%ebx,%ecx,1),%xmm1
|
||||
pxor %xmm4,%xmm0
|
||||
.byte 102,15,56,0,193
|
||||
ret
|
||||
.size _vpaes_encrypt_core,.-_vpaes_encrypt_core
|
||||
.type _vpaes_decrypt_core,@function
|
||||
.align 16
|
||||
_vpaes_decrypt_core:
|
||||
leal 608(%ebp),%ebx
|
||||
movl 240(%edx),%eax
|
||||
movdqa %xmm6,%xmm1
|
||||
movdqa -64(%ebx),%xmm2
|
||||
pandn %xmm0,%xmm1
|
||||
movl %eax,%ecx
|
||||
psrld $4,%xmm1
|
||||
movdqu (%edx),%xmm5
|
||||
shll $4,%ecx
|
||||
pand %xmm6,%xmm0
|
||||
.byte 102,15,56,0,208
|
||||
movdqa -48(%ebx),%xmm0
|
||||
xorl $48,%ecx
|
||||
.byte 102,15,56,0,193
|
||||
andl $48,%ecx
|
||||
pxor %xmm5,%xmm2
|
||||
movdqa 176(%ebp),%xmm5
|
||||
pxor %xmm2,%xmm0
|
||||
addl $16,%edx
|
||||
leal -352(%ebx,%ecx,1),%ecx
|
||||
jmp .L002dec_entry
|
||||
.align 16
|
||||
.L003dec_loop:
|
||||
movdqa -32(%ebx),%xmm4
|
||||
movdqa -16(%ebx),%xmm1
|
||||
.byte 102,15,56,0,226
|
||||
.byte 102,15,56,0,203
|
||||
pxor %xmm4,%xmm0
|
||||
movdqa (%ebx),%xmm4
|
||||
pxor %xmm1,%xmm0
|
||||
movdqa 16(%ebx),%xmm1
|
||||
.byte 102,15,56,0,226
|
||||
.byte 102,15,56,0,197
|
||||
.byte 102,15,56,0,203
|
||||
pxor %xmm4,%xmm0
|
||||
movdqa 32(%ebx),%xmm4
|
||||
pxor %xmm1,%xmm0
|
||||
movdqa 48(%ebx),%xmm1
|
||||
.byte 102,15,56,0,226
|
||||
.byte 102,15,56,0,197
|
||||
.byte 102,15,56,0,203
|
||||
pxor %xmm4,%xmm0
|
||||
movdqa 64(%ebx),%xmm4
|
||||
pxor %xmm1,%xmm0
|
||||
movdqa 80(%ebx),%xmm1
|
||||
.byte 102,15,56,0,226
|
||||
.byte 102,15,56,0,197
|
||||
.byte 102,15,56,0,203
|
||||
pxor %xmm4,%xmm0
|
||||
addl $16,%edx
|
||||
.byte 102,15,58,15,237,12
|
||||
pxor %xmm1,%xmm0
|
||||
subl $1,%eax
|
||||
.L002dec_entry:
|
||||
movdqa %xmm6,%xmm1
|
||||
movdqa -32(%ebp),%xmm2
|
||||
pandn %xmm0,%xmm1
|
||||
pand %xmm6,%xmm0
|
||||
psrld $4,%xmm1
|
||||
.byte 102,15,56,0,208
|
||||
movdqa %xmm7,%xmm3
|
||||
pxor %xmm1,%xmm0
|
||||
.byte 102,15,56,0,217
|
||||
movdqa %xmm7,%xmm4
|
||||
pxor %xmm2,%xmm3
|
||||
.byte 102,15,56,0,224
|
||||
pxor %xmm2,%xmm4
|
||||
movdqa %xmm7,%xmm2
|
||||
.byte 102,15,56,0,211
|
||||
movdqa %xmm7,%xmm3
|
||||
pxor %xmm0,%xmm2
|
||||
.byte 102,15,56,0,220
|
||||
movdqu (%edx),%xmm0
|
||||
pxor %xmm1,%xmm3
|
||||
jnz .L003dec_loop
|
||||
movdqa 96(%ebx),%xmm4
|
||||
.byte 102,15,56,0,226
|
||||
pxor %xmm0,%xmm4
|
||||
movdqa 112(%ebx),%xmm0
|
||||
movdqa (%ecx),%xmm2
|
||||
.byte 102,15,56,0,195
|
||||
pxor %xmm4,%xmm0
|
||||
.byte 102,15,56,0,194
|
||||
ret
|
||||
.size _vpaes_decrypt_core,.-_vpaes_decrypt_core
|
||||
.type _vpaes_schedule_core,@function
|
||||
.align 16
|
||||
_vpaes_schedule_core:
|
||||
addl (%esp),%ebp
|
||||
movdqu (%esi),%xmm0
|
||||
movdqa 320(%ebp),%xmm2
|
||||
movdqa %xmm0,%xmm3
|
||||
leal (%ebp),%ebx
|
||||
movdqa %xmm2,4(%esp)
|
||||
call _vpaes_schedule_transform
|
||||
movdqa %xmm0,%xmm7
|
||||
testl %edi,%edi
|
||||
jnz .L004schedule_am_decrypting
|
||||
movdqu %xmm0,(%edx)
|
||||
jmp .L005schedule_go
|
||||
.L004schedule_am_decrypting:
|
||||
movdqa 256(%ebp,%ecx,1),%xmm1
|
||||
.byte 102,15,56,0,217
|
||||
movdqu %xmm3,(%edx)
|
||||
xorl $48,%ecx
|
||||
.L005schedule_go:
|
||||
cmpl $192,%eax
|
||||
ja .L006schedule_256
|
||||
je .L007schedule_192
|
||||
.L008schedule_128:
|
||||
movl $10,%eax
|
||||
.L009loop_schedule_128:
|
||||
call _vpaes_schedule_round
|
||||
decl %eax
|
||||
jz .L010schedule_mangle_last
|
||||
call _vpaes_schedule_mangle
|
||||
jmp .L009loop_schedule_128
|
||||
.align 16
|
||||
.L007schedule_192:
|
||||
movdqu 8(%esi),%xmm0
|
||||
call _vpaes_schedule_transform
|
||||
movdqa %xmm0,%xmm6
|
||||
pxor %xmm4,%xmm4
|
||||
movhlps %xmm4,%xmm6
|
||||
movl $4,%eax
|
||||
.L011loop_schedule_192:
|
||||
call _vpaes_schedule_round
|
||||
.byte 102,15,58,15,198,8
|
||||
call _vpaes_schedule_mangle
|
||||
call _vpaes_schedule_192_smear
|
||||
call _vpaes_schedule_mangle
|
||||
call _vpaes_schedule_round
|
||||
decl %eax
|
||||
jz .L010schedule_mangle_last
|
||||
call _vpaes_schedule_mangle
|
||||
call _vpaes_schedule_192_smear
|
||||
jmp .L011loop_schedule_192
|
||||
.align 16
|
||||
.L006schedule_256:
|
||||
movdqu 16(%esi),%xmm0
|
||||
call _vpaes_schedule_transform
|
||||
movl $7,%eax
|
||||
.L012loop_schedule_256:
|
||||
call _vpaes_schedule_mangle
|
||||
movdqa %xmm0,%xmm6
|
||||
call _vpaes_schedule_round
|
||||
decl %eax
|
||||
jz .L010schedule_mangle_last
|
||||
call _vpaes_schedule_mangle
|
||||
pshufd $255,%xmm0,%xmm0
|
||||
movdqa %xmm7,20(%esp)
|
||||
movdqa %xmm6,%xmm7
|
||||
call .L_vpaes_schedule_low_round
|
||||
movdqa 20(%esp),%xmm7
|
||||
jmp .L012loop_schedule_256
|
||||
.align 16
|
||||
.L010schedule_mangle_last:
|
||||
leal 384(%ebp),%ebx
|
||||
testl %edi,%edi
|
||||
jnz .L013schedule_mangle_last_dec
|
||||
movdqa 256(%ebp,%ecx,1),%xmm1
|
||||
.byte 102,15,56,0,193
|
||||
leal 352(%ebp),%ebx
|
||||
addl $32,%edx
|
||||
.L013schedule_mangle_last_dec:
|
||||
addl $-16,%edx
|
||||
pxor 336(%ebp),%xmm0
|
||||
call _vpaes_schedule_transform
|
||||
movdqu %xmm0,(%edx)
|
||||
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
|
||||
.size _vpaes_schedule_core,.-_vpaes_schedule_core
|
||||
.type _vpaes_schedule_192_smear,@function
|
||||
.align 16
|
||||
_vpaes_schedule_192_smear:
|
||||
pshufd $128,%xmm6,%xmm1
|
||||
pshufd $254,%xmm7,%xmm0
|
||||
pxor %xmm1,%xmm6
|
||||
pxor %xmm1,%xmm1
|
||||
pxor %xmm0,%xmm6
|
||||
movdqa %xmm6,%xmm0
|
||||
movhlps %xmm1,%xmm6
|
||||
ret
|
||||
.size _vpaes_schedule_192_smear,.-_vpaes_schedule_192_smear
|
||||
.type _vpaes_schedule_round,@function
|
||||
.align 16
|
||||
_vpaes_schedule_round:
|
||||
movdqa 8(%esp),%xmm2
|
||||
pxor %xmm1,%xmm1
|
||||
.byte 102,15,58,15,202,15
|
||||
.byte 102,15,58,15,210,15
|
||||
pxor %xmm1,%xmm7
|
||||
pshufd $255,%xmm0,%xmm0
|
||||
.byte 102,15,58,15,192,1
|
||||
movdqa %xmm2,8(%esp)
|
||||
.L_vpaes_schedule_low_round:
|
||||
movdqa %xmm7,%xmm1
|
||||
pslldq $4,%xmm7
|
||||
pxor %xmm1,%xmm7
|
||||
movdqa %xmm7,%xmm1
|
||||
pslldq $8,%xmm7
|
||||
pxor %xmm1,%xmm7
|
||||
pxor 336(%ebp),%xmm7
|
||||
movdqa -16(%ebp),%xmm4
|
||||
movdqa -48(%ebp),%xmm5
|
||||
movdqa %xmm4,%xmm1
|
||||
pandn %xmm0,%xmm1
|
||||
psrld $4,%xmm1
|
||||
pand %xmm4,%xmm0
|
||||
movdqa -32(%ebp),%xmm2
|
||||
.byte 102,15,56,0,208
|
||||
pxor %xmm1,%xmm0
|
||||
movdqa %xmm5,%xmm3
|
||||
.byte 102,15,56,0,217
|
||||
pxor %xmm2,%xmm3
|
||||
movdqa %xmm5,%xmm4
|
||||
.byte 102,15,56,0,224
|
||||
pxor %xmm2,%xmm4
|
||||
movdqa %xmm5,%xmm2
|
||||
.byte 102,15,56,0,211
|
||||
pxor %xmm0,%xmm2
|
||||
movdqa %xmm5,%xmm3
|
||||
.byte 102,15,56,0,220
|
||||
pxor %xmm1,%xmm3
|
||||
movdqa 32(%ebp),%xmm4
|
||||
.byte 102,15,56,0,226
|
||||
movdqa 48(%ebp),%xmm0
|
||||
.byte 102,15,56,0,195
|
||||
pxor %xmm4,%xmm0
|
||||
pxor %xmm7,%xmm0
|
||||
movdqa %xmm0,%xmm7
|
||||
ret
|
||||
.size _vpaes_schedule_round,.-_vpaes_schedule_round
|
||||
.type _vpaes_schedule_transform,@function
|
||||
.align 16
|
||||
_vpaes_schedule_transform:
|
||||
movdqa -16(%ebp),%xmm2
|
||||
movdqa %xmm2,%xmm1
|
||||
pandn %xmm0,%xmm1
|
||||
psrld $4,%xmm1
|
||||
pand %xmm2,%xmm0
|
||||
movdqa (%ebx),%xmm2
|
||||
.byte 102,15,56,0,208
|
||||
movdqa 16(%ebx),%xmm0
|
||||
.byte 102,15,56,0,193
|
||||
pxor %xmm2,%xmm0
|
||||
ret
|
||||
.size _vpaes_schedule_transform,.-_vpaes_schedule_transform
|
||||
.type _vpaes_schedule_mangle,@function
|
||||
.align 16
|
||||
_vpaes_schedule_mangle:
|
||||
movdqa %xmm0,%xmm4
|
||||
movdqa 128(%ebp),%xmm5
|
||||
testl %edi,%edi
|
||||
jnz .L014schedule_mangle_dec
|
||||
addl $16,%edx
|
||||
pxor 336(%ebp),%xmm4
|
||||
.byte 102,15,56,0,229
|
||||
movdqa %xmm4,%xmm3
|
||||
.byte 102,15,56,0,229
|
||||
pxor %xmm4,%xmm3
|
||||
.byte 102,15,56,0,229
|
||||
pxor %xmm4,%xmm3
|
||||
jmp .L015schedule_mangle_both
|
||||
.align 16
|
||||
.L014schedule_mangle_dec:
|
||||
movdqa -16(%ebp),%xmm2
|
||||
leal 416(%ebp),%esi
|
||||
movdqa %xmm2,%xmm1
|
||||
pandn %xmm4,%xmm1
|
||||
psrld $4,%xmm1
|
||||
pand %xmm2,%xmm4
|
||||
movdqa (%esi),%xmm2
|
||||
.byte 102,15,56,0,212
|
||||
movdqa 16(%esi),%xmm3
|
||||
.byte 102,15,56,0,217
|
||||
pxor %xmm2,%xmm3
|
||||
.byte 102,15,56,0,221
|
||||
movdqa 32(%esi),%xmm2
|
||||
.byte 102,15,56,0,212
|
||||
pxor %xmm3,%xmm2
|
||||
movdqa 48(%esi),%xmm3
|
||||
.byte 102,15,56,0,217
|
||||
pxor %xmm2,%xmm3
|
||||
.byte 102,15,56,0,221
|
||||
movdqa 64(%esi),%xmm2
|
||||
.byte 102,15,56,0,212
|
||||
pxor %xmm3,%xmm2
|
||||
movdqa 80(%esi),%xmm3
|
||||
.byte 102,15,56,0,217
|
||||
pxor %xmm2,%xmm3
|
||||
.byte 102,15,56,0,221
|
||||
movdqa 96(%esi),%xmm2
|
||||
.byte 102,15,56,0,212
|
||||
pxor %xmm3,%xmm2
|
||||
movdqa 112(%esi),%xmm3
|
||||
.byte 102,15,56,0,217
|
||||
pxor %xmm2,%xmm3
|
||||
addl $-16,%edx
|
||||
.L015schedule_mangle_both:
|
||||
movdqa 256(%ebp,%ecx,1),%xmm1
|
||||
.byte 102,15,56,0,217
|
||||
addl $-16,%ecx
|
||||
andl $48,%ecx
|
||||
movdqu %xmm3,(%edx)
|
||||
ret
|
||||
.size _vpaes_schedule_mangle,.-_vpaes_schedule_mangle
|
||||
.globl vpaes_set_encrypt_key
|
||||
.type vpaes_set_encrypt_key,@function
|
||||
.align 16
|
||||
vpaes_set_encrypt_key:
|
||||
.L_vpaes_set_encrypt_key_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
movl 20(%esp),%esi
|
||||
leal -56(%esp),%ebx
|
||||
movl 24(%esp),%eax
|
||||
andl $-16,%ebx
|
||||
movl 28(%esp),%edx
|
||||
xchgl %esp,%ebx
|
||||
movl %ebx,48(%esp)
|
||||
movl %eax,%ebx
|
||||
shrl $5,%ebx
|
||||
addl $5,%ebx
|
||||
movl %ebx,240(%edx)
|
||||
movl $48,%ecx
|
||||
movl $0,%edi
|
||||
leal .L_vpaes_consts+0x30-.L016pic_point,%ebp
|
||||
call _vpaes_schedule_core
|
||||
.L016pic_point:
|
||||
movl 48(%esp),%esp
|
||||
xorl %eax,%eax
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size vpaes_set_encrypt_key,.-.L_vpaes_set_encrypt_key_begin
|
||||
.globl vpaes_set_decrypt_key
|
||||
.type vpaes_set_decrypt_key,@function
|
||||
.align 16
|
||||
vpaes_set_decrypt_key:
|
||||
.L_vpaes_set_decrypt_key_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
movl 20(%esp),%esi
|
||||
leal -56(%esp),%ebx
|
||||
movl 24(%esp),%eax
|
||||
andl $-16,%ebx
|
||||
movl 28(%esp),%edx
|
||||
xchgl %esp,%ebx
|
||||
movl %ebx,48(%esp)
|
||||
movl %eax,%ebx
|
||||
shrl $5,%ebx
|
||||
addl $5,%ebx
|
||||
movl %ebx,240(%edx)
|
||||
shll $4,%ebx
|
||||
leal 16(%edx,%ebx,1),%edx
|
||||
movl $1,%edi
|
||||
movl %eax,%ecx
|
||||
shrl $1,%ecx
|
||||
andl $32,%ecx
|
||||
xorl $32,%ecx
|
||||
leal .L_vpaes_consts+0x30-.L017pic_point,%ebp
|
||||
call _vpaes_schedule_core
|
||||
.L017pic_point:
|
||||
movl 48(%esp),%esp
|
||||
xorl %eax,%eax
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size vpaes_set_decrypt_key,.-.L_vpaes_set_decrypt_key_begin
|
||||
.globl vpaes_encrypt
|
||||
.type vpaes_encrypt,@function
|
||||
.align 16
|
||||
vpaes_encrypt:
|
||||
.L_vpaes_encrypt_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
leal .L_vpaes_consts+0x30-.L018pic_point,%ebp
|
||||
call _vpaes_preheat
|
||||
.L018pic_point:
|
||||
movl 20(%esp),%esi
|
||||
leal -56(%esp),%ebx
|
||||
movl 24(%esp),%edi
|
||||
andl $-16,%ebx
|
||||
movl 28(%esp),%edx
|
||||
xchgl %esp,%ebx
|
||||
movl %ebx,48(%esp)
|
||||
movdqu (%esi),%xmm0
|
||||
call _vpaes_encrypt_core
|
||||
movdqu %xmm0,(%edi)
|
||||
movl 48(%esp),%esp
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size vpaes_encrypt,.-.L_vpaes_encrypt_begin
|
||||
.globl vpaes_decrypt
|
||||
.type vpaes_decrypt,@function
|
||||
.align 16
|
||||
vpaes_decrypt:
|
||||
.L_vpaes_decrypt_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
leal .L_vpaes_consts+0x30-.L019pic_point,%ebp
|
||||
call _vpaes_preheat
|
||||
.L019pic_point:
|
||||
movl 20(%esp),%esi
|
||||
leal -56(%esp),%ebx
|
||||
movl 24(%esp),%edi
|
||||
andl $-16,%ebx
|
||||
movl 28(%esp),%edx
|
||||
xchgl %esp,%ebx
|
||||
movl %ebx,48(%esp)
|
||||
movdqu (%esi),%xmm0
|
||||
call _vpaes_decrypt_core
|
||||
movdqu %xmm0,(%edi)
|
||||
movl 48(%esp),%esp
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size vpaes_decrypt,.-.L_vpaes_decrypt_begin
|
||||
.globl vpaes_cbc_encrypt
|
||||
.type vpaes_cbc_encrypt,@function
|
||||
.align 16
|
||||
vpaes_cbc_encrypt:
|
||||
.L_vpaes_cbc_encrypt_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
movl 20(%esp),%esi
|
||||
movl 24(%esp),%edi
|
||||
movl 28(%esp),%eax
|
||||
movl 32(%esp),%edx
|
||||
subl $16,%eax
|
||||
jc .L020cbc_abort
|
||||
leal -56(%esp),%ebx
|
||||
movl 36(%esp),%ebp
|
||||
andl $-16,%ebx
|
||||
movl 40(%esp),%ecx
|
||||
xchgl %esp,%ebx
|
||||
movdqu (%ebp),%xmm1
|
||||
subl %esi,%edi
|
||||
movl %ebx,48(%esp)
|
||||
movl %edi,(%esp)
|
||||
movl %edx,4(%esp)
|
||||
movl %ebp,8(%esp)
|
||||
movl %eax,%edi
|
||||
leal .L_vpaes_consts+0x30-.L021pic_point,%ebp
|
||||
call _vpaes_preheat
|
||||
.L021pic_point:
|
||||
cmpl $0,%ecx
|
||||
je .L022cbc_dec_loop
|
||||
jmp .L023cbc_enc_loop
|
||||
.align 16
|
||||
.L023cbc_enc_loop:
|
||||
movdqu (%esi),%xmm0
|
||||
pxor %xmm1,%xmm0
|
||||
call _vpaes_encrypt_core
|
||||
movl (%esp),%ebx
|
||||
movl 4(%esp),%edx
|
||||
movdqa %xmm0,%xmm1
|
||||
movdqu %xmm0,(%ebx,%esi,1)
|
||||
leal 16(%esi),%esi
|
||||
subl $16,%edi
|
||||
jnc .L023cbc_enc_loop
|
||||
jmp .L024cbc_done
|
||||
.align 16
|
||||
.L022cbc_dec_loop:
|
||||
movdqu (%esi),%xmm0
|
||||
movdqa %xmm1,16(%esp)
|
||||
movdqa %xmm0,32(%esp)
|
||||
call _vpaes_decrypt_core
|
||||
movl (%esp),%ebx
|
||||
movl 4(%esp),%edx
|
||||
pxor 16(%esp),%xmm0
|
||||
movdqa 32(%esp),%xmm1
|
||||
movdqu %xmm0,(%ebx,%esi,1)
|
||||
leal 16(%esi),%esi
|
||||
subl $16,%edi
|
||||
jnc .L022cbc_dec_loop
|
||||
.L024cbc_done:
|
||||
movl 8(%esp),%ebx
|
||||
movl 48(%esp),%esp
|
||||
movdqu %xmm1,(%ebx)
|
||||
.L020cbc_abort:
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size vpaes_cbc_encrypt,.-.L_vpaes_cbc_encrypt_begin
|
|
@ -0,0 +1,703 @@
|
|||
# WARNING: do not edit!
|
||||
# Generated from openssl/crypto/modes/asm/ghash-x86.pl
|
||||
#
|
||||
# Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the OpenSSL license (the "License"). You may not use
|
||||
# this file except in compliance with the License. You can obtain a copy
|
||||
# in the file LICENSE in the source distribution or at
|
||||
# https://www.openssl.org/source/license.html
|
||||
|
||||
.text
|
||||
.globl gcm_gmult_4bit_x86
|
||||
.type gcm_gmult_4bit_x86,@function
|
||||
.align 16
|
||||
gcm_gmult_4bit_x86:
|
||||
.L_gcm_gmult_4bit_x86_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
subl $84,%esp
|
||||
movl 104(%esp),%edi
|
||||
movl 108(%esp),%esi
|
||||
movl (%edi),%ebp
|
||||
movl 4(%edi),%edx
|
||||
movl 8(%edi),%ecx
|
||||
movl 12(%edi),%ebx
|
||||
movl $0,16(%esp)
|
||||
movl $471859200,20(%esp)
|
||||
movl $943718400,24(%esp)
|
||||
movl $610271232,28(%esp)
|
||||
movl $1887436800,32(%esp)
|
||||
movl $1822425088,36(%esp)
|
||||
movl $1220542464,40(%esp)
|
||||
movl $1423966208,44(%esp)
|
||||
movl $3774873600,48(%esp)
|
||||
movl $4246732800,52(%esp)
|
||||
movl $3644850176,56(%esp)
|
||||
movl $3311403008,60(%esp)
|
||||
movl $2441084928,64(%esp)
|
||||
movl $2376073216,68(%esp)
|
||||
movl $2847932416,72(%esp)
|
||||
movl $3051356160,76(%esp)
|
||||
movl %ebp,(%esp)
|
||||
movl %edx,4(%esp)
|
||||
movl %ecx,8(%esp)
|
||||
movl %ebx,12(%esp)
|
||||
shrl $20,%ebx
|
||||
andl $240,%ebx
|
||||
movl 4(%esi,%ebx,1),%ebp
|
||||
movl (%esi,%ebx,1),%edx
|
||||
movl 12(%esi,%ebx,1),%ecx
|
||||
movl 8(%esi,%ebx,1),%ebx
|
||||
xorl %eax,%eax
|
||||
movl $15,%edi
|
||||
jmp .L000x86_loop
|
||||
.align 16
|
||||
.L000x86_loop:
|
||||
movb %bl,%al
|
||||
shrdl $4,%ecx,%ebx
|
||||
andb $15,%al
|
||||
shrdl $4,%edx,%ecx
|
||||
shrdl $4,%ebp,%edx
|
||||
shrl $4,%ebp
|
||||
xorl 16(%esp,%eax,4),%ebp
|
||||
movb (%esp,%edi,1),%al
|
||||
andb $240,%al
|
||||
xorl 8(%esi,%eax,1),%ebx
|
||||
xorl 12(%esi,%eax,1),%ecx
|
||||
xorl (%esi,%eax,1),%edx
|
||||
xorl 4(%esi,%eax,1),%ebp
|
||||
decl %edi
|
||||
js .L001x86_break
|
||||
movb %bl,%al
|
||||
shrdl $4,%ecx,%ebx
|
||||
andb $15,%al
|
||||
shrdl $4,%edx,%ecx
|
||||
shrdl $4,%ebp,%edx
|
||||
shrl $4,%ebp
|
||||
xorl 16(%esp,%eax,4),%ebp
|
||||
movb (%esp,%edi,1),%al
|
||||
shlb $4,%al
|
||||
xorl 8(%esi,%eax,1),%ebx
|
||||
xorl 12(%esi,%eax,1),%ecx
|
||||
xorl (%esi,%eax,1),%edx
|
||||
xorl 4(%esi,%eax,1),%ebp
|
||||
jmp .L000x86_loop
|
||||
.align 16
|
||||
.L001x86_break:
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
bswap %ebp
|
||||
movl 104(%esp),%edi
|
||||
movl %ebx,12(%edi)
|
||||
movl %ecx,8(%edi)
|
||||
movl %edx,4(%edi)
|
||||
movl %ebp,(%edi)
|
||||
addl $84,%esp
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size gcm_gmult_4bit_x86,.-.L_gcm_gmult_4bit_x86_begin
|
||||
.globl gcm_ghash_4bit_x86
|
||||
.type gcm_ghash_4bit_x86,@function
|
||||
.align 16
|
||||
gcm_ghash_4bit_x86:
|
||||
.L_gcm_ghash_4bit_x86_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
subl $84,%esp
|
||||
movl 104(%esp),%ebx
|
||||
movl 108(%esp),%esi
|
||||
movl 112(%esp),%edi
|
||||
movl 116(%esp),%ecx
|
||||
addl %edi,%ecx
|
||||
movl %ecx,116(%esp)
|
||||
movl (%ebx),%ebp
|
||||
movl 4(%ebx),%edx
|
||||
movl 8(%ebx),%ecx
|
||||
movl 12(%ebx),%ebx
|
||||
movl $0,16(%esp)
|
||||
movl $471859200,20(%esp)
|
||||
movl $943718400,24(%esp)
|
||||
movl $610271232,28(%esp)
|
||||
movl $1887436800,32(%esp)
|
||||
movl $1822425088,36(%esp)
|
||||
movl $1220542464,40(%esp)
|
||||
movl $1423966208,44(%esp)
|
||||
movl $3774873600,48(%esp)
|
||||
movl $4246732800,52(%esp)
|
||||
movl $3644850176,56(%esp)
|
||||
movl $3311403008,60(%esp)
|
||||
movl $2441084928,64(%esp)
|
||||
movl $2376073216,68(%esp)
|
||||
movl $2847932416,72(%esp)
|
||||
movl $3051356160,76(%esp)
|
||||
.align 16
|
||||
.L002x86_outer_loop:
|
||||
xorl 12(%edi),%ebx
|
||||
xorl 8(%edi),%ecx
|
||||
xorl 4(%edi),%edx
|
||||
xorl (%edi),%ebp
|
||||
movl %ebx,12(%esp)
|
||||
movl %ecx,8(%esp)
|
||||
movl %edx,4(%esp)
|
||||
movl %ebp,(%esp)
|
||||
shrl $20,%ebx
|
||||
andl $240,%ebx
|
||||
movl 4(%esi,%ebx,1),%ebp
|
||||
movl (%esi,%ebx,1),%edx
|
||||
movl 12(%esi,%ebx,1),%ecx
|
||||
movl 8(%esi,%ebx,1),%ebx
|
||||
xorl %eax,%eax
|
||||
movl $15,%edi
|
||||
jmp .L003x86_loop
|
||||
.align 16
|
||||
.L003x86_loop:
|
||||
movb %bl,%al
|
||||
shrdl $4,%ecx,%ebx
|
||||
andb $15,%al
|
||||
shrdl $4,%edx,%ecx
|
||||
shrdl $4,%ebp,%edx
|
||||
shrl $4,%ebp
|
||||
xorl 16(%esp,%eax,4),%ebp
|
||||
movb (%esp,%edi,1),%al
|
||||
andb $240,%al
|
||||
xorl 8(%esi,%eax,1),%ebx
|
||||
xorl 12(%esi,%eax,1),%ecx
|
||||
xorl (%esi,%eax,1),%edx
|
||||
xorl 4(%esi,%eax,1),%ebp
|
||||
decl %edi
|
||||
js .L004x86_break
|
||||
movb %bl,%al
|
||||
shrdl $4,%ecx,%ebx
|
||||
andb $15,%al
|
||||
shrdl $4,%edx,%ecx
|
||||
shrdl $4,%ebp,%edx
|
||||
shrl $4,%ebp
|
||||
xorl 16(%esp,%eax,4),%ebp
|
||||
movb (%esp,%edi,1),%al
|
||||
shlb $4,%al
|
||||
xorl 8(%esi,%eax,1),%ebx
|
||||
xorl 12(%esi,%eax,1),%ecx
|
||||
xorl (%esi,%eax,1),%edx
|
||||
xorl 4(%esi,%eax,1),%ebp
|
||||
jmp .L003x86_loop
|
||||
.align 16
|
||||
.L004x86_break:
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
bswap %ebp
|
||||
movl 112(%esp),%edi
|
||||
leal 16(%edi),%edi
|
||||
cmpl 116(%esp),%edi
|
||||
movl %edi,112(%esp)
|
||||
jb .L002x86_outer_loop
|
||||
movl 104(%esp),%edi
|
||||
movl %ebx,12(%edi)
|
||||
movl %ecx,8(%edi)
|
||||
movl %edx,4(%edi)
|
||||
movl %ebp,(%edi)
|
||||
addl $84,%esp
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size gcm_ghash_4bit_x86,.-.L_gcm_ghash_4bit_x86_begin
|
||||
.type _mmx_gmult_4bit_inner,@function
|
||||
.align 16
|
||||
_mmx_gmult_4bit_inner:
|
||||
xorl %ecx,%ecx
|
||||
movl %ebx,%edx
|
||||
movb %dl,%cl
|
||||
shlb $4,%cl
|
||||
andl $240,%edx
|
||||
movq 8(%esi,%ecx,1),%mm0
|
||||
movq (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 14(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 13(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 12(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 11(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 10(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 9(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 8(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 7(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 6(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 5(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 4(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 3(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 2(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb 1(%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
movb (%edi),%cl
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movl %ecx,%edx
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
shlb $4,%cl
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%ecx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
andl $240,%edx
|
||||
pxor (%eax,%ebp,8),%mm1
|
||||
andl $15,%ebx
|
||||
pxor (%esi,%ecx,1),%mm1
|
||||
movd %mm0,%ebp
|
||||
pxor %mm2,%mm0
|
||||
psrlq $4,%mm0
|
||||
movq %mm1,%mm2
|
||||
psrlq $4,%mm1
|
||||
pxor 8(%esi,%edx,1),%mm0
|
||||
psllq $60,%mm2
|
||||
pxor (%eax,%ebx,8),%mm1
|
||||
andl $15,%ebp
|
||||
pxor (%esi,%edx,1),%mm1
|
||||
movd %mm0,%ebx
|
||||
pxor %mm2,%mm0
|
||||
movl 4(%eax,%ebp,8),%edi
|
||||
psrlq $32,%mm0
|
||||
movd %mm1,%edx
|
||||
psrlq $32,%mm1
|
||||
movd %mm0,%ecx
|
||||
movd %mm1,%ebp
|
||||
shll $4,%edi
|
||||
bswap %ebx
|
||||
bswap %edx
|
||||
bswap %ecx
|
||||
xorl %edi,%ebp
|
||||
bswap %ebp
|
||||
ret
|
||||
.size _mmx_gmult_4bit_inner,.-_mmx_gmult_4bit_inner
|
||||
.globl gcm_gmult_4bit_mmx
|
||||
.type gcm_gmult_4bit_mmx,@function
|
||||
.align 16
|
||||
gcm_gmult_4bit_mmx:
|
||||
.L_gcm_gmult_4bit_mmx_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
movl 20(%esp),%edi
|
||||
movl 24(%esp),%esi
|
||||
call .L005pic_point
|
||||
.L005pic_point:
|
||||
popl %eax
|
||||
leal .Lrem_4bit-.L005pic_point(%eax),%eax
|
||||
movzbl 15(%edi),%ebx
|
||||
call _mmx_gmult_4bit_inner
|
||||
movl 20(%esp),%edi
|
||||
emms
|
||||
movl %ebx,12(%edi)
|
||||
movl %edx,4(%edi)
|
||||
movl %ecx,8(%edi)
|
||||
movl %ebp,(%edi)
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size gcm_gmult_4bit_mmx,.-.L_gcm_gmult_4bit_mmx_begin
|
||||
.globl gcm_ghash_4bit_mmx
|
||||
.type gcm_ghash_4bit_mmx,@function
|
||||
.align 16
|
||||
gcm_ghash_4bit_mmx:
|
||||
.L_gcm_ghash_4bit_mmx_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
movl 20(%esp),%ebp
|
||||
movl 24(%esp),%esi
|
||||
movl 28(%esp),%edi
|
||||
movl 32(%esp),%ecx
|
||||
call .L006pic_point
|
||||
.L006pic_point:
|
||||
popl %eax
|
||||
leal .Lrem_4bit-.L006pic_point(%eax),%eax
|
||||
addl %edi,%ecx
|
||||
movl %ecx,32(%esp)
|
||||
subl $20,%esp
|
||||
movl 12(%ebp),%ebx
|
||||
movl 4(%ebp),%edx
|
||||
movl 8(%ebp),%ecx
|
||||
movl (%ebp),%ebp
|
||||
jmp .L007mmx_outer_loop
|
||||
.align 16
|
||||
.L007mmx_outer_loop:
|
||||
xorl 12(%edi),%ebx
|
||||
xorl 4(%edi),%edx
|
||||
xorl 8(%edi),%ecx
|
||||
xorl (%edi),%ebp
|
||||
movl %edi,48(%esp)
|
||||
movl %ebx,12(%esp)
|
||||
movl %edx,4(%esp)
|
||||
movl %ecx,8(%esp)
|
||||
movl %ebp,(%esp)
|
||||
movl %esp,%edi
|
||||
shrl $24,%ebx
|
||||
call _mmx_gmult_4bit_inner
|
||||
movl 48(%esp),%edi
|
||||
leal 16(%edi),%edi
|
||||
cmpl 52(%esp),%edi
|
||||
jb .L007mmx_outer_loop
|
||||
movl 40(%esp),%edi
|
||||
emms
|
||||
movl %ebx,12(%edi)
|
||||
movl %edx,4(%edi)
|
||||
movl %ecx,8(%edi)
|
||||
movl %ebp,(%edi)
|
||||
addl $20,%esp
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size gcm_ghash_4bit_mmx,.-.L_gcm_ghash_4bit_mmx_begin
|
||||
.align 64
|
||||
.Lrem_4bit:
|
||||
.long 0,0,0,29491200,0,58982400,0,38141952
|
||||
.long 0,117964800,0,113901568,0,76283904,0,88997888
|
||||
.long 0,235929600,0,265420800,0,227803136,0,206962688
|
||||
.long 0,152567808,0,148504576,0,177995776,0,190709760
|
||||
.byte 71,72,65,83,72,32,102,111,114,32,120,56,54,44,32,67
|
||||
.byte 82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112
|
||||
.byte 112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62
|
||||
.byte 0
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,574 @@
|
|||
# WARNING: do not edit!
|
||||
# Generated from openssl/crypto/sha/asm/sha512-586.pl
|
||||
#
|
||||
# Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the OpenSSL license (the "License"). You may not use
|
||||
# this file except in compliance with the License. You can obtain a copy
|
||||
# in the file LICENSE in the source distribution or at
|
||||
# https://www.openssl.org/source/license.html
|
||||
|
||||
.text
|
||||
.globl sha512_block_data_order
|
||||
.type sha512_block_data_order,@function
|
||||
.align 16
|
||||
sha512_block_data_order:
|
||||
.L_sha512_block_data_order_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
movl 20(%esp),%esi
|
||||
movl 24(%esp),%edi
|
||||
movl 28(%esp),%eax
|
||||
movl %esp,%ebx
|
||||
call .L000pic_point
|
||||
.L000pic_point:
|
||||
popl %ebp
|
||||
leal .L001K512-.L000pic_point(%ebp),%ebp
|
||||
subl $16,%esp
|
||||
andl $-64,%esp
|
||||
shll $7,%eax
|
||||
addl %edi,%eax
|
||||
movl %esi,(%esp)
|
||||
movl %edi,4(%esp)
|
||||
movl %eax,8(%esp)
|
||||
movl %ebx,12(%esp)
|
||||
.align 16
|
||||
.L002loop_x86:
|
||||
movl (%edi),%eax
|
||||
movl 4(%edi),%ebx
|
||||
movl 8(%edi),%ecx
|
||||
movl 12(%edi),%edx
|
||||
bswap %eax
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
pushl %eax
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
movl 16(%edi),%eax
|
||||
movl 20(%edi),%ebx
|
||||
movl 24(%edi),%ecx
|
||||
movl 28(%edi),%edx
|
||||
bswap %eax
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
pushl %eax
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
movl 32(%edi),%eax
|
||||
movl 36(%edi),%ebx
|
||||
movl 40(%edi),%ecx
|
||||
movl 44(%edi),%edx
|
||||
bswap %eax
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
pushl %eax
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
movl 48(%edi),%eax
|
||||
movl 52(%edi),%ebx
|
||||
movl 56(%edi),%ecx
|
||||
movl 60(%edi),%edx
|
||||
bswap %eax
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
pushl %eax
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
movl 64(%edi),%eax
|
||||
movl 68(%edi),%ebx
|
||||
movl 72(%edi),%ecx
|
||||
movl 76(%edi),%edx
|
||||
bswap %eax
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
pushl %eax
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
movl 80(%edi),%eax
|
||||
movl 84(%edi),%ebx
|
||||
movl 88(%edi),%ecx
|
||||
movl 92(%edi),%edx
|
||||
bswap %eax
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
pushl %eax
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
movl 96(%edi),%eax
|
||||
movl 100(%edi),%ebx
|
||||
movl 104(%edi),%ecx
|
||||
movl 108(%edi),%edx
|
||||
bswap %eax
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
pushl %eax
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
movl 112(%edi),%eax
|
||||
movl 116(%edi),%ebx
|
||||
movl 120(%edi),%ecx
|
||||
movl 124(%edi),%edx
|
||||
bswap %eax
|
||||
bswap %ebx
|
||||
bswap %ecx
|
||||
bswap %edx
|
||||
pushl %eax
|
||||
pushl %ebx
|
||||
pushl %ecx
|
||||
pushl %edx
|
||||
addl $128,%edi
|
||||
subl $72,%esp
|
||||
movl %edi,204(%esp)
|
||||
leal 8(%esp),%edi
|
||||
movl $16,%ecx
|
||||
.long 2784229001
|
||||
.align 16
|
||||
.L00300_15_x86:
|
||||
movl 40(%esp),%ecx
|
||||
movl 44(%esp),%edx
|
||||
movl %ecx,%esi
|
||||
shrl $9,%ecx
|
||||
movl %edx,%edi
|
||||
shrl $9,%edx
|
||||
movl %ecx,%ebx
|
||||
shll $14,%esi
|
||||
movl %edx,%eax
|
||||
shll $14,%edi
|
||||
xorl %esi,%ebx
|
||||
shrl $5,%ecx
|
||||
xorl %edi,%eax
|
||||
shrl $5,%edx
|
||||
xorl %ecx,%eax
|
||||
shll $4,%esi
|
||||
xorl %edx,%ebx
|
||||
shll $4,%edi
|
||||
xorl %esi,%ebx
|
||||
shrl $4,%ecx
|
||||
xorl %edi,%eax
|
||||
shrl $4,%edx
|
||||
xorl %ecx,%eax
|
||||
shll $5,%esi
|
||||
xorl %edx,%ebx
|
||||
shll $5,%edi
|
||||
xorl %esi,%eax
|
||||
xorl %edi,%ebx
|
||||
movl 48(%esp),%ecx
|
||||
movl 52(%esp),%edx
|
||||
movl 56(%esp),%esi
|
||||
movl 60(%esp),%edi
|
||||
addl 64(%esp),%eax
|
||||
adcl 68(%esp),%ebx
|
||||
xorl %esi,%ecx
|
||||
xorl %edi,%edx
|
||||
andl 40(%esp),%ecx
|
||||
andl 44(%esp),%edx
|
||||
addl 192(%esp),%eax
|
||||
adcl 196(%esp),%ebx
|
||||
xorl %esi,%ecx
|
||||
xorl %edi,%edx
|
||||
movl (%ebp),%esi
|
||||
movl 4(%ebp),%edi
|
||||
addl %ecx,%eax
|
||||
adcl %edx,%ebx
|
||||
movl 32(%esp),%ecx
|
||||
movl 36(%esp),%edx
|
||||
addl %esi,%eax
|
||||
adcl %edi,%ebx
|
||||
movl %eax,(%esp)
|
||||
movl %ebx,4(%esp)
|
||||
addl %ecx,%eax
|
||||
adcl %edx,%ebx
|
||||
movl 8(%esp),%ecx
|
||||
movl 12(%esp),%edx
|
||||
movl %eax,32(%esp)
|
||||
movl %ebx,36(%esp)
|
||||
movl %ecx,%esi
|
||||
shrl $2,%ecx
|
||||
movl %edx,%edi
|
||||
shrl $2,%edx
|
||||
movl %ecx,%ebx
|
||||
shll $4,%esi
|
||||
movl %edx,%eax
|
||||
shll $4,%edi
|
||||
xorl %esi,%ebx
|
||||
shrl $5,%ecx
|
||||
xorl %edi,%eax
|
||||
shrl $5,%edx
|
||||
xorl %ecx,%ebx
|
||||
shll $21,%esi
|
||||
xorl %edx,%eax
|
||||
shll $21,%edi
|
||||
xorl %esi,%eax
|
||||
shrl $21,%ecx
|
||||
xorl %edi,%ebx
|
||||
shrl $21,%edx
|
||||
xorl %ecx,%eax
|
||||
shll $5,%esi
|
||||
xorl %edx,%ebx
|
||||
shll $5,%edi
|
||||
xorl %esi,%eax
|
||||
xorl %edi,%ebx
|
||||
movl 8(%esp),%ecx
|
||||
movl 12(%esp),%edx
|
||||
movl 16(%esp),%esi
|
||||
movl 20(%esp),%edi
|
||||
addl (%esp),%eax
|
||||
adcl 4(%esp),%ebx
|
||||
orl %esi,%ecx
|
||||
orl %edi,%edx
|
||||
andl 24(%esp),%ecx
|
||||
andl 28(%esp),%edx
|
||||
andl 8(%esp),%esi
|
||||
andl 12(%esp),%edi
|
||||
orl %esi,%ecx
|
||||
orl %edi,%edx
|
||||
addl %ecx,%eax
|
||||
adcl %edx,%ebx
|
||||
movl %eax,(%esp)
|
||||
movl %ebx,4(%esp)
|
||||
movb (%ebp),%dl
|
||||
subl $8,%esp
|
||||
leal 8(%ebp),%ebp
|
||||
cmpb $148,%dl
|
||||
jne .L00300_15_x86
|
||||
.align 16
|
||||
.L00416_79_x86:
|
||||
movl 312(%esp),%ecx
|
||||
movl 316(%esp),%edx
|
||||
movl %ecx,%esi
|
||||
shrl $1,%ecx
|
||||
movl %edx,%edi
|
||||
shrl $1,%edx
|
||||
movl %ecx,%eax
|
||||
shll $24,%esi
|
||||
movl %edx,%ebx
|
||||
shll $24,%edi
|
||||
xorl %esi,%ebx
|
||||
shrl $6,%ecx
|
||||
xorl %edi,%eax
|
||||
shrl $6,%edx
|
||||
xorl %ecx,%eax
|
||||
shll $7,%esi
|
||||
xorl %edx,%ebx
|
||||
shll $1,%edi
|
||||
xorl %esi,%ebx
|
||||
shrl $1,%ecx
|
||||
xorl %edi,%eax
|
||||
shrl $1,%edx
|
||||
xorl %ecx,%eax
|
||||
shll $6,%edi
|
||||
xorl %edx,%ebx
|
||||
xorl %edi,%eax
|
||||
movl %eax,(%esp)
|
||||
movl %ebx,4(%esp)
|
||||
movl 208(%esp),%ecx
|
||||
movl 212(%esp),%edx
|
||||
movl %ecx,%esi
|
||||
shrl $6,%ecx
|
||||
movl %edx,%edi
|
||||
shrl $6,%edx
|
||||
movl %ecx,%eax
|
||||
shll $3,%esi
|
||||
movl %edx,%ebx
|
||||
shll $3,%edi
|
||||
xorl %esi,%eax
|
||||
shrl $13,%ecx
|
||||
xorl %edi,%ebx
|
||||
shrl $13,%edx
|
||||
xorl %ecx,%eax
|
||||
shll $10,%esi
|
||||
xorl %edx,%ebx
|
||||
shll $10,%edi
|
||||
xorl %esi,%ebx
|
||||
shrl $10,%ecx
|
||||
xorl %edi,%eax
|
||||
shrl $10,%edx
|
||||
xorl %ecx,%ebx
|
||||
shll $13,%edi
|
||||
xorl %edx,%eax
|
||||
xorl %edi,%eax
|
||||
movl 320(%esp),%ecx
|
||||
movl 324(%esp),%edx
|
||||
addl (%esp),%eax
|
||||
adcl 4(%esp),%ebx
|
||||
movl 248(%esp),%esi
|
||||
movl 252(%esp),%edi
|
||||
addl %ecx,%eax
|
||||
adcl %edx,%ebx
|
||||
addl %esi,%eax
|
||||
adcl %edi,%ebx
|
||||
movl %eax,192(%esp)
|
||||
movl %ebx,196(%esp)
|
||||
movl 40(%esp),%ecx
|
||||
movl 44(%esp),%edx
|
||||
movl %ecx,%esi
|
||||
shrl $9,%ecx
|
||||
movl %edx,%edi
|
||||
shrl $9,%edx
|
||||
movl %ecx,%ebx
|
||||
shll $14,%esi
|
||||
movl %edx,%eax
|
||||
shll $14,%edi
|
||||
xorl %esi,%ebx
|
||||
shrl $5,%ecx
|
||||
xorl %edi,%eax
|
||||
shrl $5,%edx
|
||||
xorl %ecx,%eax
|
||||
shll $4,%esi
|
||||
xorl %edx,%ebx
|
||||
shll $4,%edi
|
||||
xorl %esi,%ebx
|
||||
shrl $4,%ecx
|
||||
xorl %edi,%eax
|
||||
shrl $4,%edx
|
||||
xorl %ecx,%eax
|
||||
shll $5,%esi
|
||||
xorl %edx,%ebx
|
||||
shll $5,%edi
|
||||
xorl %esi,%eax
|
||||
xorl %edi,%ebx
|
||||
movl 48(%esp),%ecx
|
||||
movl 52(%esp),%edx
|
||||
movl 56(%esp),%esi
|
||||
movl 60(%esp),%edi
|
||||
addl 64(%esp),%eax
|
||||
adcl 68(%esp),%ebx
|
||||
xorl %esi,%ecx
|
||||
xorl %edi,%edx
|
||||
andl 40(%esp),%ecx
|
||||
andl 44(%esp),%edx
|
||||
addl 192(%esp),%eax
|
||||
adcl 196(%esp),%ebx
|
||||
xorl %esi,%ecx
|
||||
xorl %edi,%edx
|
||||
movl (%ebp),%esi
|
||||
movl 4(%ebp),%edi
|
||||
addl %ecx,%eax
|
||||
adcl %edx,%ebx
|
||||
movl 32(%esp),%ecx
|
||||
movl 36(%esp),%edx
|
||||
addl %esi,%eax
|
||||
adcl %edi,%ebx
|
||||
movl %eax,(%esp)
|
||||
movl %ebx,4(%esp)
|
||||
addl %ecx,%eax
|
||||
adcl %edx,%ebx
|
||||
movl 8(%esp),%ecx
|
||||
movl 12(%esp),%edx
|
||||
movl %eax,32(%esp)
|
||||
movl %ebx,36(%esp)
|
||||
movl %ecx,%esi
|
||||
shrl $2,%ecx
|
||||
movl %edx,%edi
|
||||
shrl $2,%edx
|
||||
movl %ecx,%ebx
|
||||
shll $4,%esi
|
||||
movl %edx,%eax
|
||||
shll $4,%edi
|
||||
xorl %esi,%ebx
|
||||
shrl $5,%ecx
|
||||
xorl %edi,%eax
|
||||
shrl $5,%edx
|
||||
xorl %ecx,%ebx
|
||||
shll $21,%esi
|
||||
xorl %edx,%eax
|
||||
shll $21,%edi
|
||||
xorl %esi,%eax
|
||||
shrl $21,%ecx
|
||||
xorl %edi,%ebx
|
||||
shrl $21,%edx
|
||||
xorl %ecx,%eax
|
||||
shll $5,%esi
|
||||
xorl %edx,%ebx
|
||||
shll $5,%edi
|
||||
xorl %esi,%eax
|
||||
xorl %edi,%ebx
|
||||
movl 8(%esp),%ecx
|
||||
movl 12(%esp),%edx
|
||||
movl 16(%esp),%esi
|
||||
movl 20(%esp),%edi
|
||||
addl (%esp),%eax
|
||||
adcl 4(%esp),%ebx
|
||||
orl %esi,%ecx
|
||||
orl %edi,%edx
|
||||
andl 24(%esp),%ecx
|
||||
andl 28(%esp),%edx
|
||||
andl 8(%esp),%esi
|
||||
andl 12(%esp),%edi
|
||||
orl %esi,%ecx
|
||||
orl %edi,%edx
|
||||
addl %ecx,%eax
|
||||
adcl %edx,%ebx
|
||||
movl %eax,(%esp)
|
||||
movl %ebx,4(%esp)
|
||||
movb (%ebp),%dl
|
||||
subl $8,%esp
|
||||
leal 8(%ebp),%ebp
|
||||
cmpb $23,%dl
|
||||
jne .L00416_79_x86
|
||||
movl 840(%esp),%esi
|
||||
movl 844(%esp),%edi
|
||||
movl (%esi),%eax
|
||||
movl 4(%esi),%ebx
|
||||
movl 8(%esi),%ecx
|
||||
movl 12(%esi),%edx
|
||||
addl 8(%esp),%eax
|
||||
adcl 12(%esp),%ebx
|
||||
movl %eax,(%esi)
|
||||
movl %ebx,4(%esi)
|
||||
addl 16(%esp),%ecx
|
||||
adcl 20(%esp),%edx
|
||||
movl %ecx,8(%esi)
|
||||
movl %edx,12(%esi)
|
||||
movl 16(%esi),%eax
|
||||
movl 20(%esi),%ebx
|
||||
movl 24(%esi),%ecx
|
||||
movl 28(%esi),%edx
|
||||
addl 24(%esp),%eax
|
||||
adcl 28(%esp),%ebx
|
||||
movl %eax,16(%esi)
|
||||
movl %ebx,20(%esi)
|
||||
addl 32(%esp),%ecx
|
||||
adcl 36(%esp),%edx
|
||||
movl %ecx,24(%esi)
|
||||
movl %edx,28(%esi)
|
||||
movl 32(%esi),%eax
|
||||
movl 36(%esi),%ebx
|
||||
movl 40(%esi),%ecx
|
||||
movl 44(%esi),%edx
|
||||
addl 40(%esp),%eax
|
||||
adcl 44(%esp),%ebx
|
||||
movl %eax,32(%esi)
|
||||
movl %ebx,36(%esi)
|
||||
addl 48(%esp),%ecx
|
||||
adcl 52(%esp),%edx
|
||||
movl %ecx,40(%esi)
|
||||
movl %edx,44(%esi)
|
||||
movl 48(%esi),%eax
|
||||
movl 52(%esi),%ebx
|
||||
movl 56(%esi),%ecx
|
||||
movl 60(%esi),%edx
|
||||
addl 56(%esp),%eax
|
||||
adcl 60(%esp),%ebx
|
||||
movl %eax,48(%esi)
|
||||
movl %ebx,52(%esi)
|
||||
addl 64(%esp),%ecx
|
||||
adcl 68(%esp),%edx
|
||||
movl %ecx,56(%esi)
|
||||
movl %edx,60(%esi)
|
||||
addl $840,%esp
|
||||
subl $640,%ebp
|
||||
cmpl 8(%esp),%edi
|
||||
jb .L002loop_x86
|
||||
movl 12(%esp),%esp
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.align 64
|
||||
.L001K512:
|
||||
.long 3609767458,1116352408
|
||||
.long 602891725,1899447441
|
||||
.long 3964484399,3049323471
|
||||
.long 2173295548,3921009573
|
||||
.long 4081628472,961987163
|
||||
.long 3053834265,1508970993
|
||||
.long 2937671579,2453635748
|
||||
.long 3664609560,2870763221
|
||||
.long 2734883394,3624381080
|
||||
.long 1164996542,310598401
|
||||
.long 1323610764,607225278
|
||||
.long 3590304994,1426881987
|
||||
.long 4068182383,1925078388
|
||||
.long 991336113,2162078206
|
||||
.long 633803317,2614888103
|
||||
.long 3479774868,3248222580
|
||||
.long 2666613458,3835390401
|
||||
.long 944711139,4022224774
|
||||
.long 2341262773,264347078
|
||||
.long 2007800933,604807628
|
||||
.long 1495990901,770255983
|
||||
.long 1856431235,1249150122
|
||||
.long 3175218132,1555081692
|
||||
.long 2198950837,1996064986
|
||||
.long 3999719339,2554220882
|
||||
.long 766784016,2821834349
|
||||
.long 2566594879,2952996808
|
||||
.long 3203337956,3210313671
|
||||
.long 1034457026,3336571891
|
||||
.long 2466948901,3584528711
|
||||
.long 3758326383,113926993
|
||||
.long 168717936,338241895
|
||||
.long 1188179964,666307205
|
||||
.long 1546045734,773529912
|
||||
.long 1522805485,1294757372
|
||||
.long 2643833823,1396182291
|
||||
.long 2343527390,1695183700
|
||||
.long 1014477480,1986661051
|
||||
.long 1206759142,2177026350
|
||||
.long 344077627,2456956037
|
||||
.long 1290863460,2730485921
|
||||
.long 3158454273,2820302411
|
||||
.long 3505952657,3259730800
|
||||
.long 106217008,3345764771
|
||||
.long 3606008344,3516065817
|
||||
.long 1432725776,3600352804
|
||||
.long 1467031594,4094571909
|
||||
.long 851169720,275423344
|
||||
.long 3100823752,430227734
|
||||
.long 1363258195,506948616
|
||||
.long 3750685593,659060556
|
||||
.long 3785050280,883997877
|
||||
.long 3318307427,958139571
|
||||
.long 3812723403,1322822218
|
||||
.long 2003034995,1537002063
|
||||
.long 3602036899,1747873779
|
||||
.long 1575990012,1955562222
|
||||
.long 1125592928,2024104815
|
||||
.long 2716904306,2227730452
|
||||
.long 442776044,2361852424
|
||||
.long 593698344,2428436474
|
||||
.long 3733110249,2756734187
|
||||
.long 2999351573,3204031479
|
||||
.long 3815920427,3329325298
|
||||
.long 3928383900,3391569614
|
||||
.long 566280711,3515267271
|
||||
.long 3454069534,3940187606
|
||||
.long 4000239992,4118630271
|
||||
.long 1914138554,116418474
|
||||
.long 2731055270,174292421
|
||||
.long 3203993006,289380356
|
||||
.long 320620315,460393269
|
||||
.long 587496836,685471733
|
||||
.long 1086792851,852142971
|
||||
.long 365543100,1017036298
|
||||
.long 2618297676,1126000580
|
||||
.long 3409855158,1288033470
|
||||
.long 4234509866,1501505948
|
||||
.long 987167468,1607167915
|
||||
.long 1246189591,1816402316
|
||||
.long 67438087,66051
|
||||
.long 202182159,134810123
|
||||
.size sha512_block_data_order,.-.L_sha512_block_data_order_begin
|
||||
.byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
|
||||
.byte 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
|
||||
.byte 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
|
||||
.byte 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
|
||||
.byte 62,0
|
|
@ -0,0 +1,449 @@
|
|||
# WARNING: do not edit!
|
||||
# Generated from openssl/crypto/x86cpuid.pl
|
||||
#
|
||||
# Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the OpenSSL license (the "License"). You may not use
|
||||
# this file except in compliance with the License. You can obtain a copy
|
||||
# in the file LICENSE in the source distribution or at
|
||||
# https://www.openssl.org/source/license.html
|
||||
|
||||
.text
|
||||
.globl OPENSSL_ia32_cpuid
|
||||
.type OPENSSL_ia32_cpuid,@function
|
||||
.align 16
|
||||
OPENSSL_ia32_cpuid:
|
||||
.L_OPENSSL_ia32_cpuid_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
xorl %edx,%edx
|
||||
pushfl
|
||||
popl %eax
|
||||
movl %eax,%ecx
|
||||
xorl $2097152,%eax
|
||||
pushl %eax
|
||||
popfl
|
||||
pushfl
|
||||
popl %eax
|
||||
xorl %eax,%ecx
|
||||
xorl %eax,%eax
|
||||
movl 20(%esp),%esi
|
||||
movl %eax,8(%esi)
|
||||
btl $21,%ecx
|
||||
jnc .L000nocpuid
|
||||
.byte 0x0f,0xa2
|
||||
movl %eax,%edi
|
||||
xorl %eax,%eax
|
||||
cmpl $1970169159,%ebx
|
||||
setne %al
|
||||
movl %eax,%ebp
|
||||
cmpl $1231384169,%edx
|
||||
setne %al
|
||||
orl %eax,%ebp
|
||||
cmpl $1818588270,%ecx
|
||||
setne %al
|
||||
orl %eax,%ebp
|
||||
jz .L001intel
|
||||
cmpl $1752462657,%ebx
|
||||
setne %al
|
||||
movl %eax,%esi
|
||||
cmpl $1769238117,%edx
|
||||
setne %al
|
||||
orl %eax,%esi
|
||||
cmpl $1145913699,%ecx
|
||||
setne %al
|
||||
orl %eax,%esi
|
||||
jnz .L001intel
|
||||
movl $2147483648,%eax
|
||||
.byte 0x0f,0xa2
|
||||
cmpl $2147483649,%eax
|
||||
jb .L001intel
|
||||
movl %eax,%esi
|
||||
movl $2147483649,%eax
|
||||
.byte 0x0f,0xa2
|
||||
orl %ecx,%ebp
|
||||
andl $2049,%ebp
|
||||
cmpl $2147483656,%esi
|
||||
jb .L001intel
|
||||
movl $2147483656,%eax
|
||||
.byte 0x0f,0xa2
|
||||
movzbl %cl,%esi
|
||||
incl %esi
|
||||
movl $1,%eax
|
||||
xorl %ecx,%ecx
|
||||
.byte 0x0f,0xa2
|
||||
btl $28,%edx
|
||||
jnc .L002generic
|
||||
shrl $16,%ebx
|
||||
andl $255,%ebx
|
||||
cmpl %esi,%ebx
|
||||
ja .L002generic
|
||||
andl $4026531839,%edx
|
||||
jmp .L002generic
|
||||
.L001intel:
|
||||
cmpl $4,%edi
|
||||
movl $-1,%esi
|
||||
jb .L003nocacheinfo
|
||||
movl $4,%eax
|
||||
movl $0,%ecx
|
||||
.byte 0x0f,0xa2
|
||||
movl %eax,%esi
|
||||
shrl $14,%esi
|
||||
andl $4095,%esi
|
||||
.L003nocacheinfo:
|
||||
movl $1,%eax
|
||||
xorl %ecx,%ecx
|
||||
.byte 0x0f,0xa2
|
||||
andl $3220176895,%edx
|
||||
cmpl $0,%ebp
|
||||
jne .L004notintel
|
||||
orl $1073741824,%edx
|
||||
andb $15,%ah
|
||||
cmpb $15,%ah
|
||||
jne .L004notintel
|
||||
orl $1048576,%edx
|
||||
.L004notintel:
|
||||
btl $28,%edx
|
||||
jnc .L002generic
|
||||
andl $4026531839,%edx
|
||||
cmpl $0,%esi
|
||||
je .L002generic
|
||||
orl $268435456,%edx
|
||||
shrl $16,%ebx
|
||||
cmpb $1,%bl
|
||||
ja .L002generic
|
||||
andl $4026531839,%edx
|
||||
.L002generic:
|
||||
andl $2048,%ebp
|
||||
andl $4294965247,%ecx
|
||||
movl %edx,%esi
|
||||
orl %ecx,%ebp
|
||||
cmpl $7,%edi
|
||||
movl 20(%esp),%edi
|
||||
jb .L005no_extended_info
|
||||
movl $7,%eax
|
||||
xorl %ecx,%ecx
|
||||
.byte 0x0f,0xa2
|
||||
movl %ebx,8(%edi)
|
||||
.L005no_extended_info:
|
||||
btl $27,%ebp
|
||||
jnc .L006clear_avx
|
||||
xorl %ecx,%ecx
|
||||
.byte 15,1,208
|
||||
andl $6,%eax
|
||||
cmpl $6,%eax
|
||||
je .L007done
|
||||
cmpl $2,%eax
|
||||
je .L006clear_avx
|
||||
.L008clear_xmm:
|
||||
andl $4261412861,%ebp
|
||||
andl $4278190079,%esi
|
||||
.L006clear_avx:
|
||||
andl $4026525695,%ebp
|
||||
andl $4294967263,8(%edi)
|
||||
.L007done:
|
||||
movl %esi,%eax
|
||||
movl %ebp,%edx
|
||||
.L000nocpuid:
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size OPENSSL_ia32_cpuid,.-.L_OPENSSL_ia32_cpuid_begin
|
||||
.globl OPENSSL_rdtsc
|
||||
.type OPENSSL_rdtsc,@function
|
||||
.align 16
|
||||
OPENSSL_rdtsc:
|
||||
.L_OPENSSL_rdtsc_begin:
|
||||
xorl %eax,%eax
|
||||
xorl %edx,%edx
|
||||
leal OPENSSL_ia32cap_P,%ecx
|
||||
btl $4,(%ecx)
|
||||
jnc .L009notsc
|
||||
.byte 0x0f,0x31
|
||||
.L009notsc:
|
||||
ret
|
||||
.size OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin
|
||||
.globl OPENSSL_instrument_halt
|
||||
.type OPENSSL_instrument_halt,@function
|
||||
.align 16
|
||||
OPENSSL_instrument_halt:
|
||||
.L_OPENSSL_instrument_halt_begin:
|
||||
leal OPENSSL_ia32cap_P,%ecx
|
||||
btl $4,(%ecx)
|
||||
jnc .L010nohalt
|
||||
.long 2421723150
|
||||
andl $3,%eax
|
||||
jnz .L010nohalt
|
||||
pushfl
|
||||
popl %eax
|
||||
btl $9,%eax
|
||||
jnc .L010nohalt
|
||||
.byte 0x0f,0x31
|
||||
pushl %edx
|
||||
pushl %eax
|
||||
hlt
|
||||
.byte 0x0f,0x31
|
||||
subl (%esp),%eax
|
||||
sbbl 4(%esp),%edx
|
||||
addl $8,%esp
|
||||
ret
|
||||
.L010nohalt:
|
||||
xorl %eax,%eax
|
||||
xorl %edx,%edx
|
||||
ret
|
||||
.size OPENSSL_instrument_halt,.-.L_OPENSSL_instrument_halt_begin
|
||||
.globl OPENSSL_far_spin
|
||||
.type OPENSSL_far_spin,@function
|
||||
.align 16
|
||||
OPENSSL_far_spin:
|
||||
.L_OPENSSL_far_spin_begin:
|
||||
pushfl
|
||||
popl %eax
|
||||
btl $9,%eax
|
||||
jnc .L011nospin
|
||||
movl 4(%esp),%eax
|
||||
movl 8(%esp),%ecx
|
||||
.long 2430111262
|
||||
xorl %eax,%eax
|
||||
movl (%ecx),%edx
|
||||
jmp .L012spin
|
||||
.align 16
|
||||
.L012spin:
|
||||
incl %eax
|
||||
cmpl (%ecx),%edx
|
||||
je .L012spin
|
||||
.long 529567888
|
||||
ret
|
||||
.L011nospin:
|
||||
xorl %eax,%eax
|
||||
xorl %edx,%edx
|
||||
ret
|
||||
.size OPENSSL_far_spin,.-.L_OPENSSL_far_spin_begin
|
||||
.globl OPENSSL_wipe_cpu
|
||||
.type OPENSSL_wipe_cpu,@function
|
||||
.align 16
|
||||
OPENSSL_wipe_cpu:
|
||||
.L_OPENSSL_wipe_cpu_begin:
|
||||
xorl %eax,%eax
|
||||
xorl %edx,%edx
|
||||
leal OPENSSL_ia32cap_P,%ecx
|
||||
movl (%ecx),%ecx
|
||||
btl $1,(%ecx)
|
||||
jnc .L013no_x87
|
||||
.long 4007259865,4007259865,4007259865,4007259865,2430851995
|
||||
.L013no_x87:
|
||||
leal 4(%esp),%eax
|
||||
ret
|
||||
.size OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin
|
||||
.globl OPENSSL_atomic_add
|
||||
.type OPENSSL_atomic_add,@function
|
||||
.align 16
|
||||
OPENSSL_atomic_add:
|
||||
.L_OPENSSL_atomic_add_begin:
|
||||
movl 4(%esp),%edx
|
||||
movl 8(%esp),%ecx
|
||||
pushl %ebx
|
||||
nop
|
||||
movl (%edx),%eax
|
||||
.L014spin:
|
||||
leal (%eax,%ecx,1),%ebx
|
||||
nop
|
||||
.long 447811568
|
||||
jne .L014spin
|
||||
movl %ebx,%eax
|
||||
popl %ebx
|
||||
ret
|
||||
.size OPENSSL_atomic_add,.-.L_OPENSSL_atomic_add_begin
|
||||
.globl OPENSSL_cleanse
|
||||
.type OPENSSL_cleanse,@function
|
||||
.align 16
|
||||
OPENSSL_cleanse:
|
||||
.L_OPENSSL_cleanse_begin:
|
||||
movl 4(%esp),%edx
|
||||
movl 8(%esp),%ecx
|
||||
xorl %eax,%eax
|
||||
cmpl $7,%ecx
|
||||
jae .L015lot
|
||||
cmpl $0,%ecx
|
||||
je .L016ret
|
||||
.L017little:
|
||||
movb %al,(%edx)
|
||||
subl $1,%ecx
|
||||
leal 1(%edx),%edx
|
||||
jnz .L017little
|
||||
.L016ret:
|
||||
ret
|
||||
.align 16
|
||||
.L015lot:
|
||||
testl $3,%edx
|
||||
jz .L018aligned
|
||||
movb %al,(%edx)
|
||||
leal -1(%ecx),%ecx
|
||||
leal 1(%edx),%edx
|
||||
jmp .L015lot
|
||||
.L018aligned:
|
||||
movl %eax,(%edx)
|
||||
leal -4(%ecx),%ecx
|
||||
testl $-4,%ecx
|
||||
leal 4(%edx),%edx
|
||||
jnz .L018aligned
|
||||
cmpl $0,%ecx
|
||||
jne .L017little
|
||||
ret
|
||||
.size OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin
|
||||
.globl CRYPTO_memcmp
|
||||
.type CRYPTO_memcmp,@function
|
||||
.align 16
|
||||
CRYPTO_memcmp:
|
||||
.L_CRYPTO_memcmp_begin:
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
movl 12(%esp),%esi
|
||||
movl 16(%esp),%edi
|
||||
movl 20(%esp),%ecx
|
||||
xorl %eax,%eax
|
||||
xorl %edx,%edx
|
||||
cmpl $0,%ecx
|
||||
je .L019no_data
|
||||
.L020loop:
|
||||
movb (%esi),%dl
|
||||
leal 1(%esi),%esi
|
||||
xorb (%edi),%dl
|
||||
leal 1(%edi),%edi
|
||||
orb %dl,%al
|
||||
decl %ecx
|
||||
jnz .L020loop
|
||||
negl %eax
|
||||
shrl $31,%eax
|
||||
.L019no_data:
|
||||
popl %edi
|
||||
popl %esi
|
||||
ret
|
||||
.size CRYPTO_memcmp,.-.L_CRYPTO_memcmp_begin
|
||||
.globl OPENSSL_instrument_bus
|
||||
.type OPENSSL_instrument_bus,@function
|
||||
.align 16
|
||||
OPENSSL_instrument_bus:
|
||||
.L_OPENSSL_instrument_bus_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
movl $0,%eax
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size OPENSSL_instrument_bus,.-.L_OPENSSL_instrument_bus_begin
|
||||
.globl OPENSSL_instrument_bus2
|
||||
.type OPENSSL_instrument_bus2,@function
|
||||
.align 16
|
||||
OPENSSL_instrument_bus2:
|
||||
.L_OPENSSL_instrument_bus2_begin:
|
||||
pushl %ebp
|
||||
pushl %ebx
|
||||
pushl %esi
|
||||
pushl %edi
|
||||
movl $0,%eax
|
||||
popl %edi
|
||||
popl %esi
|
||||
popl %ebx
|
||||
popl %ebp
|
||||
ret
|
||||
.size OPENSSL_instrument_bus2,.-.L_OPENSSL_instrument_bus2_begin
|
||||
.globl OPENSSL_ia32_rdrand_bytes
|
||||
.type OPENSSL_ia32_rdrand_bytes,@function
|
||||
.align 16
|
||||
OPENSSL_ia32_rdrand_bytes:
|
||||
.L_OPENSSL_ia32_rdrand_bytes_begin:
|
||||
pushl %edi
|
||||
pushl %ebx
|
||||
xorl %eax,%eax
|
||||
movl 12(%esp),%edi
|
||||
movl 16(%esp),%ebx
|
||||
cmpl $0,%ebx
|
||||
je .L021done
|
||||
movl $8,%ecx
|
||||
.L022loop:
|
||||
.byte 15,199,242
|
||||
jc .L023break
|
||||
loop .L022loop
|
||||
jmp .L021done
|
||||
.align 16
|
||||
.L023break:
|
||||
cmpl $4,%ebx
|
||||
jb .L024tail
|
||||
movl %edx,(%edi)
|
||||
leal 4(%edi),%edi
|
||||
addl $4,%eax
|
||||
subl $4,%ebx
|
||||
jz .L021done
|
||||
movl $8,%ecx
|
||||
jmp .L022loop
|
||||
.align 16
|
||||
.L024tail:
|
||||
movb %dl,(%edi)
|
||||
leal 1(%edi),%edi
|
||||
incl %eax
|
||||
shrl $8,%edx
|
||||
decl %ebx
|
||||
jnz .L024tail
|
||||
.L021done:
|
||||
xorl %edx,%edx
|
||||
popl %ebx
|
||||
popl %edi
|
||||
ret
|
||||
.size OPENSSL_ia32_rdrand_bytes,.-.L_OPENSSL_ia32_rdrand_bytes_begin
|
||||
.globl OPENSSL_ia32_rdseed_bytes
|
||||
.type OPENSSL_ia32_rdseed_bytes,@function
|
||||
.align 16
|
||||
OPENSSL_ia32_rdseed_bytes:
|
||||
.L_OPENSSL_ia32_rdseed_bytes_begin:
|
||||
pushl %edi
|
||||
pushl %ebx
|
||||
xorl %eax,%eax
|
||||
movl 12(%esp),%edi
|
||||
movl 16(%esp),%ebx
|
||||
cmpl $0,%ebx
|
||||
je .L025done
|
||||
movl $8,%ecx
|
||||
.L026loop:
|
||||
.byte 15,199,250
|
||||
jc .L027break
|
||||
loop .L026loop
|
||||
jmp .L025done
|
||||
.align 16
|
||||
.L027break:
|
||||
cmpl $4,%ebx
|
||||
jb .L028tail
|
||||
movl %edx,(%edi)
|
||||
leal 4(%edi),%edi
|
||||
addl $4,%eax
|
||||
subl $4,%ebx
|
||||
jz .L025done
|
||||
movl $8,%ecx
|
||||
jmp .L026loop
|
||||
.align 16
|
||||
.L028tail:
|
||||
movb %dl,(%edi)
|
||||
leal 1(%edi),%edi
|
||||
incl %eax
|
||||
shrl $8,%edx
|
||||
decl %ebx
|
||||
jnz .L028tail
|
||||
.L025done:
|
||||
xorl %edx,%edx
|
||||
popl %ebx
|
||||
popl %edi
|
||||
ret
|
||||
.size OPENSSL_ia32_rdseed_bytes,.-.L_OPENSSL_ia32_rdseed_bytes_begin
|
||||
.hidden OPENSSL_cpuid_setup
|
||||
.hidden OPENSSL_ia32cap_P
|
||||
.comm OPENSSL_ia32cap_P,16,4
|
||||
.section .init
|
||||
call OPENSSL_cpuid_setup
|
Loading…
Reference in New Issue