mirror of
https://github.com/luxfi/blst.git
synced 2026-10-30 17:01:37 +00:00
1638 lines
28 KiB
NASM
1638 lines
28 KiB
NASM
OPTION DOTNAME
|
|
_DATA SEGMENT
|
|
COMM __blst_platform_cap:DWORD:1
|
|
|
|
_DATA ENDS
|
|
.rdata SEGMENT READONLY ALIGN(256)
|
|
ALIGN 64
|
|
|
|
K256::
|
|
DD 0428a2f98h,071374491h,0b5c0fbcfh,0e9b5dba5h
|
|
DD 03956c25bh,059f111f1h,0923f82a4h,0ab1c5ed5h
|
|
DD 0d807aa98h,012835b01h,0243185beh,0550c7dc3h
|
|
DD 072be5d74h,080deb1feh,09bdc06a7h,0c19bf174h
|
|
DD 0e49b69c1h,0efbe4786h,00fc19dc6h,0240ca1cch
|
|
DD 02de92c6fh,04a7484aah,05cb0a9dch,076f988dah
|
|
DD 0983e5152h,0a831c66dh,0b00327c8h,0bf597fc7h
|
|
DD 0c6e00bf3h,0d5a79147h,006ca6351h,014292967h
|
|
DD 027b70a85h,02e1b2138h,04d2c6dfch,053380d13h
|
|
DD 0650a7354h,0766a0abbh,081c2c92eh,092722c85h
|
|
DD 0a2bfe8a1h,0a81a664bh,0c24b8b70h,0c76c51a3h
|
|
DD 0d192e819h,0d6990624h,0f40e3585h,0106aa070h
|
|
DD 019a4c116h,01e376c08h,02748774ch,034b0bcb5h
|
|
DD 0391c0cb3h,04ed8aa4ah,05b9cca4fh,0682e6ff3h
|
|
DD 0748f82eeh,078a5636fh,084c87814h,08cc70208h
|
|
DD 090befffah,0a4506cebh,0bef9a3f7h,0c67178f2h
|
|
|
|
DD 000010203h,004050607h,008090a0bh,00c0d0e0fh
|
|
DD 003020100h,00b0a0908h,0ffffffffh,0ffffffffh
|
|
DD 0ffffffffh,0ffffffffh,003020100h,00b0a0908h
|
|
DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
|
|
DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54
|
|
DB 52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
|
|
DB 32,64,100,111,116,45,97,115,109,0
|
|
.rdata ENDS
|
|
.text$ SEGMENT ALIGN(256) 'CODE'
|
|
PUBLIC blst_sha256_block_data_order_shaext
|
|
|
|
|
|
ALIGN 64
|
|
blst_sha256_block_data_order_shaext PROC PUBLIC
|
|
DB 243,15,30,250
|
|
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
|
|
mov QWORD PTR[16+rsp],rsi
|
|
mov r11,rsp
|
|
$L$SEH_begin_blst_sha256_block_data_order_shaext::
|
|
|
|
|
|
push rbp
|
|
|
|
mov rbp,rsp
|
|
|
|
mov rdi,rcx
|
|
mov rsi,rdx
|
|
mov rdx,r8
|
|
$L$blst_sha256_block_data_order$2::
|
|
sub rsp,050h
|
|
|
|
movaps XMMWORD PTR[(-80)+rbp],xmm6
|
|
movaps XMMWORD PTR[(-64)+rbp],xmm7
|
|
movaps XMMWORD PTR[(-48)+rbp],xmm8
|
|
movaps XMMWORD PTR[(-32)+rbp],xmm9
|
|
movaps XMMWORD PTR[(-16)+rbp],xmm10
|
|
|
|
$L$SEH_body_blst_sha256_block_data_order_shaext::
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
endif
|
|
lea rcx,QWORD PTR[((K256+128))]
|
|
movdqu xmm1,XMMWORD PTR[rdi]
|
|
movdqu xmm2,XMMWORD PTR[16+rdi]
|
|
movdqa xmm7,XMMWORD PTR[((256-128))+rcx]
|
|
|
|
pshufd xmm0,xmm1,01bh
|
|
pshufd xmm1,xmm1,0b1h
|
|
pshufd xmm2,xmm2,01bh
|
|
movdqa xmm8,xmm7
|
|
DB 102,15,58,15,202,8
|
|
punpcklqdq xmm2,xmm0
|
|
jmp $L$oop_shaext
|
|
|
|
ALIGN 16
|
|
$L$oop_shaext::
|
|
movdqu xmm3,XMMWORD PTR[rsi]
|
|
movdqu xmm4,XMMWORD PTR[16+rsi]
|
|
movdqu xmm5,XMMWORD PTR[32+rsi]
|
|
DB 102,15,56,0,223
|
|
movdqu xmm6,XMMWORD PTR[48+rsi]
|
|
|
|
movdqa xmm0,XMMWORD PTR[((0-128))+rcx]
|
|
paddd xmm0,xmm3
|
|
DB 102,15,56,0,231
|
|
movdqa xmm10,xmm2
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
nop
|
|
movdqa xmm9,xmm1
|
|
DB 15,56,203,202
|
|
|
|
movdqa xmm0,XMMWORD PTR[((16-128))+rcx]
|
|
paddd xmm0,xmm4
|
|
DB 102,15,56,0,239
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
lea rsi,QWORD PTR[64+rsi]
|
|
DB 15,56,204,220
|
|
DB 15,56,203,202
|
|
|
|
movdqa xmm0,XMMWORD PTR[((32-128))+rcx]
|
|
paddd xmm0,xmm5
|
|
DB 102,15,56,0,247
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm6
|
|
DB 102,15,58,15,253,4
|
|
nop
|
|
paddd xmm3,xmm7
|
|
DB 15,56,204,229
|
|
DB 15,56,203,202
|
|
|
|
movdqa xmm0,XMMWORD PTR[((48-128))+rcx]
|
|
paddd xmm0,xmm6
|
|
DB 15,56,205,222
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm3
|
|
DB 102,15,58,15,254,4
|
|
nop
|
|
paddd xmm4,xmm7
|
|
DB 15,56,204,238
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((64-128))+rcx]
|
|
paddd xmm0,xmm3
|
|
DB 15,56,205,227
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm4
|
|
DB 102,15,58,15,251,4
|
|
nop
|
|
paddd xmm5,xmm7
|
|
DB 15,56,204,243
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((80-128))+rcx]
|
|
paddd xmm0,xmm4
|
|
DB 15,56,205,236
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm5
|
|
DB 102,15,58,15,252,4
|
|
nop
|
|
paddd xmm6,xmm7
|
|
DB 15,56,204,220
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((96-128))+rcx]
|
|
paddd xmm0,xmm5
|
|
DB 15,56,205,245
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm6
|
|
DB 102,15,58,15,253,4
|
|
nop
|
|
paddd xmm3,xmm7
|
|
DB 15,56,204,229
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((112-128))+rcx]
|
|
paddd xmm0,xmm6
|
|
DB 15,56,205,222
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm3
|
|
DB 102,15,58,15,254,4
|
|
nop
|
|
paddd xmm4,xmm7
|
|
DB 15,56,204,238
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((128-128))+rcx]
|
|
paddd xmm0,xmm3
|
|
DB 15,56,205,227
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm4
|
|
DB 102,15,58,15,251,4
|
|
nop
|
|
paddd xmm5,xmm7
|
|
DB 15,56,204,243
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((144-128))+rcx]
|
|
paddd xmm0,xmm4
|
|
DB 15,56,205,236
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm5
|
|
DB 102,15,58,15,252,4
|
|
nop
|
|
paddd xmm6,xmm7
|
|
DB 15,56,204,220
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((160-128))+rcx]
|
|
paddd xmm0,xmm5
|
|
DB 15,56,205,245
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm6
|
|
DB 102,15,58,15,253,4
|
|
nop
|
|
paddd xmm3,xmm7
|
|
DB 15,56,204,229
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((176-128))+rcx]
|
|
paddd xmm0,xmm6
|
|
DB 15,56,205,222
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm3
|
|
DB 102,15,58,15,254,4
|
|
nop
|
|
paddd xmm4,xmm7
|
|
DB 15,56,204,238
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((192-128))+rcx]
|
|
paddd xmm0,xmm3
|
|
DB 15,56,205,227
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm4
|
|
DB 102,15,58,15,251,4
|
|
nop
|
|
paddd xmm5,xmm7
|
|
DB 15,56,204,243
|
|
DB 15,56,203,202
|
|
movdqa xmm0,XMMWORD PTR[((208-128))+rcx]
|
|
paddd xmm0,xmm4
|
|
DB 15,56,205,236
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
movdqa xmm7,xmm5
|
|
DB 102,15,58,15,252,4
|
|
DB 15,56,203,202
|
|
paddd xmm6,xmm7
|
|
|
|
movdqa xmm0,XMMWORD PTR[((224-128))+rcx]
|
|
paddd xmm0,xmm5
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
DB 15,56,205,245
|
|
movdqa xmm7,xmm8
|
|
DB 15,56,203,202
|
|
|
|
movdqa xmm0,XMMWORD PTR[((240-128))+rcx]
|
|
paddd xmm0,xmm6
|
|
nop
|
|
DB 15,56,203,209
|
|
pshufd xmm0,xmm0,00eh
|
|
dec rdx
|
|
nop
|
|
DB 15,56,203,202
|
|
|
|
paddd xmm2,xmm10
|
|
paddd xmm1,xmm9
|
|
jnz $L$oop_shaext
|
|
|
|
pshufd xmm2,xmm2,0b1h
|
|
pshufd xmm7,xmm1,01bh
|
|
pshufd xmm1,xmm1,0b1h
|
|
punpckhqdq xmm1,xmm2
|
|
DB 102,15,58,15,215,8
|
|
|
|
movdqu XMMWORD PTR[rdi],xmm1
|
|
movdqu XMMWORD PTR[16+rdi],xmm2
|
|
movaps xmm6,XMMWORD PTR[((-80))+rbp]
|
|
movaps xmm7,XMMWORD PTR[((-64))+rbp]
|
|
movaps xmm8,XMMWORD PTR[((-48))+rbp]
|
|
movaps xmm9,XMMWORD PTR[((-32))+rbp]
|
|
movaps xmm10,XMMWORD PTR[((-16))+rbp]
|
|
mov rsp,rbp
|
|
|
|
pop rbp
|
|
|
|
$L$SEH_epilogue_blst_sha256_block_data_order_shaext::
|
|
mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
|
|
mov rsi,QWORD PTR[16+rsp]
|
|
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
pop rdx
|
|
lfence
|
|
jmp rdx
|
|
ud2
|
|
else
|
|
DB 0F3h,0C3h
|
|
endif
|
|
|
|
$L$SEH_end_blst_sha256_block_data_order_shaext::
|
|
blst_sha256_block_data_order_shaext ENDP
|
|
PUBLIC blst_sha256_block_data_order
|
|
|
|
|
|
ALIGN 64
|
|
blst_sha256_block_data_order PROC PUBLIC
|
|
DB 243,15,30,250
|
|
mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
|
|
mov QWORD PTR[16+rsp],rsi
|
|
mov r11,rsp
|
|
$L$SEH_begin_blst_sha256_block_data_order::
|
|
|
|
|
|
push rbp
|
|
|
|
mov rbp,rsp
|
|
|
|
mov rdi,rcx
|
|
mov rsi,rdx
|
|
mov rdx,r8
|
|
ifndef __SGX_LVI_HARDENING__
|
|
test DWORD PTR[__blst_platform_cap],2
|
|
jnz $L$blst_sha256_block_data_order$2
|
|
endif
|
|
push rbx
|
|
|
|
push r12
|
|
|
|
push r13
|
|
|
|
push r14
|
|
|
|
push r15
|
|
|
|
shl rdx,4
|
|
sub rsp,88
|
|
|
|
lea rdx,QWORD PTR[rdx*4+rsi]
|
|
mov QWORD PTR[((-64))+rbp],rdi
|
|
|
|
mov QWORD PTR[((-48))+rbp],rdx
|
|
movaps XMMWORD PTR[(-128)+rbp],xmm6
|
|
movaps XMMWORD PTR[(-112)+rbp],xmm7
|
|
movaps XMMWORD PTR[(-96)+rbp],xmm8
|
|
movaps XMMWORD PTR[(-80)+rbp],xmm9
|
|
|
|
$L$SEH_body_blst_sha256_block_data_order::
|
|
|
|
|
|
lea rsp,QWORD PTR[((-64))+rsp]
|
|
ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
endif
|
|
mov eax,DWORD PTR[rdi]
|
|
and rsp,-64
|
|
mov ebx,DWORD PTR[4+rdi]
|
|
mov ecx,DWORD PTR[8+rdi]
|
|
mov edx,DWORD PTR[12+rdi]
|
|
mov r8d,DWORD PTR[16+rdi]
|
|
mov r9d,DWORD PTR[20+rdi]
|
|
mov r10d,DWORD PTR[24+rdi]
|
|
mov r11d,DWORD PTR[28+rdi]
|
|
|
|
|
|
jmp $L$loop_ssse3
|
|
ALIGN 16
|
|
$L$loop_ssse3::
|
|
movdqa xmm7,XMMWORD PTR[((K256+256))]
|
|
mov QWORD PTR[((-56))+rbp],rsi
|
|
movdqu xmm0,XMMWORD PTR[rsi]
|
|
movdqu xmm1,XMMWORD PTR[16+rsi]
|
|
movdqu xmm2,XMMWORD PTR[32+rsi]
|
|
DB 102,15,56,0,199
|
|
movdqu xmm3,XMMWORD PTR[48+rsi]
|
|
lea rsi,QWORD PTR[K256]
|
|
DB 102,15,56,0,207
|
|
movdqa xmm4,XMMWORD PTR[rsi]
|
|
movdqa xmm5,XMMWORD PTR[16+rsi]
|
|
DB 102,15,56,0,215
|
|
paddd xmm4,xmm0
|
|
movdqa xmm6,XMMWORD PTR[32+rsi]
|
|
DB 102,15,56,0,223
|
|
movdqa xmm7,XMMWORD PTR[48+rsi]
|
|
paddd xmm5,xmm1
|
|
paddd xmm6,xmm2
|
|
paddd xmm7,xmm3
|
|
movdqa XMMWORD PTR[rsp],xmm4
|
|
mov r14d,eax
|
|
movdqa XMMWORD PTR[16+rsp],xmm5
|
|
mov edi,ebx
|
|
movdqa XMMWORD PTR[32+rsp],xmm6
|
|
xor edi,ecx
|
|
movdqa XMMWORD PTR[48+rsp],xmm7
|
|
mov r13d,r8d
|
|
jmp $L$ssse3_00_47
|
|
|
|
ALIGN 16
|
|
$L$ssse3_00_47::
|
|
sub rsi,-64
|
|
ror r13d,14
|
|
movdqa xmm4,xmm1
|
|
mov eax,r14d
|
|
mov r12d,r9d
|
|
movdqa xmm7,xmm3
|
|
ror r14d,9
|
|
xor r13d,r8d
|
|
xor r12d,r10d
|
|
ror r13d,5
|
|
xor r14d,eax
|
|
DB 102,15,58,15,224,4
|
|
and r12d,r8d
|
|
xor r13d,r8d
|
|
DB 102,15,58,15,250,4
|
|
add r11d,DWORD PTR[rsp]
|
|
mov r15d,eax
|
|
xor r12d,r10d
|
|
ror r14d,11
|
|
movdqa xmm5,xmm4
|
|
xor r15d,ebx
|
|
add r11d,r12d
|
|
movdqa xmm6,xmm4
|
|
ror r13d,6
|
|
and edi,r15d
|
|
psrld xmm4,3
|
|
xor r14d,eax
|
|
add r11d,r13d
|
|
xor edi,ebx
|
|
paddd xmm0,xmm7
|
|
ror r14d,2
|
|
add edx,r11d
|
|
psrld xmm6,7
|
|
add r11d,edi
|
|
mov r13d,edx
|
|
pshufd xmm7,xmm3,250
|
|
add r14d,r11d
|
|
ror r13d,14
|
|
pslld xmm5,14
|
|
mov r11d,r14d
|
|
mov r12d,r8d
|
|
pxor xmm4,xmm6
|
|
ror r14d,9
|
|
xor r13d,edx
|
|
xor r12d,r9d
|
|
ror r13d,5
|
|
psrld xmm6,11
|
|
xor r14d,r11d
|
|
pxor xmm4,xmm5
|
|
and r12d,edx
|
|
xor r13d,edx
|
|
pslld xmm5,11
|
|
add r10d,DWORD PTR[4+rsp]
|
|
mov edi,r11d
|
|
pxor xmm4,xmm6
|
|
xor r12d,r9d
|
|
ror r14d,11
|
|
movdqa xmm6,xmm7
|
|
xor edi,eax
|
|
add r10d,r12d
|
|
pxor xmm4,xmm5
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,r11d
|
|
psrld xmm7,10
|
|
add r10d,r13d
|
|
xor r15d,eax
|
|
paddd xmm0,xmm4
|
|
ror r14d,2
|
|
add ecx,r10d
|
|
psrlq xmm6,17
|
|
add r10d,r15d
|
|
mov r13d,ecx
|
|
add r14d,r10d
|
|
pxor xmm7,xmm6
|
|
ror r13d,14
|
|
mov r10d,r14d
|
|
mov r12d,edx
|
|
ror r14d,9
|
|
psrlq xmm6,2
|
|
xor r13d,ecx
|
|
xor r12d,r8d
|
|
pxor xmm7,xmm6
|
|
ror r13d,5
|
|
xor r14d,r10d
|
|
and r12d,ecx
|
|
pshufd xmm7,xmm7,128
|
|
xor r13d,ecx
|
|
add r9d,DWORD PTR[8+rsp]
|
|
mov r15d,r10d
|
|
psrldq xmm7,8
|
|
xor r12d,r8d
|
|
ror r14d,11
|
|
xor r15d,r11d
|
|
add r9d,r12d
|
|
ror r13d,6
|
|
paddd xmm0,xmm7
|
|
and edi,r15d
|
|
xor r14d,r10d
|
|
add r9d,r13d
|
|
pshufd xmm7,xmm0,80
|
|
xor edi,r11d
|
|
ror r14d,2
|
|
add ebx,r9d
|
|
movdqa xmm6,xmm7
|
|
add r9d,edi
|
|
mov r13d,ebx
|
|
psrld xmm7,10
|
|
add r14d,r9d
|
|
ror r13d,14
|
|
psrlq xmm6,17
|
|
mov r9d,r14d
|
|
mov r12d,ecx
|
|
pxor xmm7,xmm6
|
|
ror r14d,9
|
|
xor r13d,ebx
|
|
xor r12d,edx
|
|
ror r13d,5
|
|
xor r14d,r9d
|
|
psrlq xmm6,2
|
|
and r12d,ebx
|
|
xor r13d,ebx
|
|
add r8d,DWORD PTR[12+rsp]
|
|
pxor xmm7,xmm6
|
|
mov edi,r9d
|
|
xor r12d,edx
|
|
ror r14d,11
|
|
pshufd xmm7,xmm7,8
|
|
xor edi,r10d
|
|
add r8d,r12d
|
|
movdqa xmm6,XMMWORD PTR[rsi]
|
|
ror r13d,6
|
|
and r15d,edi
|
|
pslldq xmm7,8
|
|
xor r14d,r9d
|
|
add r8d,r13d
|
|
xor r15d,r10d
|
|
paddd xmm0,xmm7
|
|
ror r14d,2
|
|
add eax,r8d
|
|
add r8d,r15d
|
|
paddd xmm6,xmm0
|
|
mov r13d,eax
|
|
add r14d,r8d
|
|
movdqa XMMWORD PTR[rsp],xmm6
|
|
ror r13d,14
|
|
movdqa xmm4,xmm2
|
|
mov r8d,r14d
|
|
mov r12d,ebx
|
|
movdqa xmm7,xmm0
|
|
ror r14d,9
|
|
xor r13d,eax
|
|
xor r12d,ecx
|
|
ror r13d,5
|
|
xor r14d,r8d
|
|
DB 102,15,58,15,225,4
|
|
and r12d,eax
|
|
xor r13d,eax
|
|
DB 102,15,58,15,251,4
|
|
add edx,DWORD PTR[16+rsp]
|
|
mov r15d,r8d
|
|
xor r12d,ecx
|
|
ror r14d,11
|
|
movdqa xmm5,xmm4
|
|
xor r15d,r9d
|
|
add edx,r12d
|
|
movdqa xmm6,xmm4
|
|
ror r13d,6
|
|
and edi,r15d
|
|
psrld xmm4,3
|
|
xor r14d,r8d
|
|
add edx,r13d
|
|
xor edi,r9d
|
|
paddd xmm1,xmm7
|
|
ror r14d,2
|
|
add r11d,edx
|
|
psrld xmm6,7
|
|
add edx,edi
|
|
mov r13d,r11d
|
|
pshufd xmm7,xmm0,250
|
|
add r14d,edx
|
|
ror r13d,14
|
|
pslld xmm5,14
|
|
mov edx,r14d
|
|
mov r12d,eax
|
|
pxor xmm4,xmm6
|
|
ror r14d,9
|
|
xor r13d,r11d
|
|
xor r12d,ebx
|
|
ror r13d,5
|
|
psrld xmm6,11
|
|
xor r14d,edx
|
|
pxor xmm4,xmm5
|
|
and r12d,r11d
|
|
xor r13d,r11d
|
|
pslld xmm5,11
|
|
add ecx,DWORD PTR[20+rsp]
|
|
mov edi,edx
|
|
pxor xmm4,xmm6
|
|
xor r12d,ebx
|
|
ror r14d,11
|
|
movdqa xmm6,xmm7
|
|
xor edi,r8d
|
|
add ecx,r12d
|
|
pxor xmm4,xmm5
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,edx
|
|
psrld xmm7,10
|
|
add ecx,r13d
|
|
xor r15d,r8d
|
|
paddd xmm1,xmm4
|
|
ror r14d,2
|
|
add r10d,ecx
|
|
psrlq xmm6,17
|
|
add ecx,r15d
|
|
mov r13d,r10d
|
|
add r14d,ecx
|
|
pxor xmm7,xmm6
|
|
ror r13d,14
|
|
mov ecx,r14d
|
|
mov r12d,r11d
|
|
ror r14d,9
|
|
psrlq xmm6,2
|
|
xor r13d,r10d
|
|
xor r12d,eax
|
|
pxor xmm7,xmm6
|
|
ror r13d,5
|
|
xor r14d,ecx
|
|
and r12d,r10d
|
|
pshufd xmm7,xmm7,128
|
|
xor r13d,r10d
|
|
add ebx,DWORD PTR[24+rsp]
|
|
mov r15d,ecx
|
|
psrldq xmm7,8
|
|
xor r12d,eax
|
|
ror r14d,11
|
|
xor r15d,edx
|
|
add ebx,r12d
|
|
ror r13d,6
|
|
paddd xmm1,xmm7
|
|
and edi,r15d
|
|
xor r14d,ecx
|
|
add ebx,r13d
|
|
pshufd xmm7,xmm1,80
|
|
xor edi,edx
|
|
ror r14d,2
|
|
add r9d,ebx
|
|
movdqa xmm6,xmm7
|
|
add ebx,edi
|
|
mov r13d,r9d
|
|
psrld xmm7,10
|
|
add r14d,ebx
|
|
ror r13d,14
|
|
psrlq xmm6,17
|
|
mov ebx,r14d
|
|
mov r12d,r10d
|
|
pxor xmm7,xmm6
|
|
ror r14d,9
|
|
xor r13d,r9d
|
|
xor r12d,r11d
|
|
ror r13d,5
|
|
xor r14d,ebx
|
|
psrlq xmm6,2
|
|
and r12d,r9d
|
|
xor r13d,r9d
|
|
add eax,DWORD PTR[28+rsp]
|
|
pxor xmm7,xmm6
|
|
mov edi,ebx
|
|
xor r12d,r11d
|
|
ror r14d,11
|
|
pshufd xmm7,xmm7,8
|
|
xor edi,ecx
|
|
add eax,r12d
|
|
movdqa xmm6,XMMWORD PTR[16+rsi]
|
|
ror r13d,6
|
|
and r15d,edi
|
|
pslldq xmm7,8
|
|
xor r14d,ebx
|
|
add eax,r13d
|
|
xor r15d,ecx
|
|
paddd xmm1,xmm7
|
|
ror r14d,2
|
|
add r8d,eax
|
|
add eax,r15d
|
|
paddd xmm6,xmm1
|
|
mov r13d,r8d
|
|
add r14d,eax
|
|
movdqa XMMWORD PTR[16+rsp],xmm6
|
|
ror r13d,14
|
|
movdqa xmm4,xmm3
|
|
mov eax,r14d
|
|
mov r12d,r9d
|
|
movdqa xmm7,xmm1
|
|
ror r14d,9
|
|
xor r13d,r8d
|
|
xor r12d,r10d
|
|
ror r13d,5
|
|
xor r14d,eax
|
|
DB 102,15,58,15,226,4
|
|
and r12d,r8d
|
|
xor r13d,r8d
|
|
DB 102,15,58,15,248,4
|
|
add r11d,DWORD PTR[32+rsp]
|
|
mov r15d,eax
|
|
xor r12d,r10d
|
|
ror r14d,11
|
|
movdqa xmm5,xmm4
|
|
xor r15d,ebx
|
|
add r11d,r12d
|
|
movdqa xmm6,xmm4
|
|
ror r13d,6
|
|
and edi,r15d
|
|
psrld xmm4,3
|
|
xor r14d,eax
|
|
add r11d,r13d
|
|
xor edi,ebx
|
|
paddd xmm2,xmm7
|
|
ror r14d,2
|
|
add edx,r11d
|
|
psrld xmm6,7
|
|
add r11d,edi
|
|
mov r13d,edx
|
|
pshufd xmm7,xmm1,250
|
|
add r14d,r11d
|
|
ror r13d,14
|
|
pslld xmm5,14
|
|
mov r11d,r14d
|
|
mov r12d,r8d
|
|
pxor xmm4,xmm6
|
|
ror r14d,9
|
|
xor r13d,edx
|
|
xor r12d,r9d
|
|
ror r13d,5
|
|
psrld xmm6,11
|
|
xor r14d,r11d
|
|
pxor xmm4,xmm5
|
|
and r12d,edx
|
|
xor r13d,edx
|
|
pslld xmm5,11
|
|
add r10d,DWORD PTR[36+rsp]
|
|
mov edi,r11d
|
|
pxor xmm4,xmm6
|
|
xor r12d,r9d
|
|
ror r14d,11
|
|
movdqa xmm6,xmm7
|
|
xor edi,eax
|
|
add r10d,r12d
|
|
pxor xmm4,xmm5
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,r11d
|
|
psrld xmm7,10
|
|
add r10d,r13d
|
|
xor r15d,eax
|
|
paddd xmm2,xmm4
|
|
ror r14d,2
|
|
add ecx,r10d
|
|
psrlq xmm6,17
|
|
add r10d,r15d
|
|
mov r13d,ecx
|
|
add r14d,r10d
|
|
pxor xmm7,xmm6
|
|
ror r13d,14
|
|
mov r10d,r14d
|
|
mov r12d,edx
|
|
ror r14d,9
|
|
psrlq xmm6,2
|
|
xor r13d,ecx
|
|
xor r12d,r8d
|
|
pxor xmm7,xmm6
|
|
ror r13d,5
|
|
xor r14d,r10d
|
|
and r12d,ecx
|
|
pshufd xmm7,xmm7,128
|
|
xor r13d,ecx
|
|
add r9d,DWORD PTR[40+rsp]
|
|
mov r15d,r10d
|
|
psrldq xmm7,8
|
|
xor r12d,r8d
|
|
ror r14d,11
|
|
xor r15d,r11d
|
|
add r9d,r12d
|
|
ror r13d,6
|
|
paddd xmm2,xmm7
|
|
and edi,r15d
|
|
xor r14d,r10d
|
|
add r9d,r13d
|
|
pshufd xmm7,xmm2,80
|
|
xor edi,r11d
|
|
ror r14d,2
|
|
add ebx,r9d
|
|
movdqa xmm6,xmm7
|
|
add r9d,edi
|
|
mov r13d,ebx
|
|
psrld xmm7,10
|
|
add r14d,r9d
|
|
ror r13d,14
|
|
psrlq xmm6,17
|
|
mov r9d,r14d
|
|
mov r12d,ecx
|
|
pxor xmm7,xmm6
|
|
ror r14d,9
|
|
xor r13d,ebx
|
|
xor r12d,edx
|
|
ror r13d,5
|
|
xor r14d,r9d
|
|
psrlq xmm6,2
|
|
and r12d,ebx
|
|
xor r13d,ebx
|
|
add r8d,DWORD PTR[44+rsp]
|
|
pxor xmm7,xmm6
|
|
mov edi,r9d
|
|
xor r12d,edx
|
|
ror r14d,11
|
|
pshufd xmm7,xmm7,8
|
|
xor edi,r10d
|
|
add r8d,r12d
|
|
movdqa xmm6,XMMWORD PTR[32+rsi]
|
|
ror r13d,6
|
|
and r15d,edi
|
|
pslldq xmm7,8
|
|
xor r14d,r9d
|
|
add r8d,r13d
|
|
xor r15d,r10d
|
|
paddd xmm2,xmm7
|
|
ror r14d,2
|
|
add eax,r8d
|
|
add r8d,r15d
|
|
paddd xmm6,xmm2
|
|
mov r13d,eax
|
|
add r14d,r8d
|
|
movdqa XMMWORD PTR[32+rsp],xmm6
|
|
ror r13d,14
|
|
movdqa xmm4,xmm0
|
|
mov r8d,r14d
|
|
mov r12d,ebx
|
|
movdqa xmm7,xmm2
|
|
ror r14d,9
|
|
xor r13d,eax
|
|
xor r12d,ecx
|
|
ror r13d,5
|
|
xor r14d,r8d
|
|
DB 102,15,58,15,227,4
|
|
and r12d,eax
|
|
xor r13d,eax
|
|
DB 102,15,58,15,249,4
|
|
add edx,DWORD PTR[48+rsp]
|
|
mov r15d,r8d
|
|
xor r12d,ecx
|
|
ror r14d,11
|
|
movdqa xmm5,xmm4
|
|
xor r15d,r9d
|
|
add edx,r12d
|
|
movdqa xmm6,xmm4
|
|
ror r13d,6
|
|
and edi,r15d
|
|
psrld xmm4,3
|
|
xor r14d,r8d
|
|
add edx,r13d
|
|
xor edi,r9d
|
|
paddd xmm3,xmm7
|
|
ror r14d,2
|
|
add r11d,edx
|
|
psrld xmm6,7
|
|
add edx,edi
|
|
mov r13d,r11d
|
|
pshufd xmm7,xmm2,250
|
|
add r14d,edx
|
|
ror r13d,14
|
|
pslld xmm5,14
|
|
mov edx,r14d
|
|
mov r12d,eax
|
|
pxor xmm4,xmm6
|
|
ror r14d,9
|
|
xor r13d,r11d
|
|
xor r12d,ebx
|
|
ror r13d,5
|
|
psrld xmm6,11
|
|
xor r14d,edx
|
|
pxor xmm4,xmm5
|
|
and r12d,r11d
|
|
xor r13d,r11d
|
|
pslld xmm5,11
|
|
add ecx,DWORD PTR[52+rsp]
|
|
mov edi,edx
|
|
pxor xmm4,xmm6
|
|
xor r12d,ebx
|
|
ror r14d,11
|
|
movdqa xmm6,xmm7
|
|
xor edi,r8d
|
|
add ecx,r12d
|
|
pxor xmm4,xmm5
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,edx
|
|
psrld xmm7,10
|
|
add ecx,r13d
|
|
xor r15d,r8d
|
|
paddd xmm3,xmm4
|
|
ror r14d,2
|
|
add r10d,ecx
|
|
psrlq xmm6,17
|
|
add ecx,r15d
|
|
mov r13d,r10d
|
|
add r14d,ecx
|
|
pxor xmm7,xmm6
|
|
ror r13d,14
|
|
mov ecx,r14d
|
|
mov r12d,r11d
|
|
ror r14d,9
|
|
psrlq xmm6,2
|
|
xor r13d,r10d
|
|
xor r12d,eax
|
|
pxor xmm7,xmm6
|
|
ror r13d,5
|
|
xor r14d,ecx
|
|
and r12d,r10d
|
|
pshufd xmm7,xmm7,128
|
|
xor r13d,r10d
|
|
add ebx,DWORD PTR[56+rsp]
|
|
mov r15d,ecx
|
|
psrldq xmm7,8
|
|
xor r12d,eax
|
|
ror r14d,11
|
|
xor r15d,edx
|
|
add ebx,r12d
|
|
ror r13d,6
|
|
paddd xmm3,xmm7
|
|
and edi,r15d
|
|
xor r14d,ecx
|
|
add ebx,r13d
|
|
pshufd xmm7,xmm3,80
|
|
xor edi,edx
|
|
ror r14d,2
|
|
add r9d,ebx
|
|
movdqa xmm6,xmm7
|
|
add ebx,edi
|
|
mov r13d,r9d
|
|
psrld xmm7,10
|
|
add r14d,ebx
|
|
ror r13d,14
|
|
psrlq xmm6,17
|
|
mov ebx,r14d
|
|
mov r12d,r10d
|
|
pxor xmm7,xmm6
|
|
ror r14d,9
|
|
xor r13d,r9d
|
|
xor r12d,r11d
|
|
ror r13d,5
|
|
xor r14d,ebx
|
|
psrlq xmm6,2
|
|
and r12d,r9d
|
|
xor r13d,r9d
|
|
add eax,DWORD PTR[60+rsp]
|
|
pxor xmm7,xmm6
|
|
mov edi,ebx
|
|
xor r12d,r11d
|
|
ror r14d,11
|
|
pshufd xmm7,xmm7,8
|
|
xor edi,ecx
|
|
add eax,r12d
|
|
movdqa xmm6,XMMWORD PTR[48+rsi]
|
|
ror r13d,6
|
|
and r15d,edi
|
|
pslldq xmm7,8
|
|
xor r14d,ebx
|
|
add eax,r13d
|
|
xor r15d,ecx
|
|
paddd xmm3,xmm7
|
|
ror r14d,2
|
|
add r8d,eax
|
|
add eax,r15d
|
|
paddd xmm6,xmm3
|
|
mov r13d,r8d
|
|
add r14d,eax
|
|
movdqa XMMWORD PTR[48+rsp],xmm6
|
|
cmp BYTE PTR[67+rsi],0
|
|
jne $L$ssse3_00_47
|
|
ror r13d,14
|
|
mov eax,r14d
|
|
mov r12d,r9d
|
|
ror r14d,9
|
|
xor r13d,r8d
|
|
xor r12d,r10d
|
|
ror r13d,5
|
|
xor r14d,eax
|
|
and r12d,r8d
|
|
xor r13d,r8d
|
|
add r11d,DWORD PTR[rsp]
|
|
mov r15d,eax
|
|
xor r12d,r10d
|
|
ror r14d,11
|
|
xor r15d,ebx
|
|
add r11d,r12d
|
|
ror r13d,6
|
|
and edi,r15d
|
|
xor r14d,eax
|
|
add r11d,r13d
|
|
xor edi,ebx
|
|
ror r14d,2
|
|
add edx,r11d
|
|
add r11d,edi
|
|
mov r13d,edx
|
|
add r14d,r11d
|
|
ror r13d,14
|
|
mov r11d,r14d
|
|
mov r12d,r8d
|
|
ror r14d,9
|
|
xor r13d,edx
|
|
xor r12d,r9d
|
|
ror r13d,5
|
|
xor r14d,r11d
|
|
and r12d,edx
|
|
xor r13d,edx
|
|
add r10d,DWORD PTR[4+rsp]
|
|
mov edi,r11d
|
|
xor r12d,r9d
|
|
ror r14d,11
|
|
xor edi,eax
|
|
add r10d,r12d
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,r11d
|
|
add r10d,r13d
|
|
xor r15d,eax
|
|
ror r14d,2
|
|
add ecx,r10d
|
|
add r10d,r15d
|
|
mov r13d,ecx
|
|
add r14d,r10d
|
|
ror r13d,14
|
|
mov r10d,r14d
|
|
mov r12d,edx
|
|
ror r14d,9
|
|
xor r13d,ecx
|
|
xor r12d,r8d
|
|
ror r13d,5
|
|
xor r14d,r10d
|
|
and r12d,ecx
|
|
xor r13d,ecx
|
|
add r9d,DWORD PTR[8+rsp]
|
|
mov r15d,r10d
|
|
xor r12d,r8d
|
|
ror r14d,11
|
|
xor r15d,r11d
|
|
add r9d,r12d
|
|
ror r13d,6
|
|
and edi,r15d
|
|
xor r14d,r10d
|
|
add r9d,r13d
|
|
xor edi,r11d
|
|
ror r14d,2
|
|
add ebx,r9d
|
|
add r9d,edi
|
|
mov r13d,ebx
|
|
add r14d,r9d
|
|
ror r13d,14
|
|
mov r9d,r14d
|
|
mov r12d,ecx
|
|
ror r14d,9
|
|
xor r13d,ebx
|
|
xor r12d,edx
|
|
ror r13d,5
|
|
xor r14d,r9d
|
|
and r12d,ebx
|
|
xor r13d,ebx
|
|
add r8d,DWORD PTR[12+rsp]
|
|
mov edi,r9d
|
|
xor r12d,edx
|
|
ror r14d,11
|
|
xor edi,r10d
|
|
add r8d,r12d
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,r9d
|
|
add r8d,r13d
|
|
xor r15d,r10d
|
|
ror r14d,2
|
|
add eax,r8d
|
|
add r8d,r15d
|
|
mov r13d,eax
|
|
add r14d,r8d
|
|
ror r13d,14
|
|
mov r8d,r14d
|
|
mov r12d,ebx
|
|
ror r14d,9
|
|
xor r13d,eax
|
|
xor r12d,ecx
|
|
ror r13d,5
|
|
xor r14d,r8d
|
|
and r12d,eax
|
|
xor r13d,eax
|
|
add edx,DWORD PTR[16+rsp]
|
|
mov r15d,r8d
|
|
xor r12d,ecx
|
|
ror r14d,11
|
|
xor r15d,r9d
|
|
add edx,r12d
|
|
ror r13d,6
|
|
and edi,r15d
|
|
xor r14d,r8d
|
|
add edx,r13d
|
|
xor edi,r9d
|
|
ror r14d,2
|
|
add r11d,edx
|
|
add edx,edi
|
|
mov r13d,r11d
|
|
add r14d,edx
|
|
ror r13d,14
|
|
mov edx,r14d
|
|
mov r12d,eax
|
|
ror r14d,9
|
|
xor r13d,r11d
|
|
xor r12d,ebx
|
|
ror r13d,5
|
|
xor r14d,edx
|
|
and r12d,r11d
|
|
xor r13d,r11d
|
|
add ecx,DWORD PTR[20+rsp]
|
|
mov edi,edx
|
|
xor r12d,ebx
|
|
ror r14d,11
|
|
xor edi,r8d
|
|
add ecx,r12d
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,edx
|
|
add ecx,r13d
|
|
xor r15d,r8d
|
|
ror r14d,2
|
|
add r10d,ecx
|
|
add ecx,r15d
|
|
mov r13d,r10d
|
|
add r14d,ecx
|
|
ror r13d,14
|
|
mov ecx,r14d
|
|
mov r12d,r11d
|
|
ror r14d,9
|
|
xor r13d,r10d
|
|
xor r12d,eax
|
|
ror r13d,5
|
|
xor r14d,ecx
|
|
and r12d,r10d
|
|
xor r13d,r10d
|
|
add ebx,DWORD PTR[24+rsp]
|
|
mov r15d,ecx
|
|
xor r12d,eax
|
|
ror r14d,11
|
|
xor r15d,edx
|
|
add ebx,r12d
|
|
ror r13d,6
|
|
and edi,r15d
|
|
xor r14d,ecx
|
|
add ebx,r13d
|
|
xor edi,edx
|
|
ror r14d,2
|
|
add r9d,ebx
|
|
add ebx,edi
|
|
mov r13d,r9d
|
|
add r14d,ebx
|
|
ror r13d,14
|
|
mov ebx,r14d
|
|
mov r12d,r10d
|
|
ror r14d,9
|
|
xor r13d,r9d
|
|
xor r12d,r11d
|
|
ror r13d,5
|
|
xor r14d,ebx
|
|
and r12d,r9d
|
|
xor r13d,r9d
|
|
add eax,DWORD PTR[28+rsp]
|
|
mov edi,ebx
|
|
xor r12d,r11d
|
|
ror r14d,11
|
|
xor edi,ecx
|
|
add eax,r12d
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,ebx
|
|
add eax,r13d
|
|
xor r15d,ecx
|
|
ror r14d,2
|
|
add r8d,eax
|
|
add eax,r15d
|
|
mov r13d,r8d
|
|
add r14d,eax
|
|
ror r13d,14
|
|
mov eax,r14d
|
|
mov r12d,r9d
|
|
ror r14d,9
|
|
xor r13d,r8d
|
|
xor r12d,r10d
|
|
ror r13d,5
|
|
xor r14d,eax
|
|
and r12d,r8d
|
|
xor r13d,r8d
|
|
add r11d,DWORD PTR[32+rsp]
|
|
mov r15d,eax
|
|
xor r12d,r10d
|
|
ror r14d,11
|
|
xor r15d,ebx
|
|
add r11d,r12d
|
|
ror r13d,6
|
|
and edi,r15d
|
|
xor r14d,eax
|
|
add r11d,r13d
|
|
xor edi,ebx
|
|
ror r14d,2
|
|
add edx,r11d
|
|
add r11d,edi
|
|
mov r13d,edx
|
|
add r14d,r11d
|
|
ror r13d,14
|
|
mov r11d,r14d
|
|
mov r12d,r8d
|
|
ror r14d,9
|
|
xor r13d,edx
|
|
xor r12d,r9d
|
|
ror r13d,5
|
|
xor r14d,r11d
|
|
and r12d,edx
|
|
xor r13d,edx
|
|
add r10d,DWORD PTR[36+rsp]
|
|
mov edi,r11d
|
|
xor r12d,r9d
|
|
ror r14d,11
|
|
xor edi,eax
|
|
add r10d,r12d
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,r11d
|
|
add r10d,r13d
|
|
xor r15d,eax
|
|
ror r14d,2
|
|
add ecx,r10d
|
|
add r10d,r15d
|
|
mov r13d,ecx
|
|
add r14d,r10d
|
|
ror r13d,14
|
|
mov r10d,r14d
|
|
mov r12d,edx
|
|
ror r14d,9
|
|
xor r13d,ecx
|
|
xor r12d,r8d
|
|
ror r13d,5
|
|
xor r14d,r10d
|
|
and r12d,ecx
|
|
xor r13d,ecx
|
|
add r9d,DWORD PTR[40+rsp]
|
|
mov r15d,r10d
|
|
xor r12d,r8d
|
|
ror r14d,11
|
|
xor r15d,r11d
|
|
add r9d,r12d
|
|
ror r13d,6
|
|
and edi,r15d
|
|
xor r14d,r10d
|
|
add r9d,r13d
|
|
xor edi,r11d
|
|
ror r14d,2
|
|
add ebx,r9d
|
|
add r9d,edi
|
|
mov r13d,ebx
|
|
add r14d,r9d
|
|
ror r13d,14
|
|
mov r9d,r14d
|
|
mov r12d,ecx
|
|
ror r14d,9
|
|
xor r13d,ebx
|
|
xor r12d,edx
|
|
ror r13d,5
|
|
xor r14d,r9d
|
|
and r12d,ebx
|
|
xor r13d,ebx
|
|
add r8d,DWORD PTR[44+rsp]
|
|
mov edi,r9d
|
|
xor r12d,edx
|
|
ror r14d,11
|
|
xor edi,r10d
|
|
add r8d,r12d
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,r9d
|
|
add r8d,r13d
|
|
xor r15d,r10d
|
|
ror r14d,2
|
|
add eax,r8d
|
|
add r8d,r15d
|
|
mov r13d,eax
|
|
add r14d,r8d
|
|
ror r13d,14
|
|
mov r8d,r14d
|
|
mov r12d,ebx
|
|
ror r14d,9
|
|
xor r13d,eax
|
|
xor r12d,ecx
|
|
ror r13d,5
|
|
xor r14d,r8d
|
|
and r12d,eax
|
|
xor r13d,eax
|
|
add edx,DWORD PTR[48+rsp]
|
|
mov r15d,r8d
|
|
xor r12d,ecx
|
|
ror r14d,11
|
|
xor r15d,r9d
|
|
add edx,r12d
|
|
ror r13d,6
|
|
and edi,r15d
|
|
xor r14d,r8d
|
|
add edx,r13d
|
|
xor edi,r9d
|
|
ror r14d,2
|
|
add r11d,edx
|
|
add edx,edi
|
|
mov r13d,r11d
|
|
add r14d,edx
|
|
ror r13d,14
|
|
mov edx,r14d
|
|
mov r12d,eax
|
|
ror r14d,9
|
|
xor r13d,r11d
|
|
xor r12d,ebx
|
|
ror r13d,5
|
|
xor r14d,edx
|
|
and r12d,r11d
|
|
xor r13d,r11d
|
|
add ecx,DWORD PTR[52+rsp]
|
|
mov edi,edx
|
|
xor r12d,ebx
|
|
ror r14d,11
|
|
xor edi,r8d
|
|
add ecx,r12d
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,edx
|
|
add ecx,r13d
|
|
xor r15d,r8d
|
|
ror r14d,2
|
|
add r10d,ecx
|
|
add ecx,r15d
|
|
mov r13d,r10d
|
|
add r14d,ecx
|
|
ror r13d,14
|
|
mov ecx,r14d
|
|
mov r12d,r11d
|
|
ror r14d,9
|
|
xor r13d,r10d
|
|
xor r12d,eax
|
|
ror r13d,5
|
|
xor r14d,ecx
|
|
and r12d,r10d
|
|
xor r13d,r10d
|
|
add ebx,DWORD PTR[56+rsp]
|
|
mov r15d,ecx
|
|
xor r12d,eax
|
|
ror r14d,11
|
|
xor r15d,edx
|
|
add ebx,r12d
|
|
ror r13d,6
|
|
and edi,r15d
|
|
xor r14d,ecx
|
|
add ebx,r13d
|
|
xor edi,edx
|
|
ror r14d,2
|
|
add r9d,ebx
|
|
add ebx,edi
|
|
mov r13d,r9d
|
|
add r14d,ebx
|
|
ror r13d,14
|
|
mov ebx,r14d
|
|
mov r12d,r10d
|
|
ror r14d,9
|
|
xor r13d,r9d
|
|
xor r12d,r11d
|
|
ror r13d,5
|
|
xor r14d,ebx
|
|
and r12d,r9d
|
|
xor r13d,r9d
|
|
add eax,DWORD PTR[60+rsp]
|
|
mov edi,ebx
|
|
xor r12d,r11d
|
|
ror r14d,11
|
|
xor edi,ecx
|
|
add eax,r12d
|
|
ror r13d,6
|
|
and r15d,edi
|
|
xor r14d,ebx
|
|
add eax,r13d
|
|
xor r15d,ecx
|
|
ror r14d,2
|
|
add r8d,eax
|
|
add eax,r15d
|
|
mov r13d,r8d
|
|
add r14d,eax
|
|
mov rdi,QWORD PTR[((-64))+rbp]
|
|
mov eax,r14d
|
|
mov rsi,QWORD PTR[((-56))+rbp]
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
endif
|
|
add eax,DWORD PTR[rdi]
|
|
add ebx,DWORD PTR[4+rdi]
|
|
add ecx,DWORD PTR[8+rdi]
|
|
add edx,DWORD PTR[12+rdi]
|
|
add r8d,DWORD PTR[16+rdi]
|
|
add r9d,DWORD PTR[20+rdi]
|
|
add r10d,DWORD PTR[24+rdi]
|
|
add r11d,DWORD PTR[28+rdi]
|
|
|
|
lea rsi,QWORD PTR[64+rsi]
|
|
cmp rsi,QWORD PTR[((-48))+rbp]
|
|
|
|
mov DWORD PTR[rdi],eax
|
|
mov DWORD PTR[4+rdi],ebx
|
|
mov DWORD PTR[8+rdi],ecx
|
|
mov DWORD PTR[12+rdi],edx
|
|
mov DWORD PTR[16+rdi],r8d
|
|
mov DWORD PTR[20+rdi],r9d
|
|
mov DWORD PTR[24+rdi],r10d
|
|
mov DWORD PTR[28+rdi],r11d
|
|
jb $L$loop_ssse3
|
|
|
|
xorps xmm0,xmm0
|
|
movaps XMMWORD PTR[rsp],xmm0
|
|
movaps XMMWORD PTR[16+rsp],xmm0
|
|
movaps XMMWORD PTR[32+rsp],xmm0
|
|
movaps XMMWORD PTR[48+rsp],xmm0
|
|
movaps xmm6,XMMWORD PTR[((-128))+rbp]
|
|
movaps xmm7,XMMWORD PTR[((-112))+rbp]
|
|
movaps xmm8,XMMWORD PTR[((-96))+rbp]
|
|
movaps xmm9,XMMWORD PTR[((-80))+rbp]
|
|
mov r15,QWORD PTR[((-40))+rbp]
|
|
mov r14,QWORD PTR[((-32))+rbp]
|
|
mov r13,QWORD PTR[((-24))+rbp]
|
|
mov r12,QWORD PTR[((-16))+rbp]
|
|
mov rbx,QWORD PTR[((-8))+rbp]
|
|
mov rsp,rbp
|
|
|
|
pop rbp
|
|
|
|
$L$SEH_epilogue_blst_sha256_block_data_order::
|
|
mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
|
|
mov rsi,QWORD PTR[16+rsp]
|
|
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
pop rdx
|
|
lfence
|
|
jmp rdx
|
|
ud2
|
|
else
|
|
DB 0F3h,0C3h
|
|
endif
|
|
|
|
$L$SEH_end_blst_sha256_block_data_order::
|
|
blst_sha256_block_data_order ENDP
|
|
PUBLIC blst_sha256_emit
|
|
|
|
|
|
ALIGN 16
|
|
blst_sha256_emit PROC PUBLIC
|
|
DB 243,15,30,250
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
endif
|
|
mov r8,QWORD PTR[rdx]
|
|
mov r9,QWORD PTR[8+rdx]
|
|
mov r10,QWORD PTR[16+rdx]
|
|
bswap r8
|
|
mov r11,QWORD PTR[24+rdx]
|
|
bswap r9
|
|
mov DWORD PTR[4+rcx],r8d
|
|
bswap r10
|
|
mov DWORD PTR[12+rcx],r9d
|
|
bswap r11
|
|
mov DWORD PTR[20+rcx],r10d
|
|
shr r8,32
|
|
mov DWORD PTR[28+rcx],r11d
|
|
shr r9,32
|
|
mov DWORD PTR[rcx],r8d
|
|
shr r10,32
|
|
mov DWORD PTR[8+rcx],r9d
|
|
shr r11,32
|
|
mov DWORD PTR[16+rcx],r10d
|
|
mov DWORD PTR[24+rcx],r11d
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
pop rdx
|
|
lfence
|
|
jmp rdx
|
|
ud2
|
|
else
|
|
DB 0F3h,0C3h
|
|
endif
|
|
blst_sha256_emit ENDP
|
|
|
|
PUBLIC blst_sha256_bcopy
|
|
|
|
|
|
ALIGN 16
|
|
blst_sha256_bcopy PROC PUBLIC
|
|
DB 243,15,30,250
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
endif
|
|
sub rcx,rdx
|
|
$L$oop_bcopy::
|
|
movzx eax,BYTE PTR[rdx]
|
|
lea rdx,QWORD PTR[1+rdx]
|
|
mov BYTE PTR[((-1))+rdx*1+rcx],al
|
|
dec r8
|
|
jnz $L$oop_bcopy
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
pop rdx
|
|
lfence
|
|
jmp rdx
|
|
ud2
|
|
else
|
|
DB 0F3h,0C3h
|
|
endif
|
|
blst_sha256_bcopy ENDP
|
|
|
|
PUBLIC blst_sha256_hcopy
|
|
|
|
|
|
ALIGN 16
|
|
blst_sha256_hcopy PROC PUBLIC
|
|
DB 243,15,30,250
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
lfence
|
|
endif
|
|
mov r8,QWORD PTR[rdx]
|
|
mov r9,QWORD PTR[8+rdx]
|
|
mov r10,QWORD PTR[16+rdx]
|
|
mov r11,QWORD PTR[24+rdx]
|
|
mov QWORD PTR[rcx],r8
|
|
mov QWORD PTR[8+rcx],r9
|
|
mov QWORD PTR[16+rcx],r10
|
|
mov QWORD PTR[24+rcx],r11
|
|
|
|
ifdef __SGX_LVI_HARDENING__
|
|
pop rdx
|
|
lfence
|
|
jmp rdx
|
|
ud2
|
|
else
|
|
DB 0F3h,0C3h
|
|
endif
|
|
blst_sha256_hcopy ENDP
|
|
.text$ ENDS
|
|
.pdata SEGMENT READONLY ALIGN(4)
|
|
ALIGN 4
|
|
DD imagerel $L$SEH_begin_blst_sha256_block_data_order_shaext
|
|
DD imagerel $L$SEH_body_blst_sha256_block_data_order_shaext
|
|
DD imagerel $L$SEH_info_blst_sha256_block_data_order_shaext_prologue
|
|
|
|
DD imagerel $L$SEH_body_blst_sha256_block_data_order_shaext
|
|
DD imagerel $L$SEH_epilogue_blst_sha256_block_data_order_shaext
|
|
DD imagerel $L$SEH_info_blst_sha256_block_data_order_shaext_body
|
|
|
|
DD imagerel $L$SEH_epilogue_blst_sha256_block_data_order_shaext
|
|
DD imagerel $L$SEH_end_blst_sha256_block_data_order_shaext
|
|
DD imagerel $L$SEH_info_blst_sha256_block_data_order_shaext_epilogue
|
|
|
|
DD imagerel $L$SEH_begin_blst_sha256_block_data_order
|
|
DD imagerel $L$SEH_body_blst_sha256_block_data_order
|
|
DD imagerel $L$SEH_info_blst_sha256_block_data_order_prologue
|
|
|
|
DD imagerel $L$SEH_body_blst_sha256_block_data_order
|
|
DD imagerel $L$SEH_epilogue_blst_sha256_block_data_order
|
|
DD imagerel $L$SEH_info_blst_sha256_block_data_order_body
|
|
|
|
DD imagerel $L$SEH_epilogue_blst_sha256_block_data_order
|
|
DD imagerel $L$SEH_end_blst_sha256_block_data_order
|
|
DD imagerel $L$SEH_info_blst_sha256_block_data_order_epilogue
|
|
|
|
.pdata ENDS
|
|
.xdata SEGMENT READONLY ALIGN(8)
|
|
ALIGN 8
|
|
$L$SEH_info_blst_sha256_block_data_order_shaext_prologue::
|
|
DB 1,4,6,005h
|
|
DB 4,074h,2,0
|
|
DB 4,064h,3,0
|
|
DB 4,053h
|
|
DB 1,050h
|
|
DD 0,0
|
|
$L$SEH_info_blst_sha256_block_data_order_shaext_body::
|
|
DB 1,0,17,85
|
|
DB 000h,068h,000h,000h
|
|
DB 000h,078h,001h,000h
|
|
DB 000h,088h,002h,000h
|
|
DB 000h,098h,003h,000h
|
|
DB 000h,0a8h,004h,000h
|
|
DB 000h,074h,00ch,000h
|
|
DB 000h,064h,00dh,000h
|
|
DB 000h,053h
|
|
DB 000h,092h
|
|
DB 000h,050h
|
|
DB 000h,000h,000h,000h,000h,000h
|
|
DB 000h,000h,000h,000h
|
|
$L$SEH_info_blst_sha256_block_data_order_shaext_epilogue::
|
|
DB 1,0,4,0
|
|
DB 000h,074h,001h,000h
|
|
DB 000h,064h,002h,000h
|
|
DB 000h,000h,000h,000h
|
|
|
|
$L$SEH_info_blst_sha256_block_data_order_prologue::
|
|
DB 1,4,6,005h
|
|
DB 4,074h,2,0
|
|
DB 4,064h,3,0
|
|
DB 4,053h
|
|
DB 1,050h
|
|
DD 0,0
|
|
$L$SEH_info_blst_sha256_block_data_order_body::
|
|
DB 1,0,25,133
|
|
DB 000h,068h,000h,000h
|
|
DB 000h,078h,001h,000h
|
|
DB 000h,088h,002h,000h
|
|
DB 000h,098h,003h,000h
|
|
DB 000h,0f4h,00bh,000h
|
|
DB 000h,0e4h,00ch,000h
|
|
DB 000h,0d4h,00dh,000h
|
|
DB 000h,0c4h,00eh,000h
|
|
DB 000h,034h,00fh,000h
|
|
DB 000h,074h,012h,000h
|
|
DB 000h,064h,013h,000h
|
|
DB 000h,053h
|
|
DB 000h,0f2h
|
|
DB 000h,050h
|
|
DB 000h,000h,000h,000h,000h,000h
|
|
DB 000h,000h,000h,000h
|
|
$L$SEH_info_blst_sha256_block_data_order_epilogue::
|
|
DB 1,0,4,0
|
|
DB 000h,074h,001h,000h
|
|
DB 000h,064h,002h,000h
|
|
DB 000h,000h,000h,000h
|
|
|
|
|
|
.xdata ENDS
|
|
END
|