blob: cee8c6262646a11d0cc1cec8b710c3c5403101db [file] [log] [blame]
%ifidn __OUTPUT_FORMAT__,obj
section code use32 class=code align=64
%elifidn __OUTPUT_FORMAT__,win32
%ifdef __YASM_VERSION_ID__
%if __YASM_VERSION_ID__ < 01010000h
%error yasm version 1.1.0 or later needed.
%endif
; Yasm automatically includes .00 and complains about redefining it.
; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
%else
$@feat.00 equ 1
%endif
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
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_ssse3:
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$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$004loop
align 16
L$004loop:
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$005done
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$004loop
align 16
L$005done:
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$006pic_point
L$006pic_point:
pop ebp
lea ebp,[(L$K_XX_XX-L$006pic_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$007loop
align 16
L$007loop:
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