summaryrefslogtreecommitdiff
path: root/deps/openssl/asm/x64-win32-masm/sha/sha512-x86_64.asm
diff options
context:
space:
mode:
Diffstat (limited to 'deps/openssl/asm/x64-win32-masm/sha/sha512-x86_64.asm')
-rw-r--r--deps/openssl/asm/x64-win32-masm/sha/sha512-x86_64.asm2085
1 files changed, 2085 insertions, 0 deletions
diff --git a/deps/openssl/asm/x64-win32-masm/sha/sha512-x86_64.asm b/deps/openssl/asm/x64-win32-masm/sha/sha512-x86_64.asm
new file mode 100644
index 0000000000..5ea4a6327a
--- /dev/null
+++ b/deps/openssl/asm/x64-win32-masm/sha/sha512-x86_64.asm
@@ -0,0 +1,2085 @@
+OPTION DOTNAME
+.text$ SEGMENT ALIGN(64) 'CODE'
+
+PUBLIC sha256_block_data_order
+
+ALIGN 16
+sha256_block_data_order PROC PUBLIC
+ mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
+ mov QWORD PTR[16+rsp],rsi
+ mov rax,rsp
+$L$SEH_begin_sha256_block_data_order::
+ mov rdi,rcx
+ mov rsi,rdx
+ mov rdx,r8
+ mov rcx,r9
+
+
+ push rbx
+ push rbp
+ push r12
+ push r13
+ push r14
+ push r15
+ mov r11,rsp
+ shl rdx,4
+ sub rsp,16*4+4*8
+ lea rdx,QWORD PTR[rdx*4+rsi]
+ and rsp,-64
+ mov QWORD PTR[((16*4+0*8))+rsp],rdi
+ mov QWORD PTR[((16*4+1*8))+rsp],rsi
+ mov QWORD PTR[((16*4+2*8))+rsp],rdx
+ mov QWORD PTR[((16*4+3*8))+rsp],r11
+$L$prologue::
+
+ lea rbp,QWORD PTR[K256]
+
+ mov eax,DWORD PTR[((4*0))+rdi]
+ mov ebx,DWORD PTR[((4*1))+rdi]
+ mov ecx,DWORD PTR[((4*2))+rdi]
+ mov edx,DWORD PTR[((4*3))+rdi]
+ mov r8d,DWORD PTR[((4*4))+rdi]
+ mov r9d,DWORD PTR[((4*5))+rdi]
+ mov r10d,DWORD PTR[((4*6))+rdi]
+ mov r11d,DWORD PTR[((4*7))+rdi]
+ jmp $L$loop
+
+ALIGN 16
+$L$loop::
+ xor rdi,rdi
+ mov r12d,DWORD PTR[((4*0))+rsi]
+ bswap r12d
+ mov r13d,r8d
+ mov r14d,r8d
+ mov r15d,r9d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r10d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r8d
+ mov DWORD PTR[rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r10d
+ add r12d,r11d
+
+ mov r11d,eax
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,eax
+ mov r14d,eax
+
+ ror r11d,2
+ ror r13d,13
+ mov r15d,eax
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r11d,r13d
+ ror r13d,9
+ or r14d,ecx
+
+ xor r11d,r13d
+ and r15d,ecx
+ add edx,r12d
+
+ and r14d,ebx
+ add r11d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r11d,r14d
+ mov r12d,DWORD PTR[((4*1))+rsi]
+ bswap r12d
+ mov r13d,edx
+ mov r14d,edx
+ mov r15d,r8d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r9d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,edx
+ mov DWORD PTR[4+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r9d
+ add r12d,r10d
+
+ mov r10d,r11d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r11d
+ mov r14d,r11d
+
+ ror r10d,2
+ ror r13d,13
+ mov r15d,r11d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r10d,r13d
+ ror r13d,9
+ or r14d,ebx
+
+ xor r10d,r13d
+ and r15d,ebx
+ add ecx,r12d
+
+ and r14d,eax
+ add r10d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r10d,r14d
+ mov r12d,DWORD PTR[((4*2))+rsi]
+ bswap r12d
+ mov r13d,ecx
+ mov r14d,ecx
+ mov r15d,edx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r8d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,ecx
+ mov DWORD PTR[8+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r8d
+ add r12d,r9d
+
+ mov r9d,r10d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r10d
+ mov r14d,r10d
+
+ ror r9d,2
+ ror r13d,13
+ mov r15d,r10d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r9d,r13d
+ ror r13d,9
+ or r14d,eax
+
+ xor r9d,r13d
+ and r15d,eax
+ add ebx,r12d
+
+ and r14d,r11d
+ add r9d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r9d,r14d
+ mov r12d,DWORD PTR[((4*3))+rsi]
+ bswap r12d
+ mov r13d,ebx
+ mov r14d,ebx
+ mov r15d,ecx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,edx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,ebx
+ mov DWORD PTR[12+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,edx
+ add r12d,r8d
+
+ mov r8d,r9d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r9d
+ mov r14d,r9d
+
+ ror r8d,2
+ ror r13d,13
+ mov r15d,r9d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r8d,r13d
+ ror r13d,9
+ or r14d,r11d
+
+ xor r8d,r13d
+ and r15d,r11d
+ add eax,r12d
+
+ and r14d,r10d
+ add r8d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r8d,r14d
+ mov r12d,DWORD PTR[((4*4))+rsi]
+ bswap r12d
+ mov r13d,eax
+ mov r14d,eax
+ mov r15d,ebx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,ecx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,eax
+ mov DWORD PTR[16+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,ecx
+ add r12d,edx
+
+ mov edx,r8d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r8d
+ mov r14d,r8d
+
+ ror edx,2
+ ror r13d,13
+ mov r15d,r8d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor edx,r13d
+ ror r13d,9
+ or r14d,r10d
+
+ xor edx,r13d
+ and r15d,r10d
+ add r11d,r12d
+
+ and r14d,r9d
+ add edx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add edx,r14d
+ mov r12d,DWORD PTR[((4*5))+rsi]
+ bswap r12d
+ mov r13d,r11d
+ mov r14d,r11d
+ mov r15d,eax
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,ebx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r11d
+ mov DWORD PTR[20+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,ebx
+ add r12d,ecx
+
+ mov ecx,edx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,edx
+ mov r14d,edx
+
+ ror ecx,2
+ ror r13d,13
+ mov r15d,edx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor ecx,r13d
+ ror r13d,9
+ or r14d,r9d
+
+ xor ecx,r13d
+ and r15d,r9d
+ add r10d,r12d
+
+ and r14d,r8d
+ add ecx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add ecx,r14d
+ mov r12d,DWORD PTR[((4*6))+rsi]
+ bswap r12d
+ mov r13d,r10d
+ mov r14d,r10d
+ mov r15d,r11d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,eax
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r10d
+ mov DWORD PTR[24+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,eax
+ add r12d,ebx
+
+ mov ebx,ecx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,ecx
+ mov r14d,ecx
+
+ ror ebx,2
+ ror r13d,13
+ mov r15d,ecx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor ebx,r13d
+ ror r13d,9
+ or r14d,r8d
+
+ xor ebx,r13d
+ and r15d,r8d
+ add r9d,r12d
+
+ and r14d,edx
+ add ebx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add ebx,r14d
+ mov r12d,DWORD PTR[((4*7))+rsi]
+ bswap r12d
+ mov r13d,r9d
+ mov r14d,r9d
+ mov r15d,r10d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r11d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r9d
+ mov DWORD PTR[28+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r11d
+ add r12d,eax
+
+ mov eax,ebx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,ebx
+ mov r14d,ebx
+
+ ror eax,2
+ ror r13d,13
+ mov r15d,ebx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor eax,r13d
+ ror r13d,9
+ or r14d,edx
+
+ xor eax,r13d
+ and r15d,edx
+ add r8d,r12d
+
+ and r14d,ecx
+ add eax,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add eax,r14d
+ mov r12d,DWORD PTR[((4*8))+rsi]
+ bswap r12d
+ mov r13d,r8d
+ mov r14d,r8d
+ mov r15d,r9d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r10d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r8d
+ mov DWORD PTR[32+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r10d
+ add r12d,r11d
+
+ mov r11d,eax
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,eax
+ mov r14d,eax
+
+ ror r11d,2
+ ror r13d,13
+ mov r15d,eax
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r11d,r13d
+ ror r13d,9
+ or r14d,ecx
+
+ xor r11d,r13d
+ and r15d,ecx
+ add edx,r12d
+
+ and r14d,ebx
+ add r11d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r11d,r14d
+ mov r12d,DWORD PTR[((4*9))+rsi]
+ bswap r12d
+ mov r13d,edx
+ mov r14d,edx
+ mov r15d,r8d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r9d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,edx
+ mov DWORD PTR[36+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r9d
+ add r12d,r10d
+
+ mov r10d,r11d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r11d
+ mov r14d,r11d
+
+ ror r10d,2
+ ror r13d,13
+ mov r15d,r11d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r10d,r13d
+ ror r13d,9
+ or r14d,ebx
+
+ xor r10d,r13d
+ and r15d,ebx
+ add ecx,r12d
+
+ and r14d,eax
+ add r10d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r10d,r14d
+ mov r12d,DWORD PTR[((4*10))+rsi]
+ bswap r12d
+ mov r13d,ecx
+ mov r14d,ecx
+ mov r15d,edx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r8d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,ecx
+ mov DWORD PTR[40+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r8d
+ add r12d,r9d
+
+ mov r9d,r10d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r10d
+ mov r14d,r10d
+
+ ror r9d,2
+ ror r13d,13
+ mov r15d,r10d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r9d,r13d
+ ror r13d,9
+ or r14d,eax
+
+ xor r9d,r13d
+ and r15d,eax
+ add ebx,r12d
+
+ and r14d,r11d
+ add r9d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r9d,r14d
+ mov r12d,DWORD PTR[((4*11))+rsi]
+ bswap r12d
+ mov r13d,ebx
+ mov r14d,ebx
+ mov r15d,ecx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,edx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,ebx
+ mov DWORD PTR[44+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,edx
+ add r12d,r8d
+
+ mov r8d,r9d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r9d
+ mov r14d,r9d
+
+ ror r8d,2
+ ror r13d,13
+ mov r15d,r9d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r8d,r13d
+ ror r13d,9
+ or r14d,r11d
+
+ xor r8d,r13d
+ and r15d,r11d
+ add eax,r12d
+
+ and r14d,r10d
+ add r8d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r8d,r14d
+ mov r12d,DWORD PTR[((4*12))+rsi]
+ bswap r12d
+ mov r13d,eax
+ mov r14d,eax
+ mov r15d,ebx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,ecx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,eax
+ mov DWORD PTR[48+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,ecx
+ add r12d,edx
+
+ mov edx,r8d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r8d
+ mov r14d,r8d
+
+ ror edx,2
+ ror r13d,13
+ mov r15d,r8d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor edx,r13d
+ ror r13d,9
+ or r14d,r10d
+
+ xor edx,r13d
+ and r15d,r10d
+ add r11d,r12d
+
+ and r14d,r9d
+ add edx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add edx,r14d
+ mov r12d,DWORD PTR[((4*13))+rsi]
+ bswap r12d
+ mov r13d,r11d
+ mov r14d,r11d
+ mov r15d,eax
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,ebx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r11d
+ mov DWORD PTR[52+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,ebx
+ add r12d,ecx
+
+ mov ecx,edx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,edx
+ mov r14d,edx
+
+ ror ecx,2
+ ror r13d,13
+ mov r15d,edx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor ecx,r13d
+ ror r13d,9
+ or r14d,r9d
+
+ xor ecx,r13d
+ and r15d,r9d
+ add r10d,r12d
+
+ and r14d,r8d
+ add ecx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add ecx,r14d
+ mov r12d,DWORD PTR[((4*14))+rsi]
+ bswap r12d
+ mov r13d,r10d
+ mov r14d,r10d
+ mov r15d,r11d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,eax
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r10d
+ mov DWORD PTR[56+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,eax
+ add r12d,ebx
+
+ mov ebx,ecx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,ecx
+ mov r14d,ecx
+
+ ror ebx,2
+ ror r13d,13
+ mov r15d,ecx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor ebx,r13d
+ ror r13d,9
+ or r14d,r8d
+
+ xor ebx,r13d
+ and r15d,r8d
+ add r9d,r12d
+
+ and r14d,edx
+ add ebx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add ebx,r14d
+ mov r12d,DWORD PTR[((4*15))+rsi]
+ bswap r12d
+ mov r13d,r9d
+ mov r14d,r9d
+ mov r15d,r10d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r11d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r9d
+ mov DWORD PTR[60+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r11d
+ add r12d,eax
+
+ mov eax,ebx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,ebx
+ mov r14d,ebx
+
+ ror eax,2
+ ror r13d,13
+ mov r15d,ebx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor eax,r13d
+ ror r13d,9
+ or r14d,edx
+
+ xor eax,r13d
+ and r15d,edx
+ add r8d,r12d
+
+ and r14d,ecx
+ add eax,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add eax,r14d
+ jmp $L$rounds_16_xx
+ALIGN 16
+$L$rounds_16_xx::
+ mov r13d,DWORD PTR[4+rsp]
+ mov r12d,DWORD PTR[56+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[36+rsp]
+
+ add r12d,DWORD PTR[rsp]
+ mov r13d,r8d
+ mov r14d,r8d
+ mov r15d,r9d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r10d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r8d
+ mov DWORD PTR[rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r10d
+ add r12d,r11d
+
+ mov r11d,eax
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,eax
+ mov r14d,eax
+
+ ror r11d,2
+ ror r13d,13
+ mov r15d,eax
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r11d,r13d
+ ror r13d,9
+ or r14d,ecx
+
+ xor r11d,r13d
+ and r15d,ecx
+ add edx,r12d
+
+ and r14d,ebx
+ add r11d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r11d,r14d
+ mov r13d,DWORD PTR[8+rsp]
+ mov r12d,DWORD PTR[60+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[40+rsp]
+
+ add r12d,DWORD PTR[4+rsp]
+ mov r13d,edx
+ mov r14d,edx
+ mov r15d,r8d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r9d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,edx
+ mov DWORD PTR[4+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r9d
+ add r12d,r10d
+
+ mov r10d,r11d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r11d
+ mov r14d,r11d
+
+ ror r10d,2
+ ror r13d,13
+ mov r15d,r11d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r10d,r13d
+ ror r13d,9
+ or r14d,ebx
+
+ xor r10d,r13d
+ and r15d,ebx
+ add ecx,r12d
+
+ and r14d,eax
+ add r10d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r10d,r14d
+ mov r13d,DWORD PTR[12+rsp]
+ mov r12d,DWORD PTR[rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[44+rsp]
+
+ add r12d,DWORD PTR[8+rsp]
+ mov r13d,ecx
+ mov r14d,ecx
+ mov r15d,edx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r8d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,ecx
+ mov DWORD PTR[8+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r8d
+ add r12d,r9d
+
+ mov r9d,r10d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r10d
+ mov r14d,r10d
+
+ ror r9d,2
+ ror r13d,13
+ mov r15d,r10d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r9d,r13d
+ ror r13d,9
+ or r14d,eax
+
+ xor r9d,r13d
+ and r15d,eax
+ add ebx,r12d
+
+ and r14d,r11d
+ add r9d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r9d,r14d
+ mov r13d,DWORD PTR[16+rsp]
+ mov r12d,DWORD PTR[4+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[48+rsp]
+
+ add r12d,DWORD PTR[12+rsp]
+ mov r13d,ebx
+ mov r14d,ebx
+ mov r15d,ecx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,edx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,ebx
+ mov DWORD PTR[12+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,edx
+ add r12d,r8d
+
+ mov r8d,r9d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r9d
+ mov r14d,r9d
+
+ ror r8d,2
+ ror r13d,13
+ mov r15d,r9d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r8d,r13d
+ ror r13d,9
+ or r14d,r11d
+
+ xor r8d,r13d
+ and r15d,r11d
+ add eax,r12d
+
+ and r14d,r10d
+ add r8d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r8d,r14d
+ mov r13d,DWORD PTR[20+rsp]
+ mov r12d,DWORD PTR[8+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[52+rsp]
+
+ add r12d,DWORD PTR[16+rsp]
+ mov r13d,eax
+ mov r14d,eax
+ mov r15d,ebx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,ecx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,eax
+ mov DWORD PTR[16+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,ecx
+ add r12d,edx
+
+ mov edx,r8d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r8d
+ mov r14d,r8d
+
+ ror edx,2
+ ror r13d,13
+ mov r15d,r8d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor edx,r13d
+ ror r13d,9
+ or r14d,r10d
+
+ xor edx,r13d
+ and r15d,r10d
+ add r11d,r12d
+
+ and r14d,r9d
+ add edx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add edx,r14d
+ mov r13d,DWORD PTR[24+rsp]
+ mov r12d,DWORD PTR[12+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[56+rsp]
+
+ add r12d,DWORD PTR[20+rsp]
+ mov r13d,r11d
+ mov r14d,r11d
+ mov r15d,eax
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,ebx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r11d
+ mov DWORD PTR[20+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,ebx
+ add r12d,ecx
+
+ mov ecx,edx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,edx
+ mov r14d,edx
+
+ ror ecx,2
+ ror r13d,13
+ mov r15d,edx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor ecx,r13d
+ ror r13d,9
+ or r14d,r9d
+
+ xor ecx,r13d
+ and r15d,r9d
+ add r10d,r12d
+
+ and r14d,r8d
+ add ecx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add ecx,r14d
+ mov r13d,DWORD PTR[28+rsp]
+ mov r12d,DWORD PTR[16+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[60+rsp]
+
+ add r12d,DWORD PTR[24+rsp]
+ mov r13d,r10d
+ mov r14d,r10d
+ mov r15d,r11d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,eax
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r10d
+ mov DWORD PTR[24+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,eax
+ add r12d,ebx
+
+ mov ebx,ecx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,ecx
+ mov r14d,ecx
+
+ ror ebx,2
+ ror r13d,13
+ mov r15d,ecx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor ebx,r13d
+ ror r13d,9
+ or r14d,r8d
+
+ xor ebx,r13d
+ and r15d,r8d
+ add r9d,r12d
+
+ and r14d,edx
+ add ebx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add ebx,r14d
+ mov r13d,DWORD PTR[32+rsp]
+ mov r12d,DWORD PTR[20+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[rsp]
+
+ add r12d,DWORD PTR[28+rsp]
+ mov r13d,r9d
+ mov r14d,r9d
+ mov r15d,r10d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r11d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r9d
+ mov DWORD PTR[28+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r11d
+ add r12d,eax
+
+ mov eax,ebx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,ebx
+ mov r14d,ebx
+
+ ror eax,2
+ ror r13d,13
+ mov r15d,ebx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor eax,r13d
+ ror r13d,9
+ or r14d,edx
+
+ xor eax,r13d
+ and r15d,edx
+ add r8d,r12d
+
+ and r14d,ecx
+ add eax,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add eax,r14d
+ mov r13d,DWORD PTR[36+rsp]
+ mov r12d,DWORD PTR[24+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[4+rsp]
+
+ add r12d,DWORD PTR[32+rsp]
+ mov r13d,r8d
+ mov r14d,r8d
+ mov r15d,r9d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r10d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r8d
+ mov DWORD PTR[32+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r10d
+ add r12d,r11d
+
+ mov r11d,eax
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,eax
+ mov r14d,eax
+
+ ror r11d,2
+ ror r13d,13
+ mov r15d,eax
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r11d,r13d
+ ror r13d,9
+ or r14d,ecx
+
+ xor r11d,r13d
+ and r15d,ecx
+ add edx,r12d
+
+ and r14d,ebx
+ add r11d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r11d,r14d
+ mov r13d,DWORD PTR[40+rsp]
+ mov r12d,DWORD PTR[28+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[8+rsp]
+
+ add r12d,DWORD PTR[36+rsp]
+ mov r13d,edx
+ mov r14d,edx
+ mov r15d,r8d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r9d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,edx
+ mov DWORD PTR[36+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r9d
+ add r12d,r10d
+
+ mov r10d,r11d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r11d
+ mov r14d,r11d
+
+ ror r10d,2
+ ror r13d,13
+ mov r15d,r11d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r10d,r13d
+ ror r13d,9
+ or r14d,ebx
+
+ xor r10d,r13d
+ and r15d,ebx
+ add ecx,r12d
+
+ and r14d,eax
+ add r10d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r10d,r14d
+ mov r13d,DWORD PTR[44+rsp]
+ mov r12d,DWORD PTR[32+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[12+rsp]
+
+ add r12d,DWORD PTR[40+rsp]
+ mov r13d,ecx
+ mov r14d,ecx
+ mov r15d,edx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r8d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,ecx
+ mov DWORD PTR[40+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r8d
+ add r12d,r9d
+
+ mov r9d,r10d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r10d
+ mov r14d,r10d
+
+ ror r9d,2
+ ror r13d,13
+ mov r15d,r10d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r9d,r13d
+ ror r13d,9
+ or r14d,eax
+
+ xor r9d,r13d
+ and r15d,eax
+ add ebx,r12d
+
+ and r14d,r11d
+ add r9d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r9d,r14d
+ mov r13d,DWORD PTR[48+rsp]
+ mov r12d,DWORD PTR[36+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[16+rsp]
+
+ add r12d,DWORD PTR[44+rsp]
+ mov r13d,ebx
+ mov r14d,ebx
+ mov r15d,ecx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,edx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,ebx
+ mov DWORD PTR[44+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,edx
+ add r12d,r8d
+
+ mov r8d,r9d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r9d
+ mov r14d,r9d
+
+ ror r8d,2
+ ror r13d,13
+ mov r15d,r9d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor r8d,r13d
+ ror r13d,9
+ or r14d,r11d
+
+ xor r8d,r13d
+ and r15d,r11d
+ add eax,r12d
+
+ and r14d,r10d
+ add r8d,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add r8d,r14d
+ mov r13d,DWORD PTR[52+rsp]
+ mov r12d,DWORD PTR[40+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[20+rsp]
+
+ add r12d,DWORD PTR[48+rsp]
+ mov r13d,eax
+ mov r14d,eax
+ mov r15d,ebx
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,ecx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,eax
+ mov DWORD PTR[48+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,ecx
+ add r12d,edx
+
+ mov edx,r8d
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,r8d
+ mov r14d,r8d
+
+ ror edx,2
+ ror r13d,13
+ mov r15d,r8d
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor edx,r13d
+ ror r13d,9
+ or r14d,r10d
+
+ xor edx,r13d
+ and r15d,r10d
+ add r11d,r12d
+
+ and r14d,r9d
+ add edx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add edx,r14d
+ mov r13d,DWORD PTR[56+rsp]
+ mov r12d,DWORD PTR[44+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[24+rsp]
+
+ add r12d,DWORD PTR[52+rsp]
+ mov r13d,r11d
+ mov r14d,r11d
+ mov r15d,eax
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,ebx
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r11d
+ mov DWORD PTR[52+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,ebx
+ add r12d,ecx
+
+ mov ecx,edx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,edx
+ mov r14d,edx
+
+ ror ecx,2
+ ror r13d,13
+ mov r15d,edx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor ecx,r13d
+ ror r13d,9
+ or r14d,r9d
+
+ xor ecx,r13d
+ and r15d,r9d
+ add r10d,r12d
+
+ and r14d,r8d
+ add ecx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add ecx,r14d
+ mov r13d,DWORD PTR[60+rsp]
+ mov r12d,DWORD PTR[48+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[28+rsp]
+
+ add r12d,DWORD PTR[56+rsp]
+ mov r13d,r10d
+ mov r14d,r10d
+ mov r15d,r11d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,eax
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r10d
+ mov DWORD PTR[56+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,eax
+ add r12d,ebx
+
+ mov ebx,ecx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,ecx
+ mov r14d,ecx
+
+ ror ebx,2
+ ror r13d,13
+ mov r15d,ecx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor ebx,r13d
+ ror r13d,9
+ or r14d,r8d
+
+ xor ebx,r13d
+ and r15d,r8d
+ add r9d,r12d
+
+ and r14d,edx
+ add ebx,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add ebx,r14d
+ mov r13d,DWORD PTR[rsp]
+ mov r12d,DWORD PTR[52+rsp]
+
+ mov r15d,r13d
+
+ shr r13d,3
+ ror r15d,7
+
+ xor r13d,r15d
+ ror r15d,11
+
+ xor r13d,r15d
+ mov r14d,r12d
+
+ shr r12d,10
+ ror r14d,17
+
+ xor r12d,r14d
+ ror r14d,2
+
+ xor r12d,r14d
+
+ add r12d,r13d
+
+ add r12d,DWORD PTR[32+rsp]
+
+ add r12d,DWORD PTR[60+rsp]
+ mov r13d,r9d
+ mov r14d,r9d
+ mov r15d,r10d
+
+ ror r13d,6
+ ror r14d,11
+ xor r15d,r11d
+
+ xor r13d,r14d
+ ror r14d,14
+ and r15d,r9d
+ mov DWORD PTR[60+rsp],r12d
+
+ xor r13d,r14d
+ xor r15d,r11d
+ add r12d,eax
+
+ mov eax,ebx
+ add r12d,r13d
+
+ add r12d,r15d
+ mov r13d,ebx
+ mov r14d,ebx
+
+ ror eax,2
+ ror r13d,13
+ mov r15d,ebx
+ add r12d,DWORD PTR[rdi*4+rbp]
+
+ xor eax,r13d
+ ror r13d,9
+ or r14d,edx
+
+ xor eax,r13d
+ and r15d,edx
+ add r8d,r12d
+
+ and r14d,ecx
+ add eax,r12d
+
+ or r14d,r15d
+ lea rdi,QWORD PTR[1+rdi]
+
+ add eax,r14d
+ cmp rdi,64
+ jb $L$rounds_16_xx
+
+ mov rdi,QWORD PTR[((16*4+0*8))+rsp]
+ lea rsi,QWORD PTR[((16*4))+rsi]
+
+ add eax,DWORD PTR[((4*0))+rdi]
+ add ebx,DWORD PTR[((4*1))+rdi]
+ add ecx,DWORD PTR[((4*2))+rdi]
+ add edx,DWORD PTR[((4*3))+rdi]
+ add r8d,DWORD PTR[((4*4))+rdi]
+ add r9d,DWORD PTR[((4*5))+rdi]
+ add r10d,DWORD PTR[((4*6))+rdi]
+ add r11d,DWORD PTR[((4*7))+rdi]
+
+ cmp rsi,QWORD PTR[((16*4+2*8))+rsp]
+
+ mov DWORD PTR[((4*0))+rdi],eax
+ mov DWORD PTR[((4*1))+rdi],ebx
+ mov DWORD PTR[((4*2))+rdi],ecx
+ mov DWORD PTR[((4*3))+rdi],edx
+ mov DWORD PTR[((4*4))+rdi],r8d
+ mov DWORD PTR[((4*5))+rdi],r9d
+ mov DWORD PTR[((4*6))+rdi],r10d
+ mov DWORD PTR[((4*7))+rdi],r11d
+ jb $L$loop
+
+ mov rsi,QWORD PTR[((16*4+3*8))+rsp]
+ mov r15,QWORD PTR[rsi]
+ mov r14,QWORD PTR[8+rsi]
+ mov r13,QWORD PTR[16+rsi]
+ mov r12,QWORD PTR[24+rsi]
+ mov rbp,QWORD PTR[32+rsi]
+ mov rbx,QWORD PTR[40+rsi]
+ lea rsp,QWORD PTR[48+rsi]
+$L$epilogue::
+ mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
+ mov rsi,QWORD PTR[16+rsp]
+ DB 0F3h,0C3h ;repret
+$L$SEH_end_sha256_block_data_order::
+sha256_block_data_order ENDP
+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
+EXTERN __imp_RtlVirtualUnwind:NEAR
+
+ALIGN 16
+se_handler PROC PRIVATE
+ push rsi
+ push rdi
+ push rbx
+ push rbp
+ push r12
+ push r13
+ push r14
+ push r15
+ pushfq
+ sub rsp,64
+
+ mov rax,QWORD PTR[120+r8]
+ mov rbx,QWORD PTR[248+r8]
+
+ lea r10,QWORD PTR[$L$prologue]
+ cmp rbx,r10
+ jb $L$in_prologue
+
+ mov rax,QWORD PTR[152+r8]
+
+ lea r10,QWORD PTR[$L$epilogue]
+ cmp rbx,r10
+ jae $L$in_prologue
+
+ mov rax,QWORD PTR[((16*4+3*8))+rax]
+ lea rax,QWORD PTR[48+rax]
+
+ mov rbx,QWORD PTR[((-8))+rax]
+ mov rbp,QWORD PTR[((-16))+rax]
+ mov r12,QWORD PTR[((-24))+rax]
+ mov r13,QWORD PTR[((-32))+rax]
+ mov r14,QWORD PTR[((-40))+rax]
+ mov r15,QWORD PTR[((-48))+rax]
+ mov QWORD PTR[144+r8],rbx
+ mov QWORD PTR[160+r8],rbp
+ mov QWORD PTR[216+r8],r12
+ mov QWORD PTR[224+r8],r13
+ mov QWORD PTR[232+r8],r14
+ mov QWORD PTR[240+r8],r15
+
+$L$in_prologue::
+ mov rdi,QWORD PTR[8+rax]
+ mov rsi,QWORD PTR[16+rax]
+ mov QWORD PTR[152+r8],rax
+ mov QWORD PTR[168+r8],rsi
+ mov QWORD PTR[176+r8],rdi
+
+ mov rdi,QWORD PTR[40+r9]
+ mov rsi,r8
+ mov ecx,154
+ DD 0a548f3fch
+
+
+ mov rsi,r9
+ xor rcx,rcx
+ mov rdx,QWORD PTR[8+rsi]
+ mov r8,QWORD PTR[rsi]
+ mov r9,QWORD PTR[16+rsi]
+ mov r10,QWORD PTR[40+rsi]
+ lea r11,QWORD PTR[56+rsi]
+ lea r12,QWORD PTR[24+rsi]
+ mov QWORD PTR[32+rsp],r10
+ mov QWORD PTR[40+rsp],r11
+ mov QWORD PTR[48+rsp],r12
+ mov QWORD PTR[56+rsp],rcx
+ call QWORD PTR[__imp_RtlVirtualUnwind]
+
+ mov eax,1
+ add rsp,64
+ popfq
+ pop r15
+ pop r14
+ pop r13
+ pop r12
+ pop rbp
+ pop rbx
+ pop rdi
+ pop rsi
+ DB 0F3h,0C3h ;repret
+se_handler ENDP
+
+.text$ ENDS
+.pdata SEGMENT READONLY ALIGN(4)
+ALIGN 4
+ DD imagerel $L$SEH_begin_sha256_block_data_order
+ DD imagerel $L$SEH_end_sha256_block_data_order
+ DD imagerel $L$SEH_info_sha256_block_data_order
+
+.pdata ENDS
+.xdata SEGMENT READONLY ALIGN(8)
+ALIGN 8
+$L$SEH_info_sha256_block_data_order::
+DB 9,0,0,0
+ DD imagerel se_handler
+
+.xdata ENDS
+END