CloverBootloader/Library/OpensslLib/OpensslGen/IA32-MSFT/crypto/sha/sha1-586.nasm

3971 lines
107 KiB
NASM

%ifidn __OUTPUT_FORMAT__,obj
section code use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
$@feat.00 equ 1
section .text code align=64
%else
section .text code
%endif
;extern _OPENSSL_ia32cap_P
global _sha1_block_data_order
align 16
_sha1_block_data_order:
L$_sha1_block_data_order_begin:
push ebp
push ebx
push esi
push edi
call L$000pic_point
L$000pic_point:
pop ebp
lea esi,[_OPENSSL_ia32cap_P]
lea ebp,[(L$K_XX_XX-L$000pic_point)+ebp]
mov eax,DWORD [esi]
mov edx,DWORD [4+esi]
test edx,512
jz NEAR L$001x86
mov ecx,DWORD [8+esi]
test eax,16777216
jz NEAR L$001x86
test ecx,536870912
jnz NEAR L$shaext_shortcut
and edx,268435456
and eax,1073741824
or eax,edx
cmp eax,1342177280
je NEAR L$avx_shortcut
jmp NEAR L$ssse3_shortcut
align 16
L$001x86:
mov ebp,DWORD [20+esp]
mov esi,DWORD [24+esp]
mov eax,DWORD [28+esp]
sub esp,76
shl eax,6
add eax,esi
mov DWORD [104+esp],eax
mov edi,DWORD [16+ebp]
jmp NEAR L$002loop
align 16
L$002loop:
mov eax,DWORD [esi]
mov ebx,DWORD [4+esi]
mov ecx,DWORD [8+esi]
mov edx,DWORD [12+esi]
bswap eax
bswap ebx
bswap ecx
bswap edx
mov DWORD [esp],eax
mov DWORD [4+esp],ebx
mov DWORD [8+esp],ecx
mov DWORD [12+esp],edx
mov eax,DWORD [16+esi]
mov ebx,DWORD [20+esi]
mov ecx,DWORD [24+esi]
mov edx,DWORD [28+esi]
bswap eax
bswap ebx
bswap ecx
bswap edx
mov DWORD [16+esp],eax
mov DWORD [20+esp],ebx
mov DWORD [24+esp],ecx
mov DWORD [28+esp],edx
mov eax,DWORD [32+esi]
mov ebx,DWORD [36+esi]
mov ecx,DWORD [40+esi]
mov edx,DWORD [44+esi]
bswap eax
bswap ebx
bswap ecx
bswap edx
mov DWORD [32+esp],eax
mov DWORD [36+esp],ebx
mov DWORD [40+esp],ecx
mov DWORD [44+esp],edx
mov eax,DWORD [48+esi]
mov ebx,DWORD [52+esi]
mov ecx,DWORD [56+esi]
mov edx,DWORD [60+esi]
bswap eax
bswap ebx
bswap ecx
bswap edx
mov DWORD [48+esp],eax
mov DWORD [52+esp],ebx
mov DWORD [56+esp],ecx
mov DWORD [60+esp],edx
mov DWORD [100+esp],esi
mov eax,DWORD [ebp]
mov ebx,DWORD [4+ebp]
mov ecx,DWORD [8+ebp]
mov edx,DWORD [12+ebp]
; 00_15 0
mov esi,ecx
mov ebp,eax
rol ebp,5
xor esi,edx
add ebp,edi
mov edi,DWORD [esp]
and esi,ebx
ror ebx,2
xor esi,edx
lea ebp,[1518500249+edi*1+ebp]
add ebp,esi
; 00_15 1
mov edi,ebx
mov esi,ebp
rol ebp,5
xor edi,ecx
add ebp,edx
mov edx,DWORD [4+esp]
and edi,eax
ror eax,2
xor edi,ecx
lea ebp,[1518500249+edx*1+ebp]
add ebp,edi
; 00_15 2
mov edx,eax
mov edi,ebp
rol ebp,5
xor edx,ebx
add ebp,ecx
mov ecx,DWORD [8+esp]
and edx,esi
ror esi,2
xor edx,ebx
lea ebp,[1518500249+ecx*1+ebp]
add ebp,edx
; 00_15 3
mov ecx,esi
mov edx,ebp
rol ebp,5
xor ecx,eax
add ebp,ebx
mov ebx,DWORD [12+esp]
and ecx,edi
ror edi,2
xor ecx,eax
lea ebp,[1518500249+ebx*1+ebp]
add ebp,ecx
; 00_15 4
mov ebx,edi
mov ecx,ebp
rol ebp,5
xor ebx,esi
add ebp,eax
mov eax,DWORD [16+esp]
and ebx,edx
ror edx,2
xor ebx,esi
lea ebp,[1518500249+eax*1+ebp]
add ebp,ebx
; 00_15 5
mov eax,edx
mov ebx,ebp
rol ebp,5
xor eax,edi
add ebp,esi
mov esi,DWORD [20+esp]
and eax,ecx
ror ecx,2
xor eax,edi
lea ebp,[1518500249+esi*1+ebp]
add ebp,eax
; 00_15 6
mov esi,ecx
mov eax,ebp
rol ebp,5
xor esi,edx
add ebp,edi
mov edi,DWORD [24+esp]
and esi,ebx
ror ebx,2
xor esi,edx
lea ebp,[1518500249+edi*1+ebp]
add ebp,esi
; 00_15 7
mov edi,ebx
mov esi,ebp
rol ebp,5
xor edi,ecx
add ebp,edx
mov edx,DWORD [28+esp]
and edi,eax
ror eax,2
xor edi,ecx
lea ebp,[1518500249+edx*1+ebp]
add ebp,edi
; 00_15 8
mov edx,eax
mov edi,ebp
rol ebp,5
xor edx,ebx
add ebp,ecx
mov ecx,DWORD [32+esp]
and edx,esi
ror esi,2
xor edx,ebx
lea ebp,[1518500249+ecx*1+ebp]
add ebp,edx
; 00_15 9
mov ecx,esi
mov edx,ebp
rol ebp,5
xor ecx,eax
add ebp,ebx
mov ebx,DWORD [36+esp]
and ecx,edi
ror edi,2
xor ecx,eax
lea ebp,[1518500249+ebx*1+ebp]
add ebp,ecx
; 00_15 10
mov ebx,edi
mov ecx,ebp
rol ebp,5
xor ebx,esi
add ebp,eax
mov eax,DWORD [40+esp]
and ebx,edx
ror edx,2
xor ebx,esi
lea ebp,[1518500249+eax*1+ebp]
add ebp,ebx
; 00_15 11
mov eax,edx
mov ebx,ebp
rol ebp,5
xor eax,edi
add ebp,esi
mov esi,DWORD [44+esp]
and eax,ecx
ror ecx,2
xor eax,edi
lea ebp,[1518500249+esi*1+ebp]
add ebp,eax
; 00_15 12
mov esi,ecx
mov eax,ebp
rol ebp,5
xor esi,edx
add ebp,edi
mov edi,DWORD [48+esp]
and esi,ebx
ror ebx,2
xor esi,edx
lea ebp,[1518500249+edi*1+ebp]
add ebp,esi
; 00_15 13
mov edi,ebx
mov esi,ebp
rol ebp,5
xor edi,ecx
add ebp,edx
mov edx,DWORD [52+esp]
and edi,eax
ror eax,2
xor edi,ecx
lea ebp,[1518500249+edx*1+ebp]
add ebp,edi
; 00_15 14
mov edx,eax
mov edi,ebp
rol ebp,5
xor edx,ebx
add ebp,ecx
mov ecx,DWORD [56+esp]
and edx,esi
ror esi,2
xor edx,ebx
lea ebp,[1518500249+ecx*1+ebp]
add ebp,edx
; 00_15 15
mov ecx,esi
mov edx,ebp
rol ebp,5
xor ecx,eax
add ebp,ebx
mov ebx,DWORD [60+esp]
and ecx,edi
ror edi,2
xor ecx,eax
lea ebp,[1518500249+ebx*1+ebp]
mov ebx,DWORD [esp]
add ecx,ebp
; 16_19 16
mov ebp,edi
xor ebx,DWORD [8+esp]
xor ebp,esi
xor ebx,DWORD [32+esp]
and ebp,edx
xor ebx,DWORD [52+esp]
rol ebx,1
xor ebp,esi
add eax,ebp
mov ebp,ecx
ror edx,2
mov DWORD [esp],ebx
rol ebp,5
lea ebx,[1518500249+eax*1+ebx]
mov eax,DWORD [4+esp]
add ebx,ebp
; 16_19 17
mov ebp,edx
xor eax,DWORD [12+esp]
xor ebp,edi
xor eax,DWORD [36+esp]
and ebp,ecx
xor eax,DWORD [56+esp]
rol eax,1
xor ebp,edi
add esi,ebp
mov ebp,ebx
ror ecx,2
mov DWORD [4+esp],eax
rol ebp,5
lea eax,[1518500249+esi*1+eax]
mov esi,DWORD [8+esp]
add eax,ebp
; 16_19 18
mov ebp,ecx
xor esi,DWORD [16+esp]
xor ebp,edx
xor esi,DWORD [40+esp]
and ebp,ebx
xor esi,DWORD [60+esp]
rol esi,1
xor ebp,edx
add edi,ebp
mov ebp,eax
ror ebx,2
mov DWORD [8+esp],esi
rol ebp,5
lea esi,[1518500249+edi*1+esi]
mov edi,DWORD [12+esp]
add esi,ebp
; 16_19 19
mov ebp,ebx
xor edi,DWORD [20+esp]
xor ebp,ecx
xor edi,DWORD [44+esp]
and ebp,eax
xor edi,DWORD [esp]
rol edi,1
xor ebp,ecx
add edx,ebp
mov ebp,esi
ror eax,2
mov DWORD [12+esp],edi
rol ebp,5
lea edi,[1518500249+edx*1+edi]
mov edx,DWORD [16+esp]
add edi,ebp
; 20_39 20
mov ebp,esi
xor edx,DWORD [24+esp]
xor ebp,eax
xor edx,DWORD [48+esp]
xor ebp,ebx
xor edx,DWORD [4+esp]
rol edx,1
add ecx,ebp
ror esi,2
mov ebp,edi
rol ebp,5
mov DWORD [16+esp],edx
lea edx,[1859775393+ecx*1+edx]
mov ecx,DWORD [20+esp]
add edx,ebp
; 20_39 21
mov ebp,edi
xor ecx,DWORD [28+esp]
xor ebp,esi
xor ecx,DWORD [52+esp]
xor ebp,eax
xor ecx,DWORD [8+esp]
rol ecx,1
add ebx,ebp
ror edi,2
mov ebp,edx
rol ebp,5
mov DWORD [20+esp],ecx
lea ecx,[1859775393+ebx*1+ecx]
mov ebx,DWORD [24+esp]
add ecx,ebp
; 20_39 22
mov ebp,edx
xor ebx,DWORD [32+esp]
xor ebp,edi
xor ebx,DWORD [56+esp]
xor ebp,esi
xor ebx,DWORD [12+esp]
rol ebx,1
add eax,ebp
ror edx,2
mov ebp,ecx
rol ebp,5
mov DWORD [24+esp],ebx
lea ebx,[1859775393+eax*1+ebx]
mov eax,DWORD [28+esp]
add ebx,ebp
; 20_39 23
mov ebp,ecx
xor eax,DWORD [36+esp]
xor ebp,edx
xor eax,DWORD [60+esp]
xor ebp,edi
xor eax,DWORD [16+esp]
rol eax,1
add esi,ebp
ror ecx,2
mov ebp,ebx
rol ebp,5
mov DWORD [28+esp],eax
lea eax,[1859775393+esi*1+eax]
mov esi,DWORD [32+esp]
add eax,ebp
; 20_39 24
mov ebp,ebx
xor esi,DWORD [40+esp]
xor ebp,ecx
xor esi,DWORD [esp]
xor ebp,edx
xor esi,DWORD [20+esp]
rol esi,1
add edi,ebp
ror ebx,2
mov ebp,eax
rol ebp,5
mov DWORD [32+esp],esi
lea esi,[1859775393+edi*1+esi]
mov edi,DWORD [36+esp]
add esi,ebp
; 20_39 25
mov ebp,eax
xor edi,DWORD [44+esp]
xor ebp,ebx
xor edi,DWORD [4+esp]
xor ebp,ecx
xor edi,DWORD [24+esp]
rol edi,1
add edx,ebp
ror eax,2
mov ebp,esi
rol ebp,5
mov DWORD [36+esp],edi
lea edi,[1859775393+edx*1+edi]
mov edx,DWORD [40+esp]
add edi,ebp
; 20_39 26
mov ebp,esi
xor edx,DWORD [48+esp]
xor ebp,eax
xor edx,DWORD [8+esp]
xor ebp,ebx
xor edx,DWORD [28+esp]
rol edx,1
add ecx,ebp
ror esi,2
mov ebp,edi
rol ebp,5
mov DWORD [40+esp],edx
lea edx,[1859775393+ecx*1+edx]
mov ecx,DWORD [44+esp]
add edx,ebp
; 20_39 27
mov ebp,edi
xor ecx,DWORD [52+esp]
xor ebp,esi
xor ecx,DWORD [12+esp]
xor ebp,eax
xor ecx,DWORD [32+esp]
rol ecx,1
add ebx,ebp
ror edi,2
mov ebp,edx
rol ebp,5
mov DWORD [44+esp],ecx
lea ecx,[1859775393+ebx*1+ecx]
mov ebx,DWORD [48+esp]
add ecx,ebp
; 20_39 28
mov ebp,edx
xor ebx,DWORD [56+esp]
xor ebp,edi
xor ebx,DWORD [16+esp]
xor ebp,esi
xor ebx,DWORD [36+esp]
rol ebx,1
add eax,ebp
ror edx,2
mov ebp,ecx
rol ebp,5
mov DWORD [48+esp],ebx
lea ebx,[1859775393+eax*1+ebx]
mov eax,DWORD [52+esp]
add ebx,ebp
; 20_39 29
mov ebp,ecx
xor eax,DWORD [60+esp]
xor ebp,edx
xor eax,DWORD [20+esp]
xor ebp,edi
xor eax,DWORD [40+esp]
rol eax,1
add esi,ebp
ror ecx,2
mov ebp,ebx
rol ebp,5
mov DWORD [52+esp],eax
lea eax,[1859775393+esi*1+eax]
mov esi,DWORD [56+esp]
add eax,ebp
; 20_39 30
mov ebp,ebx
xor esi,DWORD [esp]
xor ebp,ecx
xor esi,DWORD [24+esp]
xor ebp,edx
xor esi,DWORD [44+esp]
rol esi,1
add edi,ebp
ror ebx,2
mov ebp,eax
rol ebp,5
mov DWORD [56+esp],esi
lea esi,[1859775393+edi*1+esi]
mov edi,DWORD [60+esp]
add esi,ebp
; 20_39 31
mov ebp,eax
xor edi,DWORD [4+esp]
xor ebp,ebx
xor edi,DWORD [28+esp]
xor ebp,ecx
xor edi,DWORD [48+esp]
rol edi,1
add edx,ebp
ror eax,2
mov ebp,esi
rol ebp,5
mov DWORD [60+esp],edi
lea edi,[1859775393+edx*1+edi]
mov edx,DWORD [esp]
add edi,ebp
; 20_39 32
mov ebp,esi
xor edx,DWORD [8+esp]
xor ebp,eax
xor edx,DWORD [32+esp]
xor ebp,ebx
xor edx,DWORD [52+esp]
rol edx,1
add ecx,ebp
ror esi,2
mov ebp,edi
rol ebp,5
mov DWORD [esp],edx
lea edx,[1859775393+ecx*1+edx]
mov ecx,DWORD [4+esp]
add edx,ebp
; 20_39 33
mov ebp,edi
xor ecx,DWORD [12+esp]
xor ebp,esi
xor ecx,DWORD [36+esp]
xor ebp,eax
xor ecx,DWORD [56+esp]
rol ecx,1
add ebx,ebp
ror edi,2
mov ebp,edx
rol ebp,5
mov DWORD [4+esp],ecx
lea ecx,[1859775393+ebx*1+ecx]
mov ebx,DWORD [8+esp]
add ecx,ebp
; 20_39 34
mov ebp,edx
xor ebx,DWORD [16+esp]
xor ebp,edi
xor ebx,DWORD [40+esp]
xor ebp,esi
xor ebx,DWORD [60+esp]
rol ebx,1
add eax,ebp
ror edx,2
mov ebp,ecx
rol ebp,5
mov DWORD [8+esp],ebx
lea ebx,[1859775393+eax*1+ebx]
mov eax,DWORD [12+esp]
add ebx,ebp
; 20_39 35
mov ebp,ecx
xor eax,DWORD [20+esp]
xor ebp,edx
xor eax,DWORD [44+esp]
xor ebp,edi
xor eax,DWORD [esp]
rol eax,1
add esi,ebp
ror ecx,2
mov ebp,ebx
rol ebp,5
mov DWORD [12+esp],eax
lea eax,[1859775393+esi*1+eax]
mov esi,DWORD [16+esp]
add eax,ebp
; 20_39 36
mov ebp,ebx
xor esi,DWORD [24+esp]
xor ebp,ecx
xor esi,DWORD [48+esp]
xor ebp,edx
xor esi,DWORD [4+esp]
rol esi,1
add edi,ebp
ror ebx,2
mov ebp,eax
rol ebp,5
mov DWORD [16+esp],esi
lea esi,[1859775393+edi*1+esi]
mov edi,DWORD [20+esp]
add esi,ebp
; 20_39 37
mov ebp,eax
xor edi,DWORD [28+esp]
xor ebp,ebx
xor edi,DWORD [52+esp]
xor ebp,ecx
xor edi,DWORD [8+esp]
rol edi,1
add edx,ebp
ror eax,2
mov ebp,esi
rol ebp,5
mov DWORD [20+esp],edi
lea edi,[1859775393+edx*1+edi]
mov edx,DWORD [24+esp]
add edi,ebp
; 20_39 38
mov ebp,esi
xor edx,DWORD [32+esp]
xor ebp,eax
xor edx,DWORD [56+esp]
xor ebp,ebx
xor edx,DWORD [12+esp]
rol edx,1
add ecx,ebp
ror esi,2
mov ebp,edi
rol ebp,5
mov DWORD [24+esp],edx
lea edx,[1859775393+ecx*1+edx]
mov ecx,DWORD [28+esp]
add edx,ebp
; 20_39 39
mov ebp,edi
xor ecx,DWORD [36+esp]
xor ebp,esi
xor ecx,DWORD [60+esp]
xor ebp,eax
xor ecx,DWORD [16+esp]
rol ecx,1
add ebx,ebp
ror edi,2
mov ebp,edx
rol ebp,5
mov DWORD [28+esp],ecx
lea ecx,[1859775393+ebx*1+ecx]
mov ebx,DWORD [32+esp]
add ecx,ebp
; 40_59 40
mov ebp,edi
xor ebx,DWORD [40+esp]
xor ebp,esi
xor ebx,DWORD [esp]
and ebp,edx
xor ebx,DWORD [20+esp]
rol ebx,1
add ebp,eax
ror edx,2
mov eax,ecx
rol eax,5
mov DWORD [32+esp],ebx
lea ebx,[2400959708+ebp*1+ebx]
mov ebp,edi
add ebx,eax
and ebp,esi
mov eax,DWORD [36+esp]
add ebx,ebp
; 40_59 41
mov ebp,edx
xor eax,DWORD [44+esp]
xor ebp,edi
xor eax,DWORD [4+esp]
and ebp,ecx
xor eax,DWORD [24+esp]
rol eax,1
add ebp,esi
ror ecx,2
mov esi,ebx
rol esi,5
mov DWORD [36+esp],eax
lea eax,[2400959708+ebp*1+eax]
mov ebp,edx
add eax,esi
and ebp,edi
mov esi,DWORD [40+esp]
add eax,ebp
; 40_59 42
mov ebp,ecx
xor esi,DWORD [48+esp]
xor ebp,edx
xor esi,DWORD [8+esp]
and ebp,ebx
xor esi,DWORD [28+esp]
rol esi,1
add ebp,edi
ror ebx,2
mov edi,eax
rol edi,5
mov DWORD [40+esp],esi
lea esi,[2400959708+ebp*1+esi]
mov ebp,ecx
add esi,edi
and ebp,edx
mov edi,DWORD [44+esp]
add esi,ebp
; 40_59 43
mov ebp,ebx
xor edi,DWORD [52+esp]
xor ebp,ecx
xor edi,DWORD [12+esp]
and ebp,eax
xor edi,DWORD [32+esp]
rol edi,1
add ebp,edx
ror eax,2
mov edx,esi
rol edx,5
mov DWORD [44+esp],edi
lea edi,[2400959708+ebp*1+edi]
mov ebp,ebx
add edi,edx
and ebp,ecx
mov edx,DWORD [48+esp]
add edi,ebp
; 40_59 44
mov ebp,eax
xor edx,DWORD [56+esp]
xor ebp,ebx
xor edx,DWORD [16+esp]
and ebp,esi
xor edx,DWORD [36+esp]
rol edx,1
add ebp,ecx
ror esi,2
mov ecx,edi
rol ecx,5
mov DWORD [48+esp],edx
lea edx,[2400959708+ebp*1+edx]
mov ebp,eax
add edx,ecx
and ebp,ebx
mov ecx,DWORD [52+esp]
add edx,ebp
; 40_59 45
mov ebp,esi
xor ecx,DWORD [60+esp]
xor ebp,eax
xor ecx,DWORD [20+esp]
and ebp,edi
xor ecx,DWORD [40+esp]
rol ecx,1
add ebp,ebx
ror edi,2
mov ebx,edx
rol ebx,5
mov DWORD [52+esp],ecx
lea ecx,[2400959708+ebp*1+ecx]
mov ebp,esi
add ecx,ebx
and ebp,eax
mov ebx,DWORD [56+esp]
add ecx,ebp
; 40_59 46
mov ebp,edi
xor ebx,DWORD [esp]
xor ebp,esi
xor ebx,DWORD [24+esp]
and ebp,edx
xor ebx,DWORD [44+esp]
rol ebx,1
add ebp,eax
ror edx,2
mov eax,ecx
rol eax,5
mov DWORD [56+esp],ebx
lea ebx,[2400959708+ebp*1+ebx]
mov ebp,edi
add ebx,eax
and ebp,esi
mov eax,DWORD [60+esp]
add ebx,ebp
; 40_59 47
mov ebp,edx
xor eax,DWORD [4+esp]
xor ebp,edi
xor eax,DWORD [28+esp]
and ebp,ecx
xor eax,DWORD [48+esp]
rol eax,1
add ebp,esi
ror ecx,2
mov esi,ebx
rol esi,5
mov DWORD [60+esp],eax
lea eax,[2400959708+ebp*1+eax]
mov ebp,edx
add eax,esi
and ebp,edi
mov esi,DWORD [esp]
add eax,ebp
; 40_59 48
mov ebp,ecx
xor esi,DWORD [8+esp]
xor ebp,edx
xor esi,DWORD [32+esp]
and ebp,ebx
xor esi,DWORD [52+esp]
rol esi,1
add ebp,edi
ror ebx,2
mov edi,eax
rol edi,5
mov DWORD [esp],esi
lea esi,[2400959708+ebp*1+esi]
mov ebp,ecx
add esi,edi
and ebp,edx
mov edi,DWORD [4+esp]
add esi,ebp
; 40_59 49
mov ebp,ebx
xor edi,DWORD [12+esp]
xor ebp,ecx
xor edi,DWORD [36+esp]
and ebp,eax
xor edi,DWORD [56+esp]
rol edi,1
add ebp,edx
ror eax,2
mov edx,esi
rol edx,5
mov DWORD [4+esp],edi
lea edi,[2400959708+ebp*1+edi]
mov ebp,ebx
add edi,edx
and ebp,ecx
mov edx,DWORD [8+esp]
add edi,ebp
; 40_59 50
mov ebp,eax
xor edx,DWORD [16+esp]
xor ebp,ebx
xor edx,DWORD [40+esp]
and ebp,esi
xor edx,DWORD [60+esp]
rol edx,1
add ebp,ecx
ror esi,2
mov ecx,edi
rol ecx,5
mov DWORD [8+esp],edx
lea edx,[2400959708+ebp*1+edx]
mov ebp,eax
add edx,ecx
and ebp,ebx
mov ecx,DWORD [12+esp]
add edx,ebp
; 40_59 51
mov ebp,esi
xor ecx,DWORD [20+esp]
xor ebp,eax
xor ecx,DWORD [44+esp]
and ebp,edi
xor ecx,DWORD [esp]
rol ecx,1
add ebp,ebx
ror edi,2
mov ebx,edx
rol ebx,5
mov DWORD [12+esp],ecx
lea ecx,[2400959708+ebp*1+ecx]
mov ebp,esi
add ecx,ebx
and ebp,eax
mov ebx,DWORD [16+esp]
add ecx,ebp
; 40_59 52
mov ebp,edi
xor ebx,DWORD [24+esp]
xor ebp,esi
xor ebx,DWORD [48+esp]
and ebp,edx
xor ebx,DWORD [4+esp]
rol ebx,1
add ebp,eax
ror edx,2
mov eax,ecx
rol eax,5
mov DWORD [16+esp],ebx
lea ebx,[2400959708+ebp*1+ebx]
mov ebp,edi
add ebx,eax
and ebp,esi
mov eax,DWORD [20+esp]
add ebx,ebp
; 40_59 53
mov ebp,edx
xor eax,DWORD [28+esp]
xor ebp,edi
xor eax,DWORD [52+esp]
and ebp,ecx
xor eax,DWORD [8+esp]
rol eax,1
add ebp,esi
ror ecx,2
mov esi,ebx
rol esi,5
mov DWORD [20+esp],eax
lea eax,[2400959708+ebp*1+eax]
mov ebp,edx
add eax,esi
and ebp,edi
mov esi,DWORD [24+esp]
add eax,ebp
; 40_59 54
mov ebp,ecx
xor esi,DWORD [32+esp]
xor ebp,edx
xor esi,DWORD [56+esp]
and ebp,ebx
xor esi,DWORD [12+esp]
rol esi,1
add ebp,edi
ror ebx,2
mov edi,eax
rol edi,5
mov DWORD [24+esp],esi
lea esi,[2400959708+ebp*1+esi]
mov ebp,ecx
add esi,edi
and ebp,edx
mov edi,DWORD [28+esp]
add esi,ebp
; 40_59 55
mov ebp,ebx
xor edi,DWORD [36+esp]
xor ebp,ecx
xor edi,DWORD [60+esp]
and ebp,eax
xor edi,DWORD [16+esp]
rol edi,1
add ebp,edx
ror eax,2
mov edx,esi
rol edx,5
mov DWORD [28+esp],edi
lea edi,[2400959708+ebp*1+edi]
mov ebp,ebx
add edi,edx
and ebp,ecx
mov edx,DWORD [32+esp]
add edi,ebp
; 40_59 56
mov ebp,eax
xor edx,DWORD [40+esp]
xor ebp,ebx
xor edx,DWORD [esp]
and ebp,esi
xor edx,DWORD [20+esp]
rol edx,1
add ebp,ecx
ror esi,2
mov ecx,edi
rol ecx,5
mov DWORD [32+esp],edx
lea edx,[2400959708+ebp*1+edx]
mov ebp,eax
add edx,ecx
and ebp,ebx
mov ecx,DWORD [36+esp]
add edx,ebp
; 40_59 57
mov ebp,esi
xor ecx,DWORD [44+esp]
xor ebp,eax
xor ecx,DWORD [4+esp]
and ebp,edi
xor ecx,DWORD [24+esp]
rol ecx,1
add ebp,ebx
ror edi,2
mov ebx,edx
rol ebx,5
mov DWORD [36+esp],ecx
lea ecx,[2400959708+ebp*1+ecx]
mov ebp,esi
add ecx,ebx
and ebp,eax
mov ebx,DWORD [40+esp]
add ecx,ebp
; 40_59 58
mov ebp,edi
xor ebx,DWORD [48+esp]
xor ebp,esi
xor ebx,DWORD [8+esp]
and ebp,edx
xor ebx,DWORD [28+esp]
rol ebx,1
add ebp,eax
ror edx,2
mov eax,ecx
rol eax,5
mov DWORD [40+esp],ebx
lea ebx,[2400959708+ebp*1+ebx]
mov ebp,edi
add ebx,eax
and ebp,esi
mov eax,DWORD [44+esp]
add ebx,ebp
; 40_59 59
mov ebp,edx
xor eax,DWORD [52+esp]
xor ebp,edi
xor eax,DWORD [12+esp]
and ebp,ecx
xor eax,DWORD [32+esp]
rol eax,1
add ebp,esi
ror ecx,2
mov esi,ebx
rol esi,5
mov DWORD [44+esp],eax
lea eax,[2400959708+ebp*1+eax]
mov ebp,edx
add eax,esi
and ebp,edi
mov esi,DWORD [48+esp]
add eax,ebp
; 20_39 60
mov ebp,ebx
xor esi,DWORD [56+esp]
xor ebp,ecx
xor esi,DWORD [16+esp]
xor ebp,edx
xor esi,DWORD [36+esp]
rol esi,1
add edi,ebp
ror ebx,2
mov ebp,eax
rol ebp,5
mov DWORD [48+esp],esi
lea esi,[3395469782+edi*1+esi]
mov edi,DWORD [52+esp]
add esi,ebp
; 20_39 61
mov ebp,eax
xor edi,DWORD [60+esp]
xor ebp,ebx
xor edi,DWORD [20+esp]
xor ebp,ecx
xor edi,DWORD [40+esp]
rol edi,1
add edx,ebp
ror eax,2
mov ebp,esi
rol ebp,5
mov DWORD [52+esp],edi
lea edi,[3395469782+edx*1+edi]
mov edx,DWORD [56+esp]
add edi,ebp
; 20_39 62
mov ebp,esi
xor edx,DWORD [esp]
xor ebp,eax
xor edx,DWORD [24+esp]
xor ebp,ebx
xor edx,DWORD [44+esp]
rol edx,1
add ecx,ebp
ror esi,2
mov ebp,edi
rol ebp,5
mov DWORD [56+esp],edx
lea edx,[3395469782+ecx*1+edx]
mov ecx,DWORD [60+esp]
add edx,ebp
; 20_39 63
mov ebp,edi
xor ecx,DWORD [4+esp]
xor ebp,esi
xor ecx,DWORD [28+esp]
xor ebp,eax
xor ecx,DWORD [48+esp]
rol ecx,1
add ebx,ebp
ror edi,2
mov ebp,edx
rol ebp,5
mov DWORD [60+esp],ecx
lea ecx,[3395469782+ebx*1+ecx]
mov ebx,DWORD [esp]
add ecx,ebp
; 20_39 64
mov ebp,edx
xor ebx,DWORD [8+esp]
xor ebp,edi
xor ebx,DWORD [32+esp]
xor ebp,esi
xor ebx,DWORD [52+esp]
rol ebx,1
add eax,ebp
ror edx,2
mov ebp,ecx
rol ebp,5
mov DWORD [esp],ebx
lea ebx,[3395469782+eax*1+ebx]
mov eax,DWORD [4+esp]
add ebx,ebp
; 20_39 65
mov ebp,ecx
xor eax,DWORD [12+esp]
xor ebp,edx
xor eax,DWORD [36+esp]
xor ebp,edi
xor eax,DWORD [56+esp]
rol eax,1
add esi,ebp
ror ecx,2
mov ebp,ebx
rol ebp,5
mov DWORD [4+esp],eax
lea eax,[3395469782+esi*1+eax]
mov esi,DWORD [8+esp]
add eax,ebp
; 20_39 66
mov ebp,ebx
xor esi,DWORD [16+esp]
xor ebp,ecx
xor esi,DWORD [40+esp]
xor ebp,edx
xor esi,DWORD [60+esp]
rol esi,1
add edi,ebp
ror ebx,2
mov ebp,eax
rol ebp,5
mov DWORD [8+esp],esi
lea esi,[3395469782+edi*1+esi]
mov edi,DWORD [12+esp]
add esi,ebp
; 20_39 67
mov ebp,eax
xor edi,DWORD [20+esp]
xor ebp,ebx
xor edi,DWORD [44+esp]
xor ebp,ecx
xor edi,DWORD [esp]
rol edi,1
add edx,ebp
ror eax,2
mov ebp,esi
rol ebp,5
mov DWORD [12+esp],edi
lea edi,[3395469782+edx*1+edi]
mov edx,DWORD [16+esp]
add edi,ebp
; 20_39 68
mov ebp,esi
xor edx,DWORD [24+esp]
xor ebp,eax
xor edx,DWORD [48+esp]
xor ebp,ebx
xor edx,DWORD [4+esp]
rol edx,1
add ecx,ebp
ror esi,2
mov ebp,edi
rol ebp,5
mov DWORD [16+esp],edx
lea edx,[3395469782+ecx*1+edx]
mov ecx,DWORD [20+esp]
add edx,ebp
; 20_39 69
mov ebp,edi
xor ecx,DWORD [28+esp]
xor ebp,esi
xor ecx,DWORD [52+esp]
xor ebp,eax
xor ecx,DWORD [8+esp]
rol ecx,1
add ebx,ebp
ror edi,2
mov ebp,edx
rol ebp,5
mov DWORD [20+esp],ecx
lea ecx,[3395469782+ebx*1+ecx]
mov ebx,DWORD [24+esp]
add ecx,ebp
; 20_39 70
mov ebp,edx
xor ebx,DWORD [32+esp]
xor ebp,edi
xor ebx,DWORD [56+esp]
xor ebp,esi
xor ebx,DWORD [12+esp]
rol ebx,1
add eax,ebp
ror edx,2
mov ebp,ecx
rol ebp,5
mov DWORD [24+esp],ebx
lea ebx,[3395469782+eax*1+ebx]
mov eax,DWORD [28+esp]
add ebx,ebp
; 20_39 71
mov ebp,ecx
xor eax,DWORD [36+esp]
xor ebp,edx
xor eax,DWORD [60+esp]
xor ebp,edi
xor eax,DWORD [16+esp]
rol eax,1
add esi,ebp
ror ecx,2
mov ebp,ebx
rol ebp,5
mov DWORD [28+esp],eax
lea eax,[3395469782+esi*1+eax]
mov esi,DWORD [32+esp]
add eax,ebp
; 20_39 72
mov ebp,ebx
xor esi,DWORD [40+esp]
xor ebp,ecx
xor esi,DWORD [esp]
xor ebp,edx
xor esi,DWORD [20+esp]
rol esi,1
add edi,ebp
ror ebx,2
mov ebp,eax
rol ebp,5
mov DWORD [32+esp],esi
lea esi,[3395469782+edi*1+esi]
mov edi,DWORD [36+esp]
add esi,ebp
; 20_39 73
mov ebp,eax
xor edi,DWORD [44+esp]
xor ebp,ebx
xor edi,DWORD [4+esp]
xor ebp,ecx
xor edi,DWORD [24+esp]
rol edi,1
add edx,ebp
ror eax,2
mov ebp,esi
rol ebp,5
mov DWORD [36+esp],edi
lea edi,[3395469782+edx*1+edi]
mov edx,DWORD [40+esp]
add edi,ebp
; 20_39 74
mov ebp,esi
xor edx,DWORD [48+esp]
xor ebp,eax
xor edx,DWORD [8+esp]
xor ebp,ebx
xor edx,DWORD [28+esp]
rol edx,1
add ecx,ebp
ror esi,2
mov ebp,edi
rol ebp,5
mov DWORD [40+esp],edx
lea edx,[3395469782+ecx*1+edx]
mov ecx,DWORD [44+esp]
add edx,ebp
; 20_39 75
mov ebp,edi
xor ecx,DWORD [52+esp]
xor ebp,esi
xor ecx,DWORD [12+esp]
xor ebp,eax
xor ecx,DWORD [32+esp]
rol ecx,1
add ebx,ebp
ror edi,2
mov ebp,edx
rol ebp,5
mov DWORD [44+esp],ecx
lea ecx,[3395469782+ebx*1+ecx]
mov ebx,DWORD [48+esp]
add ecx,ebp
; 20_39 76
mov ebp,edx
xor ebx,DWORD [56+esp]
xor ebp,edi
xor ebx,DWORD [16+esp]
xor ebp,esi
xor ebx,DWORD [36+esp]
rol ebx,1
add eax,ebp
ror edx,2
mov ebp,ecx
rol ebp,5
mov DWORD [48+esp],ebx
lea ebx,[3395469782+eax*1+ebx]
mov eax,DWORD [52+esp]
add ebx,ebp
; 20_39 77
mov ebp,ecx
xor eax,DWORD [60+esp]
xor ebp,edx
xor eax,DWORD [20+esp]
xor ebp,edi
xor eax,DWORD [40+esp]
rol eax,1
add esi,ebp
ror ecx,2
mov ebp,ebx
rol ebp,5
lea eax,[3395469782+esi*1+eax]
mov esi,DWORD [56+esp]
add eax,ebp
; 20_39 78
mov ebp,ebx
xor esi,DWORD [esp]
xor ebp,ecx
xor esi,DWORD [24+esp]
xor ebp,edx
xor esi,DWORD [44+esp]
rol esi,1
add edi,ebp
ror ebx,2
mov ebp,eax
rol ebp,5
lea esi,[3395469782+edi*1+esi]
mov edi,DWORD [60+esp]
add esi,ebp
; 20_39 79
mov ebp,eax
xor edi,DWORD [4+esp]
xor ebp,ebx
xor edi,DWORD [28+esp]
xor ebp,ecx
xor edi,DWORD [48+esp]
rol edi,1
add edx,ebp
ror eax,2
mov ebp,esi
rol ebp,5
lea edi,[3395469782+edx*1+edi]
add edi,ebp
mov ebp,DWORD [96+esp]
mov edx,DWORD [100+esp]
add edi,DWORD [ebp]
add esi,DWORD [4+ebp]
add eax,DWORD [8+ebp]
add ebx,DWORD [12+ebp]
add ecx,DWORD [16+ebp]
mov DWORD [ebp],edi
add edx,64
mov DWORD [4+ebp],esi
cmp edx,DWORD [104+esp]
mov DWORD [8+ebp],eax
mov edi,ecx
mov DWORD [12+ebp],ebx
mov esi,edx
mov DWORD [16+ebp],ecx
jb NEAR L$002loop
add esp,76
pop edi
pop esi
pop ebx
pop ebp
ret
align 16
__sha1_block_data_order_shaext:
push ebp
push ebx
push esi
push edi
call L$003pic_point
L$003pic_point:
pop ebp
lea ebp,[(L$K_XX_XX-L$003pic_point)+ebp]
L$shaext_shortcut:
mov edi,DWORD [20+esp]
mov ebx,esp
mov esi,DWORD [24+esp]
mov ecx,DWORD [28+esp]
sub esp,32
movdqu xmm0,[edi]
movd xmm1,DWORD [16+edi]
and esp,-32
movdqa xmm3,[80+ebp]
movdqu xmm4,[esi]
pshufd xmm0,xmm0,27
movdqu xmm5,[16+esi]
pshufd xmm1,xmm1,27
movdqu xmm6,[32+esi]
db 102,15,56,0,227
movdqu xmm7,[48+esi]
db 102,15,56,0,235
db 102,15,56,0,243
db 102,15,56,0,251
jmp NEAR L$004loop_shaext
align 16
L$004loop_shaext:
dec ecx
lea eax,[64+esi]
movdqa [esp],xmm1
paddd xmm1,xmm4
cmovne esi,eax
movdqa [16+esp],xmm0
db 15,56,201,229
movdqa xmm2,xmm0
db 15,58,204,193,0
db 15,56,200,213
pxor xmm4,xmm6
db 15,56,201,238
db 15,56,202,231
movdqa xmm1,xmm0
db 15,58,204,194,0
db 15,56,200,206
pxor xmm5,xmm7
db 15,56,202,236
db 15,56,201,247
movdqa xmm2,xmm0
db 15,58,204,193,0
db 15,56,200,215
pxor xmm6,xmm4
db 15,56,201,252
db 15,56,202,245
movdqa xmm1,xmm0
db 15,58,204,194,0
db 15,56,200,204
pxor xmm7,xmm5
db 15,56,202,254
db 15,56,201,229
movdqa xmm2,xmm0
db 15,58,204,193,0
db 15,56,200,213
pxor xmm4,xmm6
db 15,56,201,238
db 15,56,202,231
movdqa xmm1,xmm0
db 15,58,204,194,1
db 15,56,200,206
pxor xmm5,xmm7
db 15,56,202,236
db 15,56,201,247
movdqa xmm2,xmm0
db 15,58,204,193,1
db 15,56,200,215
pxor xmm6,xmm4
db 15,56,201,252
db 15,56,202,245
movdqa xmm1,xmm0
db 15,58,204,194,1
db 15,56,200,204
pxor xmm7,xmm5
db 15,56,202,254
db 15,56,201,229
movdqa xmm2,xmm0
db 15,58,204,193,1
db 15,56,200,213
pxor xmm4,xmm6
db 15,56,201,238
db 15,56,202,231
movdqa xmm1,xmm0
db 15,58,204,194,1
db 15,56,200,206
pxor xmm5,xmm7
db 15,56,202,236
db 15,56,201,247
movdqa xmm2,xmm0
db 15,58,204,193,2
db 15,56,200,215
pxor xmm6,xmm4
db 15,56,201,252
db 15,56,202,245
movdqa xmm1,xmm0
db 15,58,204,194,2
db 15,56,200,204
pxor xmm7,xmm5
db 15,56,202,254
db 15,56,201,229
movdqa xmm2,xmm0
db 15,58,204,193,2
db 15,56,200,213
pxor xmm4,xmm6
db 15,56,201,238
db 15,56,202,231
movdqa xmm1,xmm0
db 15,58,204,194,2
db 15,56,200,206
pxor xmm5,xmm7
db 15,56,202,236
db 15,56,201,247
movdqa xmm2,xmm0
db 15,58,204,193,2
db 15,56,200,215
pxor xmm6,xmm4
db 15,56,201,252
db 15,56,202,245
movdqa xmm1,xmm0
db 15,58,204,194,3
db 15,56,200,204
pxor xmm7,xmm5
db 15,56,202,254
movdqu xmm4,[esi]
movdqa xmm2,xmm0
db 15,58,204,193,3
db 15,56,200,213
movdqu xmm5,[16+esi]
db 102,15,56,0,227
movdqa xmm1,xmm0
db 15,58,204,194,3
db 15,56,200,206
movdqu xmm6,[32+esi]
db 102,15,56,0,235
movdqa xmm2,xmm0
db 15,58,204,193,3
db 15,56,200,215
movdqu xmm7,[48+esi]
db 102,15,56,0,243
movdqa xmm1,xmm0
db 15,58,204,194,3
movdqa xmm2,[esp]
db 102,15,56,0,251
db 15,56,200,202
paddd xmm0,[16+esp]
jnz NEAR L$004loop_shaext
pshufd xmm0,xmm0,27
pshufd xmm1,xmm1,27
movdqu [edi],xmm0
movd DWORD [16+edi],xmm1
mov esp,ebx
pop edi
pop esi
pop ebx
pop ebp
ret
align 16
__sha1_block_data_order_ssse3:
push ebp
push ebx
push esi
push edi
call L$005pic_point
L$005pic_point:
pop ebp
lea ebp,[(L$K_XX_XX-L$005pic_point)+ebp]
L$ssse3_shortcut:
movdqa xmm7,[ebp]
movdqa xmm0,[16+ebp]
movdqa xmm1,[32+ebp]
movdqa xmm2,[48+ebp]
movdqa xmm6,[64+ebp]
mov edi,DWORD [20+esp]
mov ebp,DWORD [24+esp]
mov edx,DWORD [28+esp]
mov esi,esp
sub esp,208
and esp,-64
movdqa [112+esp],xmm0
movdqa [128+esp],xmm1
movdqa [144+esp],xmm2
shl edx,6
movdqa [160+esp],xmm7
add edx,ebp
movdqa [176+esp],xmm6
add ebp,64
mov DWORD [192+esp],edi
mov DWORD [196+esp],ebp
mov DWORD [200+esp],edx
mov DWORD [204+esp],esi
mov eax,DWORD [edi]
mov ebx,DWORD [4+edi]
mov ecx,DWORD [8+edi]
mov edx,DWORD [12+edi]
mov edi,DWORD [16+edi]
mov esi,ebx
movdqu xmm0,[ebp-64]
movdqu xmm1,[ebp-48]
movdqu xmm2,[ebp-32]
movdqu xmm3,[ebp-16]
db 102,15,56,0,198
db 102,15,56,0,206
db 102,15,56,0,214
movdqa [96+esp],xmm7
db 102,15,56,0,222
paddd xmm0,xmm7
paddd xmm1,xmm7
paddd xmm2,xmm7
movdqa [esp],xmm0
psubd xmm0,xmm7
movdqa [16+esp],xmm1
psubd xmm1,xmm7
movdqa [32+esp],xmm2
mov ebp,ecx
psubd xmm2,xmm7
xor ebp,edx
pshufd xmm4,xmm0,238
and esi,ebp
jmp NEAR L$006loop
align 16
L$006loop:
ror ebx,2
xor esi,edx
mov ebp,eax
punpcklqdq xmm4,xmm1
movdqa xmm6,xmm3
add edi,DWORD [esp]
xor ebx,ecx
paddd xmm7,xmm3
movdqa [64+esp],xmm0
rol eax,5
add edi,esi
psrldq xmm6,4
and ebp,ebx
xor ebx,ecx
pxor xmm4,xmm0
add edi,eax
ror eax,7
pxor xmm6,xmm2
xor ebp,ecx
mov esi,edi
add edx,DWORD [4+esp]
pxor xmm4,xmm6
xor eax,ebx
rol edi,5
movdqa [48+esp],xmm7
add edx,ebp
and esi,eax
movdqa xmm0,xmm4
xor eax,ebx
add edx,edi
ror edi,7
movdqa xmm6,xmm4
xor esi,ebx
pslldq xmm0,12
paddd xmm4,xmm4
mov ebp,edx
add ecx,DWORD [8+esp]
psrld xmm6,31
xor edi,eax
rol edx,5
movdqa xmm7,xmm0
add ecx,esi
and ebp,edi
xor edi,eax
psrld xmm0,30
add ecx,edx
ror edx,7
por xmm4,xmm6
xor ebp,eax
mov esi,ecx
add ebx,DWORD [12+esp]
pslld xmm7,2
xor edx,edi
rol ecx,5
pxor xmm4,xmm0
movdqa xmm0,[96+esp]
add ebx,ebp
and esi,edx
pxor xmm4,xmm7
pshufd xmm5,xmm1,238
xor edx,edi
add ebx,ecx
ror ecx,7
xor esi,edi
mov ebp,ebx
punpcklqdq xmm5,xmm2
movdqa xmm7,xmm4
add eax,DWORD [16+esp]
xor ecx,edx
paddd xmm0,xmm4
movdqa [80+esp],xmm1
rol ebx,5
add eax,esi
psrldq xmm7,4
and ebp,ecx
xor ecx,edx
pxor xmm5,xmm1
add eax,ebx
ror ebx,7
pxor xmm7,xmm3
xor ebp,edx
mov esi,eax
add edi,DWORD [20+esp]
pxor xmm5,xmm7
xor ebx,ecx
rol eax,5
movdqa [esp],xmm0
add edi,ebp
and esi,ebx
movdqa xmm1,xmm5
xor ebx,ecx
add edi,eax
ror eax,7
movdqa xmm7,xmm5
xor esi,ecx
pslldq xmm1,12
paddd xmm5,xmm5
mov ebp,edi
add edx,DWORD [24+esp]
psrld xmm7,31
xor eax,ebx
rol edi,5
movdqa xmm0,xmm1
add edx,esi
and ebp,eax
xor eax,ebx
psrld xmm1,30
add edx,edi
ror edi,7
por xmm5,xmm7
xor ebp,ebx
mov esi,edx
add ecx,DWORD [28+esp]
pslld xmm0,2
xor edi,eax
rol edx,5
pxor xmm5,xmm1
movdqa xmm1,[112+esp]
add ecx,ebp
and esi,edi
pxor xmm5,xmm0
pshufd xmm6,xmm2,238
xor edi,eax
add ecx,edx
ror edx,7
xor esi,eax
mov ebp,ecx
punpcklqdq xmm6,xmm3
movdqa xmm0,xmm5
add ebx,DWORD [32+esp]
xor edx,edi
paddd xmm1,xmm5
movdqa [96+esp],xmm2
rol ecx,5
add ebx,esi
psrldq xmm0,4
and ebp,edx
xor edx,edi
pxor xmm6,xmm2
add ebx,ecx
ror ecx,7
pxor xmm0,xmm4
xor ebp,edi
mov esi,ebx
add eax,DWORD [36+esp]
pxor xmm6,xmm0
xor ecx,edx
rol ebx,5
movdqa [16+esp],xmm1
add eax,ebp
and esi,ecx
movdqa xmm2,xmm6
xor ecx,edx
add eax,ebx
ror ebx,7
movdqa xmm0,xmm6
xor esi,edx
pslldq xmm2,12
paddd xmm6,xmm6
mov ebp,eax
add edi,DWORD [40+esp]
psrld xmm0,31
xor ebx,ecx
rol eax,5
movdqa xmm1,xmm2
add edi,esi
and ebp,ebx
xor ebx,ecx
psrld xmm2,30
add edi,eax
ror eax,7
por xmm6,xmm0
xor ebp,ecx
movdqa xmm0,[64+esp]
mov esi,edi
add edx,DWORD [44+esp]
pslld xmm1,2
xor eax,ebx
rol edi,5
pxor xmm6,xmm2
movdqa xmm2,[112+esp]
add edx,ebp
and esi,eax
pxor xmm6,xmm1
pshufd xmm7,xmm3,238
xor eax,ebx
add edx,edi
ror edi,7
xor esi,ebx
mov ebp,edx
punpcklqdq xmm7,xmm4
movdqa xmm1,xmm6
add ecx,DWORD [48+esp]
xor edi,eax
paddd xmm2,xmm6
movdqa [64+esp],xmm3
rol edx,5
add ecx,esi
psrldq xmm1,4
and ebp,edi
xor edi,eax
pxor xmm7,xmm3
add ecx,edx
ror edx,7
pxor xmm1,xmm5
xor ebp,eax
mov esi,ecx
add ebx,DWORD [52+esp]
pxor xmm7,xmm1
xor edx,edi
rol ecx,5
movdqa [32+esp],xmm2
add ebx,ebp
and esi,edx
movdqa xmm3,xmm7
xor edx,edi
add ebx,ecx
ror ecx,7
movdqa xmm1,xmm7
xor esi,edi
pslldq xmm3,12
paddd xmm7,xmm7
mov ebp,ebx
add eax,DWORD [56+esp]
psrld xmm1,31
xor ecx,edx
rol ebx,5
movdqa xmm2,xmm3
add eax,esi
and ebp,ecx
xor ecx,edx
psrld xmm3,30
add eax,ebx
ror ebx,7
por xmm7,xmm1
xor ebp,edx
movdqa xmm1,[80+esp]
mov esi,eax
add edi,DWORD [60+esp]
pslld xmm2,2
xor ebx,ecx
rol eax,5
pxor xmm7,xmm3
movdqa xmm3,[112+esp]
add edi,ebp
and esi,ebx
pxor xmm7,xmm2
pshufd xmm2,xmm6,238
xor ebx,ecx
add edi,eax
ror eax,7
pxor xmm0,xmm4
punpcklqdq xmm2,xmm7
xor esi,ecx
mov ebp,edi
add edx,DWORD [esp]
pxor xmm0,xmm1
movdqa [80+esp],xmm4
xor eax,ebx
rol edi,5
movdqa xmm4,xmm3
add edx,esi
paddd xmm3,xmm7
and ebp,eax
pxor xmm0,xmm2
xor eax,ebx
add edx,edi
ror edi,7
xor ebp,ebx
movdqa xmm2,xmm0
movdqa [48+esp],xmm3
mov esi,edx
add ecx,DWORD [4+esp]
xor edi,eax
rol edx,5
pslld xmm0,2
add ecx,ebp
and esi,edi
psrld xmm2,30
xor edi,eax
add ecx,edx
ror edx,7
xor esi,eax
mov ebp,ecx
add ebx,DWORD [8+esp]
xor edx,edi
rol ecx,5
por xmm0,xmm2
add ebx,esi
and ebp,edx
movdqa xmm2,[96+esp]
xor edx,edi
add ebx,ecx
add eax,DWORD [12+esp]
xor ebp,edi
mov esi,ebx
pshufd xmm3,xmm7,238
rol ebx,5
add eax,ebp
xor esi,edx
ror ecx,7
add eax,ebx
add edi,DWORD [16+esp]
pxor xmm1,xmm5
punpcklqdq xmm3,xmm0
xor esi,ecx
mov ebp,eax
rol eax,5
pxor xmm1,xmm2
movdqa [96+esp],xmm5
add edi,esi
xor ebp,ecx
movdqa xmm5,xmm4
ror ebx,7
paddd xmm4,xmm0
add edi,eax
pxor xmm1,xmm3
add edx,DWORD [20+esp]
xor ebp,ebx
mov esi,edi
rol edi,5
movdqa xmm3,xmm1
movdqa [esp],xmm4
add edx,ebp
xor esi,ebx
ror eax,7
add edx,edi
pslld xmm1,2
add ecx,DWORD [24+esp]
xor esi,eax
psrld xmm3,30
mov ebp,edx
rol edx,5
add ecx,esi
xor ebp,eax
ror edi,7
add ecx,edx
por xmm1,xmm3
add ebx,DWORD [28+esp]
xor ebp,edi
movdqa xmm3,[64+esp]
mov esi,ecx
rol ecx,5
add ebx,ebp
xor esi,edi
ror edx,7
pshufd xmm4,xmm0,238
add ebx,ecx
add eax,DWORD [32+esp]
pxor xmm2,xmm6
punpcklqdq xmm4,xmm1
xor esi,edx
mov ebp,ebx
rol ebx,5
pxor xmm2,xmm3
movdqa [64+esp],xmm6
add eax,esi
xor ebp,edx
movdqa xmm6,[128+esp]
ror ecx,7
paddd xmm5,xmm1
add eax,ebx
pxor xmm2,xmm4
add edi,DWORD [36+esp]
xor ebp,ecx
mov esi,eax
rol eax,5
movdqa xmm4,xmm2
movdqa [16+esp],xmm5
add edi,ebp
xor esi,ecx
ror ebx,7
add edi,eax
pslld xmm2,2
add edx,DWORD [40+esp]
xor esi,ebx
psrld xmm4,30
mov ebp,edi
rol edi,5
add edx,esi
xor ebp,ebx
ror eax,7
add edx,edi
por xmm2,xmm4
add ecx,DWORD [44+esp]
xor ebp,eax
movdqa xmm4,[80+esp]
mov esi,edx
rol edx,5
add ecx,ebp
xor esi,eax
ror edi,7
pshufd xmm5,xmm1,238
add ecx,edx
add ebx,DWORD [48+esp]
pxor xmm3,xmm7
punpcklqdq xmm5,xmm2
xor esi,edi
mov ebp,ecx
rol ecx,5
pxor xmm3,xmm4
movdqa [80+esp],xmm7
add ebx,esi
xor ebp,edi
movdqa xmm7,xmm6
ror edx,7
paddd xmm6,xmm2
add ebx,ecx
pxor xmm3,xmm5
add eax,DWORD [52+esp]
xor ebp,edx
mov esi,ebx
rol ebx,5
movdqa xmm5,xmm3
movdqa [32+esp],xmm6
add eax,ebp
xor esi,edx
ror ecx,7
add eax,ebx
pslld xmm3,2
add edi,DWORD [56+esp]
xor esi,ecx
psrld xmm5,30
mov ebp,eax
rol eax,5
add edi,esi
xor ebp,ecx
ror ebx,7
add edi,eax
por xmm3,xmm5
add edx,DWORD [60+esp]
xor ebp,ebx
movdqa xmm5,[96+esp]
mov esi,edi
rol edi,5
add edx,ebp
xor esi,ebx
ror eax,7
pshufd xmm6,xmm2,238
add edx,edi
add ecx,DWORD [esp]
pxor xmm4,xmm0
punpcklqdq xmm6,xmm3
xor esi,eax
mov ebp,edx
rol edx,5
pxor xmm4,xmm5
movdqa [96+esp],xmm0
add ecx,esi
xor ebp,eax
movdqa xmm0,xmm7
ror edi,7
paddd xmm7,xmm3
add ecx,edx
pxor xmm4,xmm6
add ebx,DWORD [4+esp]
xor ebp,edi
mov esi,ecx
rol ecx,5
movdqa xmm6,xmm4
movdqa [48+esp],xmm7
add ebx,ebp
xor esi,edi
ror edx,7
add ebx,ecx
pslld xmm4,2
add eax,DWORD [8+esp]
xor esi,edx
psrld xmm6,30
mov ebp,ebx
rol ebx,5
add eax,esi
xor ebp,edx
ror ecx,7
add eax,ebx
por xmm4,xmm6
add edi,DWORD [12+esp]
xor ebp,ecx
movdqa xmm6,[64+esp]
mov esi,eax
rol eax,5
add edi,ebp
xor esi,ecx
ror ebx,7
pshufd xmm7,xmm3,238
add edi,eax
add edx,DWORD [16+esp]
pxor xmm5,xmm1
punpcklqdq xmm7,xmm4
xor esi,ebx
mov ebp,edi
rol edi,5
pxor xmm5,xmm6
movdqa [64+esp],xmm1
add edx,esi
xor ebp,ebx
movdqa xmm1,xmm0
ror eax,7
paddd xmm0,xmm4
add edx,edi
pxor xmm5,xmm7
add ecx,DWORD [20+esp]
xor ebp,eax
mov esi,edx
rol edx,5
movdqa xmm7,xmm5
movdqa [esp],xmm0
add ecx,ebp
xor esi,eax
ror edi,7
add ecx,edx
pslld xmm5,2
add ebx,DWORD [24+esp]
xor esi,edi
psrld xmm7,30
mov ebp,ecx
rol ecx,5
add ebx,esi
xor ebp,edi
ror edx,7
add ebx,ecx
por xmm5,xmm7
add eax,DWORD [28+esp]
movdqa xmm7,[80+esp]
ror ecx,7
mov esi,ebx
xor ebp,edx
rol ebx,5
pshufd xmm0,xmm4,238
add eax,ebp
xor esi,ecx
xor ecx,edx
add eax,ebx
add edi,DWORD [32+esp]
pxor xmm6,xmm2
punpcklqdq xmm0,xmm5
and esi,ecx
xor ecx,edx
ror ebx,7
pxor xmm6,xmm7
movdqa [80+esp],xmm2
mov ebp,eax
xor esi,ecx
rol eax,5
movdqa xmm2,xmm1
add edi,esi
paddd xmm1,xmm5
xor ebp,ebx
pxor xmm6,xmm0
xor ebx,ecx
add edi,eax
add edx,DWORD [36+esp]
and ebp,ebx
movdqa xmm0,xmm6
movdqa [16+esp],xmm1
xor ebx,ecx
ror eax,7
mov esi,edi
xor ebp,ebx
rol edi,5
pslld xmm6,2
add edx,ebp
xor esi,eax
psrld xmm0,30
xor eax,ebx
add edx,edi
add ecx,DWORD [40+esp]
and esi,eax
xor eax,ebx
ror edi,7
por xmm6,xmm0
mov ebp,edx
xor esi,eax
movdqa xmm0,[96+esp]
rol edx,5
add ecx,esi
xor ebp,edi
xor edi,eax
add ecx,edx
pshufd xmm1,xmm5,238
add ebx,DWORD [44+esp]
and ebp,edi
xor edi,eax
ror edx,7
mov esi,ecx
xor ebp,edi
rol ecx,5
add ebx,ebp
xor esi,edx
xor edx,edi
add ebx,ecx
add eax,DWORD [48+esp]
pxor xmm7,xmm3
punpcklqdq xmm1,xmm6
and esi,edx
xor edx,edi
ror ecx,7
pxor xmm7,xmm0
movdqa [96+esp],xmm3
mov ebp,ebx
xor esi,edx
rol ebx,5
movdqa xmm3,[144+esp]
add eax,esi
paddd xmm2,xmm6
xor ebp,ecx
pxor xmm7,xmm1
xor ecx,edx
add eax,ebx
add edi,DWORD [52+esp]
and ebp,ecx
movdqa xmm1,xmm7
movdqa [32+esp],xmm2
xor ecx,edx
ror ebx,7
mov esi,eax
xor ebp,ecx
rol eax,5
pslld xmm7,2
add edi,ebp
xor esi,ebx
psrld xmm1,30
xor ebx,ecx
add edi,eax
add edx,DWORD [56+esp]
and esi,ebx
xor ebx,ecx
ror eax,7
por xmm7,xmm1
mov ebp,edi
xor esi,ebx
movdqa xmm1,[64+esp]
rol edi,5
add edx,esi
xor ebp,eax
xor eax,ebx
add edx,edi
pshufd xmm2,xmm6,238
add ecx,DWORD [60+esp]
and ebp,eax
xor eax,ebx
ror edi,7
mov esi,edx
xor ebp,eax
rol edx,5
add ecx,ebp
xor esi,edi
xor edi,eax
add ecx,edx
add ebx,DWORD [esp]
pxor xmm0,xmm4
punpcklqdq xmm2,xmm7
and esi,edi
xor edi,eax
ror edx,7
pxor xmm0,xmm1
movdqa [64+esp],xmm4
mov ebp,ecx
xor esi,edi
rol ecx,5
movdqa xmm4,xmm3
add ebx,esi
paddd xmm3,xmm7
xor ebp,edx
pxor xmm0,xmm2
xor edx,edi
add ebx,ecx
add eax,DWORD [4+esp]
and ebp,edx
movdqa xmm2,xmm0
movdqa [48+esp],xmm3
xor edx,edi
ror ecx,7
mov esi,ebx
xor ebp,edx
rol ebx,5
pslld xmm0,2
add eax,ebp
xor esi,ecx
psrld xmm2,30
xor ecx,edx
add eax,ebx
add edi,DWORD [8+esp]
and esi,ecx
xor ecx,edx
ror ebx,7
por xmm0,xmm2
mov ebp,eax
xor esi,ecx
movdqa xmm2,[80+esp]
rol eax,5
add edi,esi
xor ebp,ebx
xor ebx,ecx
add edi,eax
pshufd xmm3,xmm7,238
add edx,DWORD [12+esp]
and ebp,ebx
xor ebx,ecx
ror eax,7
mov esi,edi
xor ebp,ebx
rol edi,5
add edx,ebp
xor esi,eax
xor eax,ebx
add edx,edi
add ecx,DWORD [16+esp]
pxor xmm1,xmm5
punpcklqdq xmm3,xmm0
and esi,eax
xor eax,ebx
ror edi,7
pxor xmm1,xmm2
movdqa [80+esp],xmm5
mov ebp,edx
xor esi,eax
rol edx,5
movdqa xmm5,xmm4
add ecx,esi
paddd xmm4,xmm0
xor ebp,edi
pxor xmm1,xmm3
xor edi,eax
add ecx,edx
add ebx,DWORD [20+esp]
and ebp,edi
movdqa xmm3,xmm1
movdqa [esp],xmm4
xor edi,eax
ror edx,7
mov esi,ecx
xor ebp,edi
rol ecx,5
pslld xmm1,2
add ebx,ebp
xor esi,edx
psrld xmm3,30
xor edx,edi
add ebx,ecx
add eax,DWORD [24+esp]
and esi,edx
xor edx,edi
ror ecx,7
por xmm1,xmm3
mov ebp,ebx
xor esi,edx
movdqa xmm3,[96+esp]
rol ebx,5
add eax,esi
xor ebp,ecx
xor ecx,edx
add eax,ebx
pshufd xmm4,xmm0,238
add edi,DWORD [28+esp]
and ebp,ecx
xor ecx,edx
ror ebx,7
mov esi,eax
xor ebp,ecx
rol eax,5
add edi,ebp
xor esi,ebx
xor ebx,ecx
add edi,eax
add edx,DWORD [32+esp]
pxor xmm2,xmm6
punpcklqdq xmm4,xmm1
and esi,ebx
xor ebx,ecx
ror eax,7
pxor xmm2,xmm3
movdqa [96+esp],xmm6
mov ebp,edi
xor esi,ebx
rol edi,5
movdqa xmm6,xmm5
add edx,esi
paddd xmm5,xmm1
xor ebp,eax
pxor xmm2,xmm4
xor eax,ebx
add edx,edi
add ecx,DWORD [36+esp]
and ebp,eax
movdqa xmm4,xmm2
movdqa [16+esp],xmm5
xor eax,ebx
ror edi,7
mov esi,edx
xor ebp,eax
rol edx,5
pslld xmm2,2
add ecx,ebp
xor esi,edi
psrld xmm4,30
xor edi,eax
add ecx,edx
add ebx,DWORD [40+esp]
and esi,edi
xor edi,eax
ror edx,7
por xmm2,xmm4
mov ebp,ecx
xor esi,edi
movdqa xmm4,[64+esp]
rol ecx,5
add ebx,esi
xor ebp,edx
xor edx,edi
add ebx,ecx
pshufd xmm5,xmm1,238
add eax,DWORD [44+esp]
and ebp,edx
xor edx,edi
ror ecx,7
mov esi,ebx
xor ebp,edx
rol ebx,5
add eax,ebp
xor esi,edx
add eax,ebx
add edi,DWORD [48+esp]
pxor xmm3,xmm7
punpcklqdq xmm5,xmm2
xor esi,ecx
mov ebp,eax
rol eax,5
pxor xmm3,xmm4
movdqa [64+esp],xmm7
add edi,esi
xor ebp,ecx
movdqa xmm7,xmm6
ror ebx,7
paddd xmm6,xmm2
add edi,eax
pxor xmm3,xmm5
add edx,DWORD [52+esp]
xor ebp,ebx
mov esi,edi
rol edi,5
movdqa xmm5,xmm3
movdqa [32+esp],xmm6
add edx,ebp
xor esi,ebx
ror eax,7
add edx,edi
pslld xmm3,2
add ecx,DWORD [56+esp]
xor esi,eax
psrld xmm5,30
mov ebp,edx
rol edx,5
add ecx,esi
xor ebp,eax
ror edi,7
add ecx,edx
por xmm3,xmm5
add ebx,DWORD [60+esp]
xor ebp,edi
mov esi,ecx
rol ecx,5
add ebx,ebp
xor esi,edi
ror edx,7
add ebx,ecx
add eax,DWORD [esp]
xor esi,edx
mov ebp,ebx
rol ebx,5
add eax,esi
xor ebp,edx
ror ecx,7
paddd xmm7,xmm3
add eax,ebx
add edi,DWORD [4+esp]
xor ebp,ecx
mov esi,eax
movdqa [48+esp],xmm7
rol eax,5
add edi,ebp
xor esi,ecx
ror ebx,7
add edi,eax
add edx,DWORD [8+esp]
xor esi,ebx
mov ebp,edi
rol edi,5
add edx,esi
xor ebp,ebx
ror eax,7
add edx,edi
add ecx,DWORD [12+esp]
xor ebp,eax
mov esi,edx
rol edx,5
add ecx,ebp
xor esi,eax
ror edi,7
add ecx,edx
mov ebp,DWORD [196+esp]
cmp ebp,DWORD [200+esp]
je NEAR L$007done
movdqa xmm7,[160+esp]
movdqa xmm6,[176+esp]
movdqu xmm0,[ebp]
movdqu xmm1,[16+ebp]
movdqu xmm2,[32+ebp]
movdqu xmm3,[48+ebp]
add ebp,64
db 102,15,56,0,198
mov DWORD [196+esp],ebp
movdqa [96+esp],xmm7
add ebx,DWORD [16+esp]
xor esi,edi
mov ebp,ecx
rol ecx,5
add ebx,esi
xor ebp,edi
ror edx,7
db 102,15,56,0,206
add ebx,ecx
add eax,DWORD [20+esp]
xor ebp,edx
mov esi,ebx
paddd xmm0,xmm7
rol ebx,5
add eax,ebp
xor esi,edx
ror ecx,7
movdqa [esp],xmm0
add eax,ebx
add edi,DWORD [24+esp]
xor esi,ecx
mov ebp,eax
psubd xmm0,xmm7
rol eax,5
add edi,esi
xor ebp,ecx
ror ebx,7
add edi,eax
add edx,DWORD [28+esp]
xor ebp,ebx
mov esi,edi
rol edi,5
add edx,ebp
xor esi,ebx
ror eax,7
add edx,edi
add ecx,DWORD [32+esp]
xor esi,eax
mov ebp,edx
rol edx,5
add ecx,esi
xor ebp,eax
ror edi,7
db 102,15,56,0,214
add ecx,edx
add ebx,DWORD [36+esp]
xor ebp,edi
mov esi,ecx
paddd xmm1,xmm7
rol ecx,5
add ebx,ebp
xor esi,edi
ror edx,7
movdqa [16+esp],xmm1
add ebx,ecx
add eax,DWORD [40+esp]
xor esi,edx
mov ebp,ebx
psubd xmm1,xmm7
rol ebx,5
add eax,esi
xor ebp,edx
ror ecx,7
add eax,ebx
add edi,DWORD [44+esp]
xor ebp,ecx
mov esi,eax
rol eax,5
add edi,ebp
xor esi,ecx
ror ebx,7
add edi,eax
add edx,DWORD [48+esp]
xor esi,ebx
mov ebp,edi
rol edi,5
add edx,esi
xor ebp,ebx
ror eax,7
db 102,15,56,0,222
add edx,edi
add ecx,DWORD [52+esp]
xor ebp,eax
mov esi,edx
paddd xmm2,xmm7
rol edx,5
add ecx,ebp
xor esi,eax
ror edi,7
movdqa [32+esp],xmm2
add ecx,edx
add ebx,DWORD [56+esp]
xor esi,edi
mov ebp,ecx
psubd xmm2,xmm7
rol ecx,5
add ebx,esi
xor ebp,edi
ror edx,7
add ebx,ecx
add eax,DWORD [60+esp]
xor ebp,edx
mov esi,ebx
rol ebx,5
add eax,ebp
ror ecx,7
add eax,ebx
mov ebp,DWORD [192+esp]
add eax,DWORD [ebp]
add esi,DWORD [4+ebp]
add ecx,DWORD [8+ebp]
mov DWORD [ebp],eax
add edx,DWORD [12+ebp]
mov DWORD [4+ebp],esi
add edi,DWORD [16+ebp]
mov DWORD [8+ebp],ecx
mov ebx,ecx
mov DWORD [12+ebp],edx
xor ebx,edx
mov DWORD [16+ebp],edi
mov ebp,esi
pshufd xmm4,xmm0,238
and esi,ebx
mov ebx,ebp
jmp NEAR L$006loop
align 16
L$007done:
add ebx,DWORD [16+esp]
xor esi,edi
mov ebp,ecx
rol ecx,5
add ebx,esi
xor ebp,edi
ror edx,7
add ebx,ecx
add eax,DWORD [20+esp]
xor ebp,edx
mov esi,ebx
rol ebx,5
add eax,ebp
xor esi,edx
ror ecx,7
add eax,ebx
add edi,DWORD [24+esp]
xor esi,ecx
mov ebp,eax
rol eax,5
add edi,esi
xor ebp,ecx
ror ebx,7
add edi,eax
add edx,DWORD [28+esp]
xor ebp,ebx
mov esi,edi
rol edi,5
add edx,ebp
xor esi,ebx
ror eax,7
add edx,edi
add ecx,DWORD [32+esp]
xor esi,eax
mov ebp,edx
rol edx,5
add ecx,esi
xor ebp,eax
ror edi,7
add ecx,edx
add ebx,DWORD [36+esp]
xor ebp,edi
mov esi,ecx
rol ecx,5
add ebx,ebp
xor esi,edi
ror edx,7
add ebx,ecx
add eax,DWORD [40+esp]
xor esi,edx
mov ebp,ebx
rol ebx,5
add eax,esi
xor ebp,edx
ror ecx,7
add eax,ebx
add edi,DWORD [44+esp]
xor ebp,ecx
mov esi,eax
rol eax,5
add edi,ebp
xor esi,ecx
ror ebx,7
add edi,eax
add edx,DWORD [48+esp]
xor esi,ebx
mov ebp,edi
rol edi,5
add edx,esi
xor ebp,ebx
ror eax,7
add edx,edi
add ecx,DWORD [52+esp]
xor ebp,eax
mov esi,edx
rol edx,5
add ecx,ebp
xor esi,eax
ror edi,7
add ecx,edx
add ebx,DWORD [56+esp]
xor esi,edi
mov ebp,ecx
rol ecx,5
add ebx,esi
xor ebp,edi
ror edx,7
add ebx,ecx
add eax,DWORD [60+esp]
xor ebp,edx
mov esi,ebx
rol ebx,5
add eax,ebp
ror ecx,7
add eax,ebx
mov ebp,DWORD [192+esp]
add eax,DWORD [ebp]
mov esp,DWORD [204+esp]
add esi,DWORD [4+ebp]
add ecx,DWORD [8+ebp]
mov DWORD [ebp],eax
add edx,DWORD [12+ebp]
mov DWORD [4+ebp],esi
add edi,DWORD [16+ebp]
mov DWORD [8+ebp],ecx
mov DWORD [12+ebp],edx
mov DWORD [16+ebp],edi
pop edi
pop esi
pop ebx
pop ebp
ret
align 16
__sha1_block_data_order_avx:
push ebp
push ebx
push esi
push edi
call L$008pic_point
L$008pic_point:
pop ebp
lea ebp,[(L$K_XX_XX-L$008pic_point)+ebp]
L$avx_shortcut:
vzeroall
vmovdqa xmm7,[ebp]
vmovdqa xmm0,[16+ebp]
vmovdqa xmm1,[32+ebp]
vmovdqa xmm2,[48+ebp]
vmovdqa xmm6,[64+ebp]
mov edi,DWORD [20+esp]
mov ebp,DWORD [24+esp]
mov edx,DWORD [28+esp]
mov esi,esp
sub esp,208
and esp,-64
vmovdqa [112+esp],xmm0
vmovdqa [128+esp],xmm1
vmovdqa [144+esp],xmm2
shl edx,6
vmovdqa [160+esp],xmm7
add edx,ebp
vmovdqa [176+esp],xmm6
add ebp,64
mov DWORD [192+esp],edi
mov DWORD [196+esp],ebp
mov DWORD [200+esp],edx
mov DWORD [204+esp],esi
mov eax,DWORD [edi]
mov ebx,DWORD [4+edi]
mov ecx,DWORD [8+edi]
mov edx,DWORD [12+edi]
mov edi,DWORD [16+edi]
mov esi,ebx
vmovdqu xmm0,[ebp-64]
vmovdqu xmm1,[ebp-48]
vmovdqu xmm2,[ebp-32]
vmovdqu xmm3,[ebp-16]
vpshufb xmm0,xmm0,xmm6
vpshufb xmm1,xmm1,xmm6
vpshufb xmm2,xmm2,xmm6
vmovdqa [96+esp],xmm7
vpshufb xmm3,xmm3,xmm6
vpaddd xmm4,xmm0,xmm7
vpaddd xmm5,xmm1,xmm7
vpaddd xmm6,xmm2,xmm7
vmovdqa [esp],xmm4
mov ebp,ecx
vmovdqa [16+esp],xmm5
xor ebp,edx
vmovdqa [32+esp],xmm6
and esi,ebp
jmp NEAR L$009loop
align 16
L$009loop:
shrd ebx,ebx,2
xor esi,edx
vpalignr xmm4,xmm1,xmm0,8
mov ebp,eax
add edi,DWORD [esp]
vpaddd xmm7,xmm7,xmm3
vmovdqa [64+esp],xmm0
xor ebx,ecx
shld eax,eax,5
vpsrldq xmm6,xmm3,4
add edi,esi
and ebp,ebx
vpxor xmm4,xmm4,xmm0
xor ebx,ecx
add edi,eax
vpxor xmm6,xmm6,xmm2
shrd eax,eax,7
xor ebp,ecx
vmovdqa [48+esp],xmm7
mov esi,edi
add edx,DWORD [4+esp]
vpxor xmm4,xmm4,xmm6
xor eax,ebx
shld edi,edi,5
add edx,ebp
and esi,eax
vpsrld xmm6,xmm4,31
xor eax,ebx
add edx,edi
shrd edi,edi,7
xor esi,ebx
vpslldq xmm0,xmm4,12
vpaddd xmm4,xmm4,xmm4
mov ebp,edx
add ecx,DWORD [8+esp]
xor edi,eax
shld edx,edx,5
vpsrld xmm7,xmm0,30
vpor xmm4,xmm4,xmm6
add ecx,esi
and ebp,edi
xor edi,eax
add ecx,edx
vpslld xmm0,xmm0,2
shrd edx,edx,7
xor ebp,eax
vpxor xmm4,xmm4,xmm7
mov esi,ecx
add ebx,DWORD [12+esp]
xor edx,edi
shld ecx,ecx,5
vpxor xmm4,xmm4,xmm0
add ebx,ebp
and esi,edx
vmovdqa xmm0,[96+esp]
xor edx,edi
add ebx,ecx
shrd ecx,ecx,7
xor esi,edi
vpalignr xmm5,xmm2,xmm1,8
mov ebp,ebx
add eax,DWORD [16+esp]
vpaddd xmm0,xmm0,xmm4
vmovdqa [80+esp],xmm1
xor ecx,edx
shld ebx,ebx,5
vpsrldq xmm7,xmm4,4
add eax,esi
and ebp,ecx
vpxor xmm5,xmm5,xmm1
xor ecx,edx
add eax,ebx
vpxor xmm7,xmm7,xmm3
shrd ebx,ebx,7
xor ebp,edx
vmovdqa [esp],xmm0
mov esi,eax
add edi,DWORD [20+esp]
vpxor xmm5,xmm5,xmm7
xor ebx,ecx
shld eax,eax,5
add edi,ebp
and esi,ebx
vpsrld xmm7,xmm5,31
xor ebx,ecx
add edi,eax
shrd eax,eax,7
xor esi,ecx
vpslldq xmm1,xmm5,12
vpaddd xmm5,xmm5,xmm5
mov ebp,edi
add edx,DWORD [24+esp]
xor eax,ebx
shld edi,edi,5
vpsrld xmm0,xmm1,30
vpor xmm5,xmm5,xmm7
add edx,esi
and ebp,eax
xor eax,ebx
add edx,edi
vpslld xmm1,xmm1,2
shrd edi,edi,7
xor ebp,ebx
vpxor xmm5,xmm5,xmm0
mov esi,edx
add ecx,DWORD [28+esp]
xor edi,eax
shld edx,edx,5
vpxor xmm5,xmm5,xmm1
add ecx,ebp
and esi,edi
vmovdqa xmm1,[112+esp]
xor edi,eax
add ecx,edx
shrd edx,edx,7
xor esi,eax
vpalignr xmm6,xmm3,xmm2,8
mov ebp,ecx
add ebx,DWORD [32+esp]
vpaddd xmm1,xmm1,xmm5
vmovdqa [96+esp],xmm2
xor edx,edi
shld ecx,ecx,5
vpsrldq xmm0,xmm5,4
add ebx,esi
and ebp,edx
vpxor xmm6,xmm6,xmm2
xor edx,edi
add ebx,ecx
vpxor xmm0,xmm0,xmm4
shrd ecx,ecx,7
xor ebp,edi
vmovdqa [16+esp],xmm1
mov esi,ebx
add eax,DWORD [36+esp]
vpxor xmm6,xmm6,xmm0
xor ecx,edx
shld ebx,ebx,5
add eax,ebp
and esi,ecx
vpsrld xmm0,xmm6,31
xor ecx,edx
add eax,ebx
shrd ebx,ebx,7
xor esi,edx
vpslldq xmm2,xmm6,12
vpaddd xmm6,xmm6,xmm6
mov ebp,eax
add edi,DWORD [40+esp]
xor ebx,ecx
shld eax,eax,5
vpsrld xmm1,xmm2,30
vpor xmm6,xmm6,xmm0
add edi,esi
and ebp,ebx
xor ebx,ecx
add edi,eax
vpslld xmm2,xmm2,2
vmovdqa xmm0,[64+esp]
shrd eax,eax,7
xor ebp,ecx
vpxor xmm6,xmm6,xmm1
mov esi,edi
add edx,DWORD [44+esp]
xor eax,ebx
shld edi,edi,5
vpxor xmm6,xmm6,xmm2
add edx,ebp
and esi,eax
vmovdqa xmm2,[112+esp]
xor eax,ebx
add edx,edi
shrd edi,edi,7
xor esi,ebx
vpalignr xmm7,xmm4,xmm3,8
mov ebp,edx
add ecx,DWORD [48+esp]
vpaddd xmm2,xmm2,xmm6
vmovdqa [64+esp],xmm3
xor edi,eax
shld edx,edx,5
vpsrldq xmm1,xmm6,4
add ecx,esi
and ebp,edi
vpxor xmm7,xmm7,xmm3
xor edi,eax
add ecx,edx
vpxor xmm1,xmm1,xmm5
shrd edx,edx,7
xor ebp,eax
vmovdqa [32+esp],xmm2
mov esi,ecx
add ebx,DWORD [52+esp]
vpxor xmm7,xmm7,xmm1
xor edx,edi
shld ecx,ecx,5
add ebx,ebp
and esi,edx
vpsrld xmm1,xmm7,31
xor edx,edi
add ebx,ecx
shrd ecx,ecx,7
xor esi,edi
vpslldq xmm3,xmm7,12
vpaddd xmm7,xmm7,xmm7
mov ebp,ebx
add eax,DWORD [56+esp]
xor ecx,edx
shld ebx,ebx,5
vpsrld xmm2,xmm3,30
vpor xmm7,xmm7,xmm1
add eax,esi
and ebp,ecx
xor ecx,edx
add eax,ebx
vpslld xmm3,xmm3,2
vmovdqa xmm1,[80+esp]
shrd ebx,ebx,7
xor ebp,edx
vpxor xmm7,xmm7,xmm2
mov esi,eax
add edi,DWORD [60+esp]
xor ebx,ecx
shld eax,eax,5
vpxor xmm7,xmm7,xmm3
add edi,ebp
and esi,ebx
vmovdqa xmm3,[112+esp]
xor ebx,ecx
add edi,eax
vpalignr xmm2,xmm7,xmm6,8
vpxor xmm0,xmm0,xmm4
shrd eax,eax,7
xor esi,ecx
mov ebp,edi
add edx,DWORD [esp]
vpxor xmm0,xmm0,xmm1
vmovdqa [80+esp],xmm4
xor eax,ebx
shld edi,edi,5
vmovdqa xmm4,xmm3
vpaddd xmm3,xmm3,xmm7
add edx,esi
and ebp,eax
vpxor xmm0,xmm0,xmm2
xor eax,ebx
add edx,edi
shrd edi,edi,7
xor ebp,ebx
vpsrld xmm2,xmm0,30
vmovdqa [48+esp],xmm3
mov esi,edx
add ecx,DWORD [4+esp]
xor edi,eax
shld edx,edx,5
vpslld xmm0,xmm0,2
add ecx,ebp
and esi,edi
xor edi,eax
add ecx,edx
shrd edx,edx,7
xor esi,eax
mov ebp,ecx
add ebx,DWORD [8+esp]
vpor xmm0,xmm0,xmm2
xor edx,edi
shld ecx,ecx,5
vmovdqa xmm2,[96+esp]
add ebx,esi
and ebp,edx
xor edx,edi
add ebx,ecx
add eax,DWORD [12+esp]
xor ebp,edi
mov esi,ebx
shld ebx,ebx,5
add eax,ebp
xor esi,edx
shrd ecx,ecx,7
add eax,ebx
vpalignr xmm3,xmm0,xmm7,8
vpxor xmm1,xmm1,xmm5
add edi,DWORD [16+esp]
xor esi,ecx
mov ebp,eax
shld eax,eax,5
vpxor xmm1,xmm1,xmm2
vmovdqa [96+esp],xmm5
add edi,esi
xor ebp,ecx
vmovdqa xmm5,xmm4
vpaddd xmm4,xmm4,xmm0
shrd ebx,ebx,7
add edi,eax
vpxor xmm1,xmm1,xmm3
add edx,DWORD [20+esp]
xor ebp,ebx
mov esi,edi
shld edi,edi,5
vpsrld xmm3,xmm1,30
vmovdqa [esp],xmm4
add edx,ebp
xor esi,ebx
shrd eax,eax,7
add edx,edi
vpslld xmm1,xmm1,2
add ecx,DWORD [24+esp]
xor esi,eax
mov ebp,edx
shld edx,edx,5
add ecx,esi
xor ebp,eax
shrd edi,edi,7
add ecx,edx
vpor xmm1,xmm1,xmm3
add ebx,DWORD [28+esp]
xor ebp,edi
vmovdqa xmm3,[64+esp]
mov esi,ecx
shld ecx,ecx,5
add ebx,ebp
xor esi,edi
shrd edx,edx,7
add ebx,ecx
vpalignr xmm4,xmm1,xmm0,8
vpxor xmm2,xmm2,xmm6
add eax,DWORD [32+esp]
xor esi,edx
mov ebp,ebx
shld ebx,ebx,5
vpxor xmm2,xmm2,xmm3
vmovdqa [64+esp],xmm6
add eax,esi
xor ebp,edx
vmovdqa xmm6,[128+esp]
vpaddd xmm5,xmm5,xmm1
shrd ecx,ecx,7
add eax,ebx
vpxor xmm2,xmm2,xmm4
add edi,DWORD [36+esp]
xor ebp,ecx
mov esi,eax
shld eax,eax,5
vpsrld xmm4,xmm2,30
vmovdqa [16+esp],xmm5
add edi,ebp
xor esi,ecx
shrd ebx,ebx,7
add edi,eax
vpslld xmm2,xmm2,2
add edx,DWORD [40+esp]
xor esi,ebx
mov ebp,edi
shld edi,edi,5
add edx,esi
xor ebp,ebx
shrd eax,eax,7
add edx,edi
vpor xmm2,xmm2,xmm4
add ecx,DWORD [44+esp]
xor ebp,eax
vmovdqa xmm4,[80+esp]
mov esi,edx
shld edx,edx,5
add ecx,ebp
xor esi,eax
shrd edi,edi,7
add ecx,edx
vpalignr xmm5,xmm2,xmm1,8
vpxor xmm3,xmm3,xmm7
add ebx,DWORD [48+esp]
xor esi,edi
mov ebp,ecx
shld ecx,ecx,5
vpxor xmm3,xmm3,xmm4
vmovdqa [80+esp],xmm7
add ebx,esi
xor ebp,edi
vmovdqa xmm7,xmm6
vpaddd xmm6,xmm6,xmm2
shrd edx,edx,7
add ebx,ecx
vpxor xmm3,xmm3,xmm5
add eax,DWORD [52+esp]
xor ebp,edx
mov esi,ebx
shld ebx,ebx,5
vpsrld xmm5,xmm3,30
vmovdqa [32+esp],xmm6
add eax,ebp
xor esi,edx
shrd ecx,ecx,7
add eax,ebx
vpslld xmm3,xmm3,2
add edi,DWORD [56+esp]
xor esi,ecx
mov ebp,eax
shld eax,eax,5
add edi,esi
xor ebp,ecx
shrd ebx,ebx,7
add edi,eax
vpor xmm3,xmm3,xmm5
add edx,DWORD [60+esp]
xor ebp,ebx
vmovdqa xmm5,[96+esp]
mov esi,edi
shld edi,edi,5
add edx,ebp
xor esi,ebx
shrd eax,eax,7
add edx,edi
vpalignr xmm6,xmm3,xmm2,8
vpxor xmm4,xmm4,xmm0
add ecx,DWORD [esp]
xor esi,eax
mov ebp,edx
shld edx,edx,5
vpxor xmm4,xmm4,xmm5
vmovdqa [96+esp],xmm0
add ecx,esi
xor ebp,eax
vmovdqa xmm0,xmm7
vpaddd xmm7,xmm7,xmm3
shrd edi,edi,7
add ecx,edx
vpxor xmm4,xmm4,xmm6
add ebx,DWORD [4+esp]
xor ebp,edi
mov esi,ecx
shld ecx,ecx,5
vpsrld xmm6,xmm4,30
vmovdqa [48+esp],xmm7
add ebx,ebp
xor esi,edi
shrd edx,edx,7
add ebx,ecx
vpslld xmm4,xmm4,2
add eax,DWORD [8+esp]
xor esi,edx
mov ebp,ebx
shld ebx,ebx,5
add eax,esi
xor ebp,edx
shrd ecx,ecx,7
add eax,ebx
vpor xmm4,xmm4,xmm6
add edi,DWORD [12+esp]
xor ebp,ecx
vmovdqa xmm6,[64+esp]
mov esi,eax
shld eax,eax,5
add edi,ebp
xor esi,ecx
shrd ebx,ebx,7
add edi,eax
vpalignr xmm7,xmm4,xmm3,8
vpxor xmm5,xmm5,xmm1
add edx,DWORD [16+esp]
xor esi,ebx
mov ebp,edi
shld edi,edi,5
vpxor xmm5,xmm5,xmm6
vmovdqa [64+esp],xmm1
add edx,esi
xor ebp,ebx
vmovdqa xmm1,xmm0
vpaddd xmm0,xmm0,xmm4
shrd eax,eax,7
add edx,edi
vpxor xmm5,xmm5,xmm7
add ecx,DWORD [20+esp]
xor ebp,eax
mov esi,edx
shld edx,edx,5
vpsrld xmm7,xmm5,30
vmovdqa [esp],xmm0
add ecx,ebp
xor esi,eax
shrd edi,edi,7
add ecx,edx
vpslld xmm5,xmm5,2
add ebx,DWORD [24+esp]
xor esi,edi
mov ebp,ecx
shld ecx,ecx,5
add ebx,esi
xor ebp,edi
shrd edx,edx,7
add ebx,ecx
vpor xmm5,xmm5,xmm7
add eax,DWORD [28+esp]
vmovdqa xmm7,[80+esp]
shrd ecx,ecx,7
mov esi,ebx
xor ebp,edx
shld ebx,ebx,5
add eax,ebp
xor esi,ecx
xor ecx,edx
add eax,ebx
vpalignr xmm0,xmm5,xmm4,8
vpxor xmm6,xmm6,xmm2
add edi,DWORD [32+esp]
and esi,ecx
xor ecx,edx
shrd ebx,ebx,7
vpxor xmm6,xmm6,xmm7
vmovdqa [80+esp],xmm2
mov ebp,eax
xor esi,ecx
vmovdqa xmm2,xmm1
vpaddd xmm1,xmm1,xmm5
shld eax,eax,5
add edi,esi
vpxor xmm6,xmm6,xmm0
xor ebp,ebx
xor ebx,ecx
add edi,eax
add edx,DWORD [36+esp]
vpsrld xmm0,xmm6,30
vmovdqa [16+esp],xmm1
and ebp,ebx
xor ebx,ecx
shrd eax,eax,7
mov esi,edi
vpslld xmm6,xmm6,2
xor ebp,ebx
shld edi,edi,5
add edx,ebp
xor esi,eax
xor eax,ebx
add edx,edi
add ecx,DWORD [40+esp]
and esi,eax
vpor xmm6,xmm6,xmm0
xor eax,ebx
shrd edi,edi,7
vmovdqa xmm0,[96+esp]
mov ebp,edx
xor esi,eax
shld edx,edx,5
add ecx,esi
xor ebp,edi
xor edi,eax
add ecx,edx
add ebx,DWORD [44+esp]
and ebp,edi
xor edi,eax
shrd edx,edx,7
mov esi,ecx
xor ebp,edi
shld ecx,ecx,5
add ebx,ebp
xor esi,edx
xor edx,edi
add ebx,ecx
vpalignr xmm1,xmm6,xmm5,8
vpxor xmm7,xmm7,xmm3
add eax,DWORD [48+esp]
and esi,edx
xor edx,edi
shrd ecx,ecx,7
vpxor xmm7,xmm7,xmm0
vmovdqa [96+esp],xmm3
mov ebp,ebx
xor esi,edx
vmovdqa xmm3,[144+esp]
vpaddd xmm2,xmm2,xmm6
shld ebx,ebx,5
add eax,esi
vpxor xmm7,xmm7,xmm1
xor ebp,ecx
xor ecx,edx
add eax,ebx
add edi,DWORD [52+esp]
vpsrld xmm1,xmm7,30
vmovdqa [32+esp],xmm2
and ebp,ecx
xor ecx,edx
shrd ebx,ebx,7
mov esi,eax
vpslld xmm7,xmm7,2
xor ebp,ecx
shld eax,eax,5
add edi,ebp
xor esi,ebx
xor ebx,ecx
add edi,eax
add edx,DWORD [56+esp]
and esi,ebx
vpor xmm7,xmm7,xmm1
xor ebx,ecx
shrd eax,eax,7
vmovdqa xmm1,[64+esp]
mov ebp,edi
xor esi,ebx
shld edi,edi,5
add edx,esi
xor ebp,eax
xor eax,ebx
add edx,edi
add ecx,DWORD [60+esp]
and ebp,eax
xor eax,ebx
shrd edi,edi,7
mov esi,edx
xor ebp,eax
shld edx,edx,5
add ecx,ebp
xor esi,edi
xor edi,eax
add ecx,edx
vpalignr xmm2,xmm7,xmm6,8
vpxor xmm0,xmm0,xmm4
add ebx,DWORD [esp]
and esi,edi
xor edi,eax
shrd edx,edx,7
vpxor xmm0,xmm0,xmm1
vmovdqa [64+esp],xmm4
mov ebp,ecx
xor esi,edi
vmovdqa xmm4,xmm3
vpaddd xmm3,xmm3,xmm7
shld ecx,ecx,5
add ebx,esi
vpxor xmm0,xmm0,xmm2
xor ebp,edx
xor edx,edi
add ebx,ecx
add eax,DWORD [4+esp]
vpsrld xmm2,xmm0,30
vmovdqa [48+esp],xmm3
and ebp,edx
xor edx,edi
shrd ecx,ecx,7
mov esi,ebx
vpslld xmm0,xmm0,2
xor ebp,edx
shld ebx,ebx,5
add eax,ebp
xor esi,ecx
xor ecx,edx
add eax,ebx
add edi,DWORD [8+esp]
and esi,ecx
vpor xmm0,xmm0,xmm2
xor ecx,edx
shrd ebx,ebx,7
vmovdqa xmm2,[80+esp]
mov ebp,eax
xor esi,ecx
shld eax,eax,5
add edi,esi
xor ebp,ebx
xor ebx,ecx
add edi,eax
add edx,DWORD [12+esp]
and ebp,ebx
xor ebx,ecx
shrd eax,eax,7
mov esi,edi
xor ebp,ebx
shld edi,edi,5
add edx,ebp
xor esi,eax
xor eax,ebx
add edx,edi
vpalignr xmm3,xmm0,xmm7,8
vpxor xmm1,xmm1,xmm5
add ecx,DWORD [16+esp]
and esi,eax
xor eax,ebx
shrd edi,edi,7
vpxor xmm1,xmm1,xmm2
vmovdqa [80+esp],xmm5
mov ebp,edx
xor esi,eax
vmovdqa xmm5,xmm4
vpaddd xmm4,xmm4,xmm0
shld edx,edx,5
add ecx,esi
vpxor xmm1,xmm1,xmm3
xor ebp,edi
xor edi,eax
add ecx,edx
add ebx,DWORD [20+esp]
vpsrld xmm3,xmm1,30
vmovdqa [esp],xmm4
and ebp,edi
xor edi,eax
shrd edx,edx,7
mov esi,ecx
vpslld xmm1,xmm1,2
xor ebp,edi
shld ecx,ecx,5
add ebx,ebp
xor esi,edx
xor edx,edi
add ebx,ecx
add eax,DWORD [24+esp]
and esi,edx
vpor xmm1,xmm1,xmm3
xor edx,edi
shrd ecx,ecx,7
vmovdqa xmm3,[96+esp]
mov ebp,ebx
xor esi,edx
shld ebx,ebx,5
add eax,esi
xor ebp,ecx
xor ecx,edx
add eax,ebx
add edi,DWORD [28+esp]
and ebp,ecx
xor ecx,edx
shrd ebx,ebx,7
mov esi,eax
xor ebp,ecx
shld eax,eax,5
add edi,ebp
xor esi,ebx
xor ebx,ecx
add edi,eax
vpalignr xmm4,xmm1,xmm0,8
vpxor xmm2,xmm2,xmm6
add edx,DWORD [32+esp]
and esi,ebx
xor ebx,ecx
shrd eax,eax,7
vpxor xmm2,xmm2,xmm3
vmovdqa [96+esp],xmm6
mov ebp,edi
xor esi,ebx
vmovdqa xmm6,xmm5
vpaddd xmm5,xmm5,xmm1
shld edi,edi,5
add edx,esi
vpxor xmm2,xmm2,xmm4
xor ebp,eax
xor eax,ebx
add edx,edi
add ecx,DWORD [36+esp]
vpsrld xmm4,xmm2,30
vmovdqa [16+esp],xmm5
and ebp,eax
xor eax,ebx
shrd edi,edi,7
mov esi,edx
vpslld xmm2,xmm2,2
xor ebp,eax
shld edx,edx,5
add ecx,ebp
xor esi,edi
xor edi,eax
add ecx,edx
add ebx,DWORD [40+esp]
and esi,edi
vpor xmm2,xmm2,xmm4
xor edi,eax
shrd edx,edx,7
vmovdqa xmm4,[64+esp]
mov ebp,ecx
xor esi,edi
shld ecx,ecx,5
add ebx,esi
xor ebp,edx
xor edx,edi
add ebx,ecx
add eax,DWORD [44+esp]
and ebp,edx
xor edx,edi
shrd ecx,ecx,7
mov esi,ebx
xor ebp,edx
shld ebx,ebx,5
add eax,ebp
xor esi,edx
add eax,ebx
vpalignr xmm5,xmm2,xmm1,8
vpxor xmm3,xmm3,xmm7
add edi,DWORD [48+esp]
xor esi,ecx
mov ebp,eax
shld eax,eax,5
vpxor xmm3,xmm3,xmm4
vmovdqa [64+esp],xmm7
add edi,esi
xor ebp,ecx
vmovdqa xmm7,xmm6
vpaddd xmm6,xmm6,xmm2
shrd ebx,ebx,7
add edi,eax
vpxor xmm3,xmm3,xmm5
add edx,DWORD [52+esp]
xor ebp,ebx
mov esi,edi
shld edi,edi,5
vpsrld xmm5,xmm3,30
vmovdqa [32+esp],xmm6
add edx,ebp
xor esi,ebx
shrd eax,eax,7
add edx,edi
vpslld xmm3,xmm3,2
add ecx,DWORD [56+esp]
xor esi,eax
mov ebp,edx
shld edx,edx,5
add ecx,esi
xor ebp,eax
shrd edi,edi,7
add ecx,edx
vpor xmm3,xmm3,xmm5
add ebx,DWORD [60+esp]
xor ebp,edi
mov esi,ecx
shld ecx,ecx,5
add ebx,ebp
xor esi,edi
shrd edx,edx,7
add ebx,ecx
add eax,DWORD [esp]
vpaddd xmm7,xmm7,xmm3
xor esi,edx
mov ebp,ebx
shld ebx,ebx,5
add eax,esi
vmovdqa [48+esp],xmm7
xor ebp,edx
shrd ecx,ecx,7
add eax,ebx
add edi,DWORD [4+esp]
xor ebp,ecx
mov esi,eax
shld eax,eax,5
add edi,ebp
xor esi,ecx
shrd ebx,ebx,7
add edi,eax
add edx,DWORD [8+esp]
xor esi,ebx
mov ebp,edi
shld edi,edi,5
add edx,esi
xor ebp,ebx
shrd eax,eax,7
add edx,edi
add ecx,DWORD [12+esp]
xor ebp,eax
mov esi,edx
shld edx,edx,5
add ecx,ebp
xor esi,eax
shrd edi,edi,7
add ecx,edx
mov ebp,DWORD [196+esp]
cmp ebp,DWORD [200+esp]
je NEAR L$010done
vmovdqa xmm7,[160+esp]
vmovdqa xmm6,[176+esp]
vmovdqu xmm0,[ebp]
vmovdqu xmm1,[16+ebp]
vmovdqu xmm2,[32+ebp]
vmovdqu xmm3,[48+ebp]
add ebp,64
vpshufb xmm0,xmm0,xmm6
mov DWORD [196+esp],ebp
vmovdqa [96+esp],xmm7
add ebx,DWORD [16+esp]
xor esi,edi
vpshufb xmm1,xmm1,xmm6
mov ebp,ecx
shld ecx,ecx,5
vpaddd xmm4,xmm0,xmm7
add ebx,esi
xor ebp,edi
shrd edx,edx,7
add ebx,ecx
vmovdqa [esp],xmm4
add eax,DWORD [20+esp]
xor ebp,edx
mov esi,ebx
shld ebx,ebx,5
add eax,ebp
xor esi,edx
shrd ecx,ecx,7
add eax,ebx
add edi,DWORD [24+esp]
xor esi,ecx
mov ebp,eax
shld eax,eax,5
add edi,esi
xor ebp,ecx
shrd ebx,ebx,7
add edi,eax
add edx,DWORD [28+esp]
xor ebp,ebx
mov esi,edi
shld edi,edi,5
add edx,ebp
xor esi,ebx
shrd eax,eax,7
add edx,edi
add ecx,DWORD [32+esp]
xor esi,eax
vpshufb xmm2,xmm2,xmm6
mov ebp,edx
shld edx,edx,5
vpaddd xmm5,xmm1,xmm7
add ecx,esi
xor ebp,eax
shrd edi,edi,7
add ecx,edx
vmovdqa [16+esp],xmm5
add ebx,DWORD [36+esp]
xor ebp,edi
mov esi,ecx
shld ecx,ecx,5
add ebx,ebp
xor esi,edi
shrd edx,edx,7
add ebx,ecx
add eax,DWORD [40+esp]
xor esi,edx
mov ebp,ebx
shld ebx,ebx,5
add eax,esi
xor ebp,edx
shrd ecx,ecx,7
add eax,ebx
add edi,DWORD [44+esp]
xor ebp,ecx
mov esi,eax
shld eax,eax,5
add edi,ebp
xor esi,ecx
shrd ebx,ebx,7
add edi,eax
add edx,DWORD [48+esp]
xor esi,ebx
vpshufb xmm3,xmm3,xmm6
mov ebp,edi
shld edi,edi,5
vpaddd xmm6,xmm2,xmm7
add edx,esi
xor ebp,ebx
shrd eax,eax,7
add edx,edi
vmovdqa [32+esp],xmm6
add ecx,DWORD [52+esp]
xor ebp,eax
mov esi,edx
shld edx,edx,5
add ecx,ebp
xor esi,eax
shrd edi,edi,7
add ecx,edx
add ebx,DWORD [56+esp]
xor esi,edi
mov ebp,ecx
shld ecx,ecx,5
add ebx,esi
xor ebp,edi
shrd edx,edx,7
add ebx,ecx
add eax,DWORD [60+esp]
xor ebp,edx
mov esi,ebx
shld ebx,ebx,5
add eax,ebp
shrd ecx,ecx,7
add eax,ebx
mov ebp,DWORD [192+esp]
add eax,DWORD [ebp]
add esi,DWORD [4+ebp]
add ecx,DWORD [8+ebp]
mov DWORD [ebp],eax
add edx,DWORD [12+ebp]
mov DWORD [4+ebp],esi
add edi,DWORD [16+ebp]
mov ebx,ecx
mov DWORD [8+ebp],ecx
xor ebx,edx
mov DWORD [12+ebp],edx
mov DWORD [16+ebp],edi
mov ebp,esi
and esi,ebx
mov ebx,ebp
jmp NEAR L$009loop
align 16
L$010done:
add ebx,DWORD [16+esp]
xor esi,edi
mov ebp,ecx
shld ecx,ecx,5
add ebx,esi
xor ebp,edi
shrd edx,edx,7
add ebx,ecx
add eax,DWORD [20+esp]
xor ebp,edx
mov esi,ebx
shld ebx,ebx,5
add eax,ebp
xor esi,edx
shrd ecx,ecx,7
add eax,ebx
add edi,DWORD [24+esp]
xor esi,ecx
mov ebp,eax
shld eax,eax,5
add edi,esi
xor ebp,ecx
shrd ebx,ebx,7
add edi,eax
add edx,DWORD [28+esp]
xor ebp,ebx
mov esi,edi
shld edi,edi,5
add edx,ebp
xor esi,ebx
shrd eax,eax,7
add edx,edi
add ecx,DWORD [32+esp]
xor esi,eax
mov ebp,edx
shld edx,edx,5
add ecx,esi
xor ebp,eax
shrd edi,edi,7
add ecx,edx
add ebx,DWORD [36+esp]
xor ebp,edi
mov esi,ecx
shld ecx,ecx,5
add ebx,ebp
xor esi,edi
shrd edx,edx,7
add ebx,ecx
add eax,DWORD [40+esp]
xor esi,edx
mov ebp,ebx
shld ebx,ebx,5
add eax,esi
xor ebp,edx
shrd ecx,ecx,7
add eax,ebx
add edi,DWORD [44+esp]
xor ebp,ecx
mov esi,eax
shld eax,eax,5
add edi,ebp
xor esi,ecx
shrd ebx,ebx,7
add edi,eax
add edx,DWORD [48+esp]
xor esi,ebx
mov ebp,edi
shld edi,edi,5
add edx,esi
xor ebp,ebx
shrd eax,eax,7
add edx,edi
add ecx,DWORD [52+esp]
xor ebp,eax
mov esi,edx
shld edx,edx,5
add ecx,ebp
xor esi,eax
shrd edi,edi,7
add ecx,edx
add ebx,DWORD [56+esp]
xor esi,edi
mov ebp,ecx
shld ecx,ecx,5
add ebx,esi
xor ebp,edi
shrd edx,edx,7
add ebx,ecx
add eax,DWORD [60+esp]
xor ebp,edx
mov esi,ebx
shld ebx,ebx,5
add eax,ebp
shrd ecx,ecx,7
add eax,ebx
vzeroall
mov ebp,DWORD [192+esp]
add eax,DWORD [ebp]
mov esp,DWORD [204+esp]
add esi,DWORD [4+ebp]
add ecx,DWORD [8+ebp]
mov DWORD [ebp],eax
add edx,DWORD [12+ebp]
mov DWORD [4+ebp],esi
add edi,DWORD [16+ebp]
mov DWORD [8+ebp],ecx
mov DWORD [12+ebp],edx
mov DWORD [16+ebp],edi
pop edi
pop esi
pop ebx
pop ebp
ret
align 64
L$K_XX_XX:
dd 1518500249,1518500249,1518500249,1518500249
dd 1859775393,1859775393,1859775393,1859775393
dd 2400959708,2400959708,2400959708,2400959708
dd 3395469782,3395469782,3395469782,3395469782
dd 66051,67438087,134810123,202182159
db 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
db 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
db 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82
db 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
db 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
segment .bss
common _OPENSSL_ia32cap_P 16