audk/CryptoPkg/Library/OpensslLib/X64/crypto/sha/sha256-mb-x86_64.nasm

3462 lines
90 KiB
NASM

; WARNING: do not edit!
; Generated from openssl/crypto/sha/asm/sha256-mb-x86_64.pl
;
; Copyright 2013-2020 The OpenSSL Project Authors. All Rights Reserved.
;
; Licensed under the OpenSSL license (the "License"). You may not use
; this file except in compliance with the License. You can obtain a copy
; in the file LICENSE in the source distribution or at
; https://www.openssl.org/source/license.html
default rel
%define XMMWORD
%define YMMWORD
%define ZMMWORD
section .text code align=64
EXTERN OPENSSL_ia32cap_P
global sha256_multi_block
ALIGN 32
sha256_multi_block:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sha256_multi_block:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
mov rcx,QWORD[((OPENSSL_ia32cap_P+4))]
bt rcx,61
jc NEAR _shaext_shortcut
mov rax,rsp
push rbx
push rbp
lea rsp,[((-168))+rsp]
movaps XMMWORD[rsp],xmm6
movaps XMMWORD[16+rsp],xmm7
movaps XMMWORD[32+rsp],xmm8
movaps XMMWORD[48+rsp],xmm9
movaps XMMWORD[(-120)+rax],xmm10
movaps XMMWORD[(-104)+rax],xmm11
movaps XMMWORD[(-88)+rax],xmm12
movaps XMMWORD[(-72)+rax],xmm13
movaps XMMWORD[(-56)+rax],xmm14
movaps XMMWORD[(-40)+rax],xmm15
sub rsp,288
and rsp,-256
mov QWORD[272+rsp],rax
$L$body:
lea rbp,[((K256+128))]
lea rbx,[256+rsp]
lea rdi,[128+rdi]
$L$oop_grande:
mov DWORD[280+rsp],edx
xor edx,edx
mov r8,QWORD[rsi]
mov ecx,DWORD[8+rsi]
cmp ecx,edx
cmovg edx,ecx
test ecx,ecx
mov DWORD[rbx],ecx
cmovle r8,rbp
mov r9,QWORD[16+rsi]
mov ecx,DWORD[24+rsi]
cmp ecx,edx
cmovg edx,ecx
test ecx,ecx
mov DWORD[4+rbx],ecx
cmovle r9,rbp
mov r10,QWORD[32+rsi]
mov ecx,DWORD[40+rsi]
cmp ecx,edx
cmovg edx,ecx
test ecx,ecx
mov DWORD[8+rbx],ecx
cmovle r10,rbp
mov r11,QWORD[48+rsi]
mov ecx,DWORD[56+rsi]
cmp ecx,edx
cmovg edx,ecx
test ecx,ecx
mov DWORD[12+rbx],ecx
cmovle r11,rbp
test edx,edx
jz NEAR $L$done
movdqu xmm8,XMMWORD[((0-128))+rdi]
lea rax,[128+rsp]
movdqu xmm9,XMMWORD[((32-128))+rdi]
movdqu xmm10,XMMWORD[((64-128))+rdi]
movdqu xmm11,XMMWORD[((96-128))+rdi]
movdqu xmm12,XMMWORD[((128-128))+rdi]
movdqu xmm13,XMMWORD[((160-128))+rdi]
movdqu xmm14,XMMWORD[((192-128))+rdi]
movdqu xmm15,XMMWORD[((224-128))+rdi]
movdqu xmm6,XMMWORD[$L$pbswap]
jmp NEAR $L$oop
ALIGN 32
$L$oop:
movdqa xmm4,xmm10
pxor xmm4,xmm9
movd xmm5,DWORD[r8]
movd xmm0,DWORD[r9]
movd xmm1,DWORD[r10]
movd xmm2,DWORD[r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm12
DB 102,15,56,0,238
movdqa xmm2,xmm12
psrld xmm7,6
movdqa xmm1,xmm12
pslld xmm2,7
movdqa XMMWORD[(0-128)+rax],xmm5
paddd xmm5,xmm15
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-128))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm12
pxor xmm7,xmm2
movdqa xmm3,xmm12
pslld xmm2,26-21
pandn xmm0,xmm14
pand xmm3,xmm13
pxor xmm7,xmm1
movdqa xmm1,xmm8
pxor xmm7,xmm2
movdqa xmm2,xmm8
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm9
movdqa xmm7,xmm8
pslld xmm2,10
pxor xmm3,xmm8
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm15,xmm9
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm15,xmm4
paddd xmm11,xmm5
pxor xmm7,xmm2
paddd xmm15,xmm5
paddd xmm15,xmm7
movd xmm5,DWORD[4+r8]
movd xmm0,DWORD[4+r9]
movd xmm1,DWORD[4+r10]
movd xmm2,DWORD[4+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm11
movdqa xmm2,xmm11
DB 102,15,56,0,238
psrld xmm7,6
movdqa xmm1,xmm11
pslld xmm2,7
movdqa XMMWORD[(16-128)+rax],xmm5
paddd xmm5,xmm14
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-96))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm11
pxor xmm7,xmm2
movdqa xmm4,xmm11
pslld xmm2,26-21
pandn xmm0,xmm13
pand xmm4,xmm12
pxor xmm7,xmm1
movdqa xmm1,xmm15
pxor xmm7,xmm2
movdqa xmm2,xmm15
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm8
movdqa xmm7,xmm15
pslld xmm2,10
pxor xmm4,xmm15
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm14,xmm8
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm14,xmm3
paddd xmm10,xmm5
pxor xmm7,xmm2
paddd xmm14,xmm5
paddd xmm14,xmm7
movd xmm5,DWORD[8+r8]
movd xmm0,DWORD[8+r9]
movd xmm1,DWORD[8+r10]
movd xmm2,DWORD[8+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm10
DB 102,15,56,0,238
movdqa xmm2,xmm10
psrld xmm7,6
movdqa xmm1,xmm10
pslld xmm2,7
movdqa XMMWORD[(32-128)+rax],xmm5
paddd xmm5,xmm13
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-64))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm10
pxor xmm7,xmm2
movdqa xmm3,xmm10
pslld xmm2,26-21
pandn xmm0,xmm12
pand xmm3,xmm11
pxor xmm7,xmm1
movdqa xmm1,xmm14
pxor xmm7,xmm2
movdqa xmm2,xmm14
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm15
movdqa xmm7,xmm14
pslld xmm2,10
pxor xmm3,xmm14
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm13,xmm15
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm13,xmm4
paddd xmm9,xmm5
pxor xmm7,xmm2
paddd xmm13,xmm5
paddd xmm13,xmm7
movd xmm5,DWORD[12+r8]
movd xmm0,DWORD[12+r9]
movd xmm1,DWORD[12+r10]
movd xmm2,DWORD[12+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm9
movdqa xmm2,xmm9
DB 102,15,56,0,238
psrld xmm7,6
movdqa xmm1,xmm9
pslld xmm2,7
movdqa XMMWORD[(48-128)+rax],xmm5
paddd xmm5,xmm12
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-32))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm9
pxor xmm7,xmm2
movdqa xmm4,xmm9
pslld xmm2,26-21
pandn xmm0,xmm11
pand xmm4,xmm10
pxor xmm7,xmm1
movdqa xmm1,xmm13
pxor xmm7,xmm2
movdqa xmm2,xmm13
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm14
movdqa xmm7,xmm13
pslld xmm2,10
pxor xmm4,xmm13
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm12,xmm14
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm12,xmm3
paddd xmm8,xmm5
pxor xmm7,xmm2
paddd xmm12,xmm5
paddd xmm12,xmm7
movd xmm5,DWORD[16+r8]
movd xmm0,DWORD[16+r9]
movd xmm1,DWORD[16+r10]
movd xmm2,DWORD[16+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm8
DB 102,15,56,0,238
movdqa xmm2,xmm8
psrld xmm7,6
movdqa xmm1,xmm8
pslld xmm2,7
movdqa XMMWORD[(64-128)+rax],xmm5
paddd xmm5,xmm11
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm8
pxor xmm7,xmm2
movdqa xmm3,xmm8
pslld xmm2,26-21
pandn xmm0,xmm10
pand xmm3,xmm9
pxor xmm7,xmm1
movdqa xmm1,xmm12
pxor xmm7,xmm2
movdqa xmm2,xmm12
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm13
movdqa xmm7,xmm12
pslld xmm2,10
pxor xmm3,xmm12
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm11,xmm13
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm11,xmm4
paddd xmm15,xmm5
pxor xmm7,xmm2
paddd xmm11,xmm5
paddd xmm11,xmm7
movd xmm5,DWORD[20+r8]
movd xmm0,DWORD[20+r9]
movd xmm1,DWORD[20+r10]
movd xmm2,DWORD[20+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm15
movdqa xmm2,xmm15
DB 102,15,56,0,238
psrld xmm7,6
movdqa xmm1,xmm15
pslld xmm2,7
movdqa XMMWORD[(80-128)+rax],xmm5
paddd xmm5,xmm10
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[32+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm15
pxor xmm7,xmm2
movdqa xmm4,xmm15
pslld xmm2,26-21
pandn xmm0,xmm9
pand xmm4,xmm8
pxor xmm7,xmm1
movdqa xmm1,xmm11
pxor xmm7,xmm2
movdqa xmm2,xmm11
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm12
movdqa xmm7,xmm11
pslld xmm2,10
pxor xmm4,xmm11
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm10,xmm12
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm10,xmm3
paddd xmm14,xmm5
pxor xmm7,xmm2
paddd xmm10,xmm5
paddd xmm10,xmm7
movd xmm5,DWORD[24+r8]
movd xmm0,DWORD[24+r9]
movd xmm1,DWORD[24+r10]
movd xmm2,DWORD[24+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm14
DB 102,15,56,0,238
movdqa xmm2,xmm14
psrld xmm7,6
movdqa xmm1,xmm14
pslld xmm2,7
movdqa XMMWORD[(96-128)+rax],xmm5
paddd xmm5,xmm9
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[64+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm14
pxor xmm7,xmm2
movdqa xmm3,xmm14
pslld xmm2,26-21
pandn xmm0,xmm8
pand xmm3,xmm15
pxor xmm7,xmm1
movdqa xmm1,xmm10
pxor xmm7,xmm2
movdqa xmm2,xmm10
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm11
movdqa xmm7,xmm10
pslld xmm2,10
pxor xmm3,xmm10
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm9,xmm11
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm9,xmm4
paddd xmm13,xmm5
pxor xmm7,xmm2
paddd xmm9,xmm5
paddd xmm9,xmm7
movd xmm5,DWORD[28+r8]
movd xmm0,DWORD[28+r9]
movd xmm1,DWORD[28+r10]
movd xmm2,DWORD[28+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm13
movdqa xmm2,xmm13
DB 102,15,56,0,238
psrld xmm7,6
movdqa xmm1,xmm13
pslld xmm2,7
movdqa XMMWORD[(112-128)+rax],xmm5
paddd xmm5,xmm8
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[96+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm13
pxor xmm7,xmm2
movdqa xmm4,xmm13
pslld xmm2,26-21
pandn xmm0,xmm15
pand xmm4,xmm14
pxor xmm7,xmm1
movdqa xmm1,xmm9
pxor xmm7,xmm2
movdqa xmm2,xmm9
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm10
movdqa xmm7,xmm9
pslld xmm2,10
pxor xmm4,xmm9
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm8,xmm10
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm8,xmm3
paddd xmm12,xmm5
pxor xmm7,xmm2
paddd xmm8,xmm5
paddd xmm8,xmm7
lea rbp,[256+rbp]
movd xmm5,DWORD[32+r8]
movd xmm0,DWORD[32+r9]
movd xmm1,DWORD[32+r10]
movd xmm2,DWORD[32+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm12
DB 102,15,56,0,238
movdqa xmm2,xmm12
psrld xmm7,6
movdqa xmm1,xmm12
pslld xmm2,7
movdqa XMMWORD[(128-128)+rax],xmm5
paddd xmm5,xmm15
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-128))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm12
pxor xmm7,xmm2
movdqa xmm3,xmm12
pslld xmm2,26-21
pandn xmm0,xmm14
pand xmm3,xmm13
pxor xmm7,xmm1
movdqa xmm1,xmm8
pxor xmm7,xmm2
movdqa xmm2,xmm8
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm9
movdqa xmm7,xmm8
pslld xmm2,10
pxor xmm3,xmm8
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm15,xmm9
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm15,xmm4
paddd xmm11,xmm5
pxor xmm7,xmm2
paddd xmm15,xmm5
paddd xmm15,xmm7
movd xmm5,DWORD[36+r8]
movd xmm0,DWORD[36+r9]
movd xmm1,DWORD[36+r10]
movd xmm2,DWORD[36+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm11
movdqa xmm2,xmm11
DB 102,15,56,0,238
psrld xmm7,6
movdqa xmm1,xmm11
pslld xmm2,7
movdqa XMMWORD[(144-128)+rax],xmm5
paddd xmm5,xmm14
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-96))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm11
pxor xmm7,xmm2
movdqa xmm4,xmm11
pslld xmm2,26-21
pandn xmm0,xmm13
pand xmm4,xmm12
pxor xmm7,xmm1
movdqa xmm1,xmm15
pxor xmm7,xmm2
movdqa xmm2,xmm15
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm8
movdqa xmm7,xmm15
pslld xmm2,10
pxor xmm4,xmm15
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm14,xmm8
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm14,xmm3
paddd xmm10,xmm5
pxor xmm7,xmm2
paddd xmm14,xmm5
paddd xmm14,xmm7
movd xmm5,DWORD[40+r8]
movd xmm0,DWORD[40+r9]
movd xmm1,DWORD[40+r10]
movd xmm2,DWORD[40+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm10
DB 102,15,56,0,238
movdqa xmm2,xmm10
psrld xmm7,6
movdqa xmm1,xmm10
pslld xmm2,7
movdqa XMMWORD[(160-128)+rax],xmm5
paddd xmm5,xmm13
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-64))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm10
pxor xmm7,xmm2
movdqa xmm3,xmm10
pslld xmm2,26-21
pandn xmm0,xmm12
pand xmm3,xmm11
pxor xmm7,xmm1
movdqa xmm1,xmm14
pxor xmm7,xmm2
movdqa xmm2,xmm14
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm15
movdqa xmm7,xmm14
pslld xmm2,10
pxor xmm3,xmm14
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm13,xmm15
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm13,xmm4
paddd xmm9,xmm5
pxor xmm7,xmm2
paddd xmm13,xmm5
paddd xmm13,xmm7
movd xmm5,DWORD[44+r8]
movd xmm0,DWORD[44+r9]
movd xmm1,DWORD[44+r10]
movd xmm2,DWORD[44+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm9
movdqa xmm2,xmm9
DB 102,15,56,0,238
psrld xmm7,6
movdqa xmm1,xmm9
pslld xmm2,7
movdqa XMMWORD[(176-128)+rax],xmm5
paddd xmm5,xmm12
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-32))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm9
pxor xmm7,xmm2
movdqa xmm4,xmm9
pslld xmm2,26-21
pandn xmm0,xmm11
pand xmm4,xmm10
pxor xmm7,xmm1
movdqa xmm1,xmm13
pxor xmm7,xmm2
movdqa xmm2,xmm13
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm14
movdqa xmm7,xmm13
pslld xmm2,10
pxor xmm4,xmm13
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm12,xmm14
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm12,xmm3
paddd xmm8,xmm5
pxor xmm7,xmm2
paddd xmm12,xmm5
paddd xmm12,xmm7
movd xmm5,DWORD[48+r8]
movd xmm0,DWORD[48+r9]
movd xmm1,DWORD[48+r10]
movd xmm2,DWORD[48+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm8
DB 102,15,56,0,238
movdqa xmm2,xmm8
psrld xmm7,6
movdqa xmm1,xmm8
pslld xmm2,7
movdqa XMMWORD[(192-128)+rax],xmm5
paddd xmm5,xmm11
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm8
pxor xmm7,xmm2
movdqa xmm3,xmm8
pslld xmm2,26-21
pandn xmm0,xmm10
pand xmm3,xmm9
pxor xmm7,xmm1
movdqa xmm1,xmm12
pxor xmm7,xmm2
movdqa xmm2,xmm12
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm13
movdqa xmm7,xmm12
pslld xmm2,10
pxor xmm3,xmm12
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm11,xmm13
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm11,xmm4
paddd xmm15,xmm5
pxor xmm7,xmm2
paddd xmm11,xmm5
paddd xmm11,xmm7
movd xmm5,DWORD[52+r8]
movd xmm0,DWORD[52+r9]
movd xmm1,DWORD[52+r10]
movd xmm2,DWORD[52+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm15
movdqa xmm2,xmm15
DB 102,15,56,0,238
psrld xmm7,6
movdqa xmm1,xmm15
pslld xmm2,7
movdqa XMMWORD[(208-128)+rax],xmm5
paddd xmm5,xmm10
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[32+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm15
pxor xmm7,xmm2
movdqa xmm4,xmm15
pslld xmm2,26-21
pandn xmm0,xmm9
pand xmm4,xmm8
pxor xmm7,xmm1
movdqa xmm1,xmm11
pxor xmm7,xmm2
movdqa xmm2,xmm11
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm12
movdqa xmm7,xmm11
pslld xmm2,10
pxor xmm4,xmm11
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm10,xmm12
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm10,xmm3
paddd xmm14,xmm5
pxor xmm7,xmm2
paddd xmm10,xmm5
paddd xmm10,xmm7
movd xmm5,DWORD[56+r8]
movd xmm0,DWORD[56+r9]
movd xmm1,DWORD[56+r10]
movd xmm2,DWORD[56+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm14
DB 102,15,56,0,238
movdqa xmm2,xmm14
psrld xmm7,6
movdqa xmm1,xmm14
pslld xmm2,7
movdqa XMMWORD[(224-128)+rax],xmm5
paddd xmm5,xmm9
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[64+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm14
pxor xmm7,xmm2
movdqa xmm3,xmm14
pslld xmm2,26-21
pandn xmm0,xmm8
pand xmm3,xmm15
pxor xmm7,xmm1
movdqa xmm1,xmm10
pxor xmm7,xmm2
movdqa xmm2,xmm10
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm11
movdqa xmm7,xmm10
pslld xmm2,10
pxor xmm3,xmm10
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm9,xmm11
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm9,xmm4
paddd xmm13,xmm5
pxor xmm7,xmm2
paddd xmm9,xmm5
paddd xmm9,xmm7
movd xmm5,DWORD[60+r8]
lea r8,[64+r8]
movd xmm0,DWORD[60+r9]
lea r9,[64+r9]
movd xmm1,DWORD[60+r10]
lea r10,[64+r10]
movd xmm2,DWORD[60+r11]
lea r11,[64+r11]
punpckldq xmm5,xmm1
punpckldq xmm0,xmm2
punpckldq xmm5,xmm0
movdqa xmm7,xmm13
movdqa xmm2,xmm13
DB 102,15,56,0,238
psrld xmm7,6
movdqa xmm1,xmm13
pslld xmm2,7
movdqa XMMWORD[(240-128)+rax],xmm5
paddd xmm5,xmm8
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[96+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm13
prefetcht0 [63+r8]
pxor xmm7,xmm2
movdqa xmm4,xmm13
pslld xmm2,26-21
pandn xmm0,xmm15
pand xmm4,xmm14
pxor xmm7,xmm1
prefetcht0 [63+r9]
movdqa xmm1,xmm9
pxor xmm7,xmm2
movdqa xmm2,xmm9
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm10
movdqa xmm7,xmm9
pslld xmm2,10
pxor xmm4,xmm9
prefetcht0 [63+r10]
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
prefetcht0 [63+r11]
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm8,xmm10
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm8,xmm3
paddd xmm12,xmm5
pxor xmm7,xmm2
paddd xmm8,xmm5
paddd xmm8,xmm7
lea rbp,[256+rbp]
movdqu xmm5,XMMWORD[((0-128))+rax]
mov ecx,3
jmp NEAR $L$oop_16_xx
ALIGN 32
$L$oop_16_xx:
movdqa xmm6,XMMWORD[((16-128))+rax]
paddd xmm5,XMMWORD[((144-128))+rax]
movdqa xmm7,xmm6
movdqa xmm1,xmm6
psrld xmm7,3
movdqa xmm2,xmm6
psrld xmm1,7
movdqa xmm0,XMMWORD[((224-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm3,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm3
psrld xmm3,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm5,xmm7
pxor xmm0,xmm3
psrld xmm3,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm3
pxor xmm0,xmm1
paddd xmm5,xmm0
movdqa xmm7,xmm12
movdqa xmm2,xmm12
psrld xmm7,6
movdqa xmm1,xmm12
pslld xmm2,7
movdqa XMMWORD[(0-128)+rax],xmm5
paddd xmm5,xmm15
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-128))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm12
pxor xmm7,xmm2
movdqa xmm3,xmm12
pslld xmm2,26-21
pandn xmm0,xmm14
pand xmm3,xmm13
pxor xmm7,xmm1
movdqa xmm1,xmm8
pxor xmm7,xmm2
movdqa xmm2,xmm8
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm9
movdqa xmm7,xmm8
pslld xmm2,10
pxor xmm3,xmm8
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm15,xmm9
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm15,xmm4
paddd xmm11,xmm5
pxor xmm7,xmm2
paddd xmm15,xmm5
paddd xmm15,xmm7
movdqa xmm5,XMMWORD[((32-128))+rax]
paddd xmm6,XMMWORD[((160-128))+rax]
movdqa xmm7,xmm5
movdqa xmm1,xmm5
psrld xmm7,3
movdqa xmm2,xmm5
psrld xmm1,7
movdqa xmm0,XMMWORD[((240-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm4,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm4
psrld xmm4,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm6,xmm7
pxor xmm0,xmm4
psrld xmm4,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm4
pxor xmm0,xmm1
paddd xmm6,xmm0
movdqa xmm7,xmm11
movdqa xmm2,xmm11
psrld xmm7,6
movdqa xmm1,xmm11
pslld xmm2,7
movdqa XMMWORD[(16-128)+rax],xmm6
paddd xmm6,xmm14
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm6,XMMWORD[((-96))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm11
pxor xmm7,xmm2
movdqa xmm4,xmm11
pslld xmm2,26-21
pandn xmm0,xmm13
pand xmm4,xmm12
pxor xmm7,xmm1
movdqa xmm1,xmm15
pxor xmm7,xmm2
movdqa xmm2,xmm15
psrld xmm1,2
paddd xmm6,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm8
movdqa xmm7,xmm15
pslld xmm2,10
pxor xmm4,xmm15
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm6,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm14,xmm8
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm14,xmm3
paddd xmm10,xmm6
pxor xmm7,xmm2
paddd xmm14,xmm6
paddd xmm14,xmm7
movdqa xmm6,XMMWORD[((48-128))+rax]
paddd xmm5,XMMWORD[((176-128))+rax]
movdqa xmm7,xmm6
movdqa xmm1,xmm6
psrld xmm7,3
movdqa xmm2,xmm6
psrld xmm1,7
movdqa xmm0,XMMWORD[((0-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm3,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm3
psrld xmm3,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm5,xmm7
pxor xmm0,xmm3
psrld xmm3,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm3
pxor xmm0,xmm1
paddd xmm5,xmm0
movdqa xmm7,xmm10
movdqa xmm2,xmm10
psrld xmm7,6
movdqa xmm1,xmm10
pslld xmm2,7
movdqa XMMWORD[(32-128)+rax],xmm5
paddd xmm5,xmm13
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-64))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm10
pxor xmm7,xmm2
movdqa xmm3,xmm10
pslld xmm2,26-21
pandn xmm0,xmm12
pand xmm3,xmm11
pxor xmm7,xmm1
movdqa xmm1,xmm14
pxor xmm7,xmm2
movdqa xmm2,xmm14
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm15
movdqa xmm7,xmm14
pslld xmm2,10
pxor xmm3,xmm14
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm13,xmm15
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm13,xmm4
paddd xmm9,xmm5
pxor xmm7,xmm2
paddd xmm13,xmm5
paddd xmm13,xmm7
movdqa xmm5,XMMWORD[((64-128))+rax]
paddd xmm6,XMMWORD[((192-128))+rax]
movdqa xmm7,xmm5
movdqa xmm1,xmm5
psrld xmm7,3
movdqa xmm2,xmm5
psrld xmm1,7
movdqa xmm0,XMMWORD[((16-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm4,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm4
psrld xmm4,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm6,xmm7
pxor xmm0,xmm4
psrld xmm4,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm4
pxor xmm0,xmm1
paddd xmm6,xmm0
movdqa xmm7,xmm9
movdqa xmm2,xmm9
psrld xmm7,6
movdqa xmm1,xmm9
pslld xmm2,7
movdqa XMMWORD[(48-128)+rax],xmm6
paddd xmm6,xmm12
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm6,XMMWORD[((-32))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm9
pxor xmm7,xmm2
movdqa xmm4,xmm9
pslld xmm2,26-21
pandn xmm0,xmm11
pand xmm4,xmm10
pxor xmm7,xmm1
movdqa xmm1,xmm13
pxor xmm7,xmm2
movdqa xmm2,xmm13
psrld xmm1,2
paddd xmm6,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm14
movdqa xmm7,xmm13
pslld xmm2,10
pxor xmm4,xmm13
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm6,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm12,xmm14
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm12,xmm3
paddd xmm8,xmm6
pxor xmm7,xmm2
paddd xmm12,xmm6
paddd xmm12,xmm7
movdqa xmm6,XMMWORD[((80-128))+rax]
paddd xmm5,XMMWORD[((208-128))+rax]
movdqa xmm7,xmm6
movdqa xmm1,xmm6
psrld xmm7,3
movdqa xmm2,xmm6
psrld xmm1,7
movdqa xmm0,XMMWORD[((32-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm3,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm3
psrld xmm3,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm5,xmm7
pxor xmm0,xmm3
psrld xmm3,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm3
pxor xmm0,xmm1
paddd xmm5,xmm0
movdqa xmm7,xmm8
movdqa xmm2,xmm8
psrld xmm7,6
movdqa xmm1,xmm8
pslld xmm2,7
movdqa XMMWORD[(64-128)+rax],xmm5
paddd xmm5,xmm11
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm8
pxor xmm7,xmm2
movdqa xmm3,xmm8
pslld xmm2,26-21
pandn xmm0,xmm10
pand xmm3,xmm9
pxor xmm7,xmm1
movdqa xmm1,xmm12
pxor xmm7,xmm2
movdqa xmm2,xmm12
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm13
movdqa xmm7,xmm12
pslld xmm2,10
pxor xmm3,xmm12
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm11,xmm13
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm11,xmm4
paddd xmm15,xmm5
pxor xmm7,xmm2
paddd xmm11,xmm5
paddd xmm11,xmm7
movdqa xmm5,XMMWORD[((96-128))+rax]
paddd xmm6,XMMWORD[((224-128))+rax]
movdqa xmm7,xmm5
movdqa xmm1,xmm5
psrld xmm7,3
movdqa xmm2,xmm5
psrld xmm1,7
movdqa xmm0,XMMWORD[((48-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm4,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm4
psrld xmm4,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm6,xmm7
pxor xmm0,xmm4
psrld xmm4,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm4
pxor xmm0,xmm1
paddd xmm6,xmm0
movdqa xmm7,xmm15
movdqa xmm2,xmm15
psrld xmm7,6
movdqa xmm1,xmm15
pslld xmm2,7
movdqa XMMWORD[(80-128)+rax],xmm6
paddd xmm6,xmm10
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm6,XMMWORD[32+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm15
pxor xmm7,xmm2
movdqa xmm4,xmm15
pslld xmm2,26-21
pandn xmm0,xmm9
pand xmm4,xmm8
pxor xmm7,xmm1
movdqa xmm1,xmm11
pxor xmm7,xmm2
movdqa xmm2,xmm11
psrld xmm1,2
paddd xmm6,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm12
movdqa xmm7,xmm11
pslld xmm2,10
pxor xmm4,xmm11
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm6,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm10,xmm12
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm10,xmm3
paddd xmm14,xmm6
pxor xmm7,xmm2
paddd xmm10,xmm6
paddd xmm10,xmm7
movdqa xmm6,XMMWORD[((112-128))+rax]
paddd xmm5,XMMWORD[((240-128))+rax]
movdqa xmm7,xmm6
movdqa xmm1,xmm6
psrld xmm7,3
movdqa xmm2,xmm6
psrld xmm1,7
movdqa xmm0,XMMWORD[((64-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm3,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm3
psrld xmm3,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm5,xmm7
pxor xmm0,xmm3
psrld xmm3,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm3
pxor xmm0,xmm1
paddd xmm5,xmm0
movdqa xmm7,xmm14
movdqa xmm2,xmm14
psrld xmm7,6
movdqa xmm1,xmm14
pslld xmm2,7
movdqa XMMWORD[(96-128)+rax],xmm5
paddd xmm5,xmm9
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[64+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm14
pxor xmm7,xmm2
movdqa xmm3,xmm14
pslld xmm2,26-21
pandn xmm0,xmm8
pand xmm3,xmm15
pxor xmm7,xmm1
movdqa xmm1,xmm10
pxor xmm7,xmm2
movdqa xmm2,xmm10
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm11
movdqa xmm7,xmm10
pslld xmm2,10
pxor xmm3,xmm10
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm9,xmm11
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm9,xmm4
paddd xmm13,xmm5
pxor xmm7,xmm2
paddd xmm9,xmm5
paddd xmm9,xmm7
movdqa xmm5,XMMWORD[((128-128))+rax]
paddd xmm6,XMMWORD[((0-128))+rax]
movdqa xmm7,xmm5
movdqa xmm1,xmm5
psrld xmm7,3
movdqa xmm2,xmm5
psrld xmm1,7
movdqa xmm0,XMMWORD[((80-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm4,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm4
psrld xmm4,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm6,xmm7
pxor xmm0,xmm4
psrld xmm4,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm4
pxor xmm0,xmm1
paddd xmm6,xmm0
movdqa xmm7,xmm13
movdqa xmm2,xmm13
psrld xmm7,6
movdqa xmm1,xmm13
pslld xmm2,7
movdqa XMMWORD[(112-128)+rax],xmm6
paddd xmm6,xmm8
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm6,XMMWORD[96+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm13
pxor xmm7,xmm2
movdqa xmm4,xmm13
pslld xmm2,26-21
pandn xmm0,xmm15
pand xmm4,xmm14
pxor xmm7,xmm1
movdqa xmm1,xmm9
pxor xmm7,xmm2
movdqa xmm2,xmm9
psrld xmm1,2
paddd xmm6,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm10
movdqa xmm7,xmm9
pslld xmm2,10
pxor xmm4,xmm9
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm6,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm8,xmm10
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm8,xmm3
paddd xmm12,xmm6
pxor xmm7,xmm2
paddd xmm8,xmm6
paddd xmm8,xmm7
lea rbp,[256+rbp]
movdqa xmm6,XMMWORD[((144-128))+rax]
paddd xmm5,XMMWORD[((16-128))+rax]
movdqa xmm7,xmm6
movdqa xmm1,xmm6
psrld xmm7,3
movdqa xmm2,xmm6
psrld xmm1,7
movdqa xmm0,XMMWORD[((96-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm3,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm3
psrld xmm3,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm5,xmm7
pxor xmm0,xmm3
psrld xmm3,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm3
pxor xmm0,xmm1
paddd xmm5,xmm0
movdqa xmm7,xmm12
movdqa xmm2,xmm12
psrld xmm7,6
movdqa xmm1,xmm12
pslld xmm2,7
movdqa XMMWORD[(128-128)+rax],xmm5
paddd xmm5,xmm15
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-128))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm12
pxor xmm7,xmm2
movdqa xmm3,xmm12
pslld xmm2,26-21
pandn xmm0,xmm14
pand xmm3,xmm13
pxor xmm7,xmm1
movdqa xmm1,xmm8
pxor xmm7,xmm2
movdqa xmm2,xmm8
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm9
movdqa xmm7,xmm8
pslld xmm2,10
pxor xmm3,xmm8
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm15,xmm9
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm15,xmm4
paddd xmm11,xmm5
pxor xmm7,xmm2
paddd xmm15,xmm5
paddd xmm15,xmm7
movdqa xmm5,XMMWORD[((160-128))+rax]
paddd xmm6,XMMWORD[((32-128))+rax]
movdqa xmm7,xmm5
movdqa xmm1,xmm5
psrld xmm7,3
movdqa xmm2,xmm5
psrld xmm1,7
movdqa xmm0,XMMWORD[((112-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm4,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm4
psrld xmm4,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm6,xmm7
pxor xmm0,xmm4
psrld xmm4,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm4
pxor xmm0,xmm1
paddd xmm6,xmm0
movdqa xmm7,xmm11
movdqa xmm2,xmm11
psrld xmm7,6
movdqa xmm1,xmm11
pslld xmm2,7
movdqa XMMWORD[(144-128)+rax],xmm6
paddd xmm6,xmm14
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm6,XMMWORD[((-96))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm11
pxor xmm7,xmm2
movdqa xmm4,xmm11
pslld xmm2,26-21
pandn xmm0,xmm13
pand xmm4,xmm12
pxor xmm7,xmm1
movdqa xmm1,xmm15
pxor xmm7,xmm2
movdqa xmm2,xmm15
psrld xmm1,2
paddd xmm6,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm8
movdqa xmm7,xmm15
pslld xmm2,10
pxor xmm4,xmm15
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm6,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm14,xmm8
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm14,xmm3
paddd xmm10,xmm6
pxor xmm7,xmm2
paddd xmm14,xmm6
paddd xmm14,xmm7
movdqa xmm6,XMMWORD[((176-128))+rax]
paddd xmm5,XMMWORD[((48-128))+rax]
movdqa xmm7,xmm6
movdqa xmm1,xmm6
psrld xmm7,3
movdqa xmm2,xmm6
psrld xmm1,7
movdqa xmm0,XMMWORD[((128-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm3,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm3
psrld xmm3,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm5,xmm7
pxor xmm0,xmm3
psrld xmm3,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm3
pxor xmm0,xmm1
paddd xmm5,xmm0
movdqa xmm7,xmm10
movdqa xmm2,xmm10
psrld xmm7,6
movdqa xmm1,xmm10
pslld xmm2,7
movdqa XMMWORD[(160-128)+rax],xmm5
paddd xmm5,xmm13
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[((-64))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm10
pxor xmm7,xmm2
movdqa xmm3,xmm10
pslld xmm2,26-21
pandn xmm0,xmm12
pand xmm3,xmm11
pxor xmm7,xmm1
movdqa xmm1,xmm14
pxor xmm7,xmm2
movdqa xmm2,xmm14
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm15
movdqa xmm7,xmm14
pslld xmm2,10
pxor xmm3,xmm14
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm13,xmm15
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm13,xmm4
paddd xmm9,xmm5
pxor xmm7,xmm2
paddd xmm13,xmm5
paddd xmm13,xmm7
movdqa xmm5,XMMWORD[((192-128))+rax]
paddd xmm6,XMMWORD[((64-128))+rax]
movdqa xmm7,xmm5
movdqa xmm1,xmm5
psrld xmm7,3
movdqa xmm2,xmm5
psrld xmm1,7
movdqa xmm0,XMMWORD[((144-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm4,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm4
psrld xmm4,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm6,xmm7
pxor xmm0,xmm4
psrld xmm4,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm4
pxor xmm0,xmm1
paddd xmm6,xmm0
movdqa xmm7,xmm9
movdqa xmm2,xmm9
psrld xmm7,6
movdqa xmm1,xmm9
pslld xmm2,7
movdqa XMMWORD[(176-128)+rax],xmm6
paddd xmm6,xmm12
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm6,XMMWORD[((-32))+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm9
pxor xmm7,xmm2
movdqa xmm4,xmm9
pslld xmm2,26-21
pandn xmm0,xmm11
pand xmm4,xmm10
pxor xmm7,xmm1
movdqa xmm1,xmm13
pxor xmm7,xmm2
movdqa xmm2,xmm13
psrld xmm1,2
paddd xmm6,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm14
movdqa xmm7,xmm13
pslld xmm2,10
pxor xmm4,xmm13
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm6,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm12,xmm14
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm12,xmm3
paddd xmm8,xmm6
pxor xmm7,xmm2
paddd xmm12,xmm6
paddd xmm12,xmm7
movdqa xmm6,XMMWORD[((208-128))+rax]
paddd xmm5,XMMWORD[((80-128))+rax]
movdqa xmm7,xmm6
movdqa xmm1,xmm6
psrld xmm7,3
movdqa xmm2,xmm6
psrld xmm1,7
movdqa xmm0,XMMWORD[((160-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm3,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm3
psrld xmm3,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm5,xmm7
pxor xmm0,xmm3
psrld xmm3,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm3
pxor xmm0,xmm1
paddd xmm5,xmm0
movdqa xmm7,xmm8
movdqa xmm2,xmm8
psrld xmm7,6
movdqa xmm1,xmm8
pslld xmm2,7
movdqa XMMWORD[(192-128)+rax],xmm5
paddd xmm5,xmm11
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm8
pxor xmm7,xmm2
movdqa xmm3,xmm8
pslld xmm2,26-21
pandn xmm0,xmm10
pand xmm3,xmm9
pxor xmm7,xmm1
movdqa xmm1,xmm12
pxor xmm7,xmm2
movdqa xmm2,xmm12
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm13
movdqa xmm7,xmm12
pslld xmm2,10
pxor xmm3,xmm12
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm11,xmm13
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm11,xmm4
paddd xmm15,xmm5
pxor xmm7,xmm2
paddd xmm11,xmm5
paddd xmm11,xmm7
movdqa xmm5,XMMWORD[((224-128))+rax]
paddd xmm6,XMMWORD[((96-128))+rax]
movdqa xmm7,xmm5
movdqa xmm1,xmm5
psrld xmm7,3
movdqa xmm2,xmm5
psrld xmm1,7
movdqa xmm0,XMMWORD[((176-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm4,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm4
psrld xmm4,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm6,xmm7
pxor xmm0,xmm4
psrld xmm4,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm4
pxor xmm0,xmm1
paddd xmm6,xmm0
movdqa xmm7,xmm15
movdqa xmm2,xmm15
psrld xmm7,6
movdqa xmm1,xmm15
pslld xmm2,7
movdqa XMMWORD[(208-128)+rax],xmm6
paddd xmm6,xmm10
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm6,XMMWORD[32+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm15
pxor xmm7,xmm2
movdqa xmm4,xmm15
pslld xmm2,26-21
pandn xmm0,xmm9
pand xmm4,xmm8
pxor xmm7,xmm1
movdqa xmm1,xmm11
pxor xmm7,xmm2
movdqa xmm2,xmm11
psrld xmm1,2
paddd xmm6,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm12
movdqa xmm7,xmm11
pslld xmm2,10
pxor xmm4,xmm11
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm6,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm10,xmm12
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm10,xmm3
paddd xmm14,xmm6
pxor xmm7,xmm2
paddd xmm10,xmm6
paddd xmm10,xmm7
movdqa xmm6,XMMWORD[((240-128))+rax]
paddd xmm5,XMMWORD[((112-128))+rax]
movdqa xmm7,xmm6
movdqa xmm1,xmm6
psrld xmm7,3
movdqa xmm2,xmm6
psrld xmm1,7
movdqa xmm0,XMMWORD[((192-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm3,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm3
psrld xmm3,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm5,xmm7
pxor xmm0,xmm3
psrld xmm3,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm3
pxor xmm0,xmm1
paddd xmm5,xmm0
movdqa xmm7,xmm14
movdqa xmm2,xmm14
psrld xmm7,6
movdqa xmm1,xmm14
pslld xmm2,7
movdqa XMMWORD[(224-128)+rax],xmm5
paddd xmm5,xmm9
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm5,XMMWORD[64+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm14
pxor xmm7,xmm2
movdqa xmm3,xmm14
pslld xmm2,26-21
pandn xmm0,xmm8
pand xmm3,xmm15
pxor xmm7,xmm1
movdqa xmm1,xmm10
pxor xmm7,xmm2
movdqa xmm2,xmm10
psrld xmm1,2
paddd xmm5,xmm7
pxor xmm0,xmm3
movdqa xmm3,xmm11
movdqa xmm7,xmm10
pslld xmm2,10
pxor xmm3,xmm10
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm5,xmm0
pslld xmm2,19-10
pand xmm4,xmm3
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm9,xmm11
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm9,xmm4
paddd xmm13,xmm5
pxor xmm7,xmm2
paddd xmm9,xmm5
paddd xmm9,xmm7
movdqa xmm5,XMMWORD[((0-128))+rax]
paddd xmm6,XMMWORD[((128-128))+rax]
movdqa xmm7,xmm5
movdqa xmm1,xmm5
psrld xmm7,3
movdqa xmm2,xmm5
psrld xmm1,7
movdqa xmm0,XMMWORD[((208-128))+rax]
pslld xmm2,14
pxor xmm7,xmm1
psrld xmm1,18-7
movdqa xmm4,xmm0
pxor xmm7,xmm2
pslld xmm2,25-14
pxor xmm7,xmm1
psrld xmm0,10
movdqa xmm1,xmm4
psrld xmm4,17
pxor xmm7,xmm2
pslld xmm1,13
paddd xmm6,xmm7
pxor xmm0,xmm4
psrld xmm4,19-17
pxor xmm0,xmm1
pslld xmm1,15-13
pxor xmm0,xmm4
pxor xmm0,xmm1
paddd xmm6,xmm0
movdqa xmm7,xmm13
movdqa xmm2,xmm13
psrld xmm7,6
movdqa xmm1,xmm13
pslld xmm2,7
movdqa XMMWORD[(240-128)+rax],xmm6
paddd xmm6,xmm8
psrld xmm1,11
pxor xmm7,xmm2
pslld xmm2,21-7
paddd xmm6,XMMWORD[96+rbp]
pxor xmm7,xmm1
psrld xmm1,25-11
movdqa xmm0,xmm13
pxor xmm7,xmm2
movdqa xmm4,xmm13
pslld xmm2,26-21
pandn xmm0,xmm15
pand xmm4,xmm14
pxor xmm7,xmm1
movdqa xmm1,xmm9
pxor xmm7,xmm2
movdqa xmm2,xmm9
psrld xmm1,2
paddd xmm6,xmm7
pxor xmm0,xmm4
movdqa xmm4,xmm10
movdqa xmm7,xmm9
pslld xmm2,10
pxor xmm4,xmm9
psrld xmm7,13
pxor xmm1,xmm2
paddd xmm6,xmm0
pslld xmm2,19-10
pand xmm3,xmm4
pxor xmm1,xmm7
psrld xmm7,22-13
pxor xmm1,xmm2
movdqa xmm8,xmm10
pslld xmm2,30-19
pxor xmm7,xmm1
pxor xmm8,xmm3
paddd xmm12,xmm6
pxor xmm7,xmm2
paddd xmm8,xmm6
paddd xmm8,xmm7
lea rbp,[256+rbp]
dec ecx
jnz NEAR $L$oop_16_xx
mov ecx,1
lea rbp,[((K256+128))]
movdqa xmm7,XMMWORD[rbx]
cmp ecx,DWORD[rbx]
pxor xmm0,xmm0
cmovge r8,rbp
cmp ecx,DWORD[4+rbx]
movdqa xmm6,xmm7
cmovge r9,rbp
cmp ecx,DWORD[8+rbx]
pcmpgtd xmm6,xmm0
cmovge r10,rbp
cmp ecx,DWORD[12+rbx]
paddd xmm7,xmm6
cmovge r11,rbp
movdqu xmm0,XMMWORD[((0-128))+rdi]
pand xmm8,xmm6
movdqu xmm1,XMMWORD[((32-128))+rdi]
pand xmm9,xmm6
movdqu xmm2,XMMWORD[((64-128))+rdi]
pand xmm10,xmm6
movdqu xmm5,XMMWORD[((96-128))+rdi]
pand xmm11,xmm6
paddd xmm8,xmm0
movdqu xmm0,XMMWORD[((128-128))+rdi]
pand xmm12,xmm6
paddd xmm9,xmm1
movdqu xmm1,XMMWORD[((160-128))+rdi]
pand xmm13,xmm6
paddd xmm10,xmm2
movdqu xmm2,XMMWORD[((192-128))+rdi]
pand xmm14,xmm6
paddd xmm11,xmm5
movdqu xmm5,XMMWORD[((224-128))+rdi]
pand xmm15,xmm6
paddd xmm12,xmm0
paddd xmm13,xmm1
movdqu XMMWORD[(0-128)+rdi],xmm8
paddd xmm14,xmm2
movdqu XMMWORD[(32-128)+rdi],xmm9
paddd xmm15,xmm5
movdqu XMMWORD[(64-128)+rdi],xmm10
movdqu XMMWORD[(96-128)+rdi],xmm11
movdqu XMMWORD[(128-128)+rdi],xmm12
movdqu XMMWORD[(160-128)+rdi],xmm13
movdqu XMMWORD[(192-128)+rdi],xmm14
movdqu XMMWORD[(224-128)+rdi],xmm15
movdqa XMMWORD[rbx],xmm7
movdqa xmm6,XMMWORD[$L$pbswap]
dec edx
jnz NEAR $L$oop
mov edx,DWORD[280+rsp]
lea rdi,[16+rdi]
lea rsi,[64+rsi]
dec edx
jnz NEAR $L$oop_grande
$L$done:
mov rax,QWORD[272+rsp]
movaps xmm6,XMMWORD[((-184))+rax]
movaps xmm7,XMMWORD[((-168))+rax]
movaps xmm8,XMMWORD[((-152))+rax]
movaps xmm9,XMMWORD[((-136))+rax]
movaps xmm10,XMMWORD[((-120))+rax]
movaps xmm11,XMMWORD[((-104))+rax]
movaps xmm12,XMMWORD[((-88))+rax]
movaps xmm13,XMMWORD[((-72))+rax]
movaps xmm14,XMMWORD[((-56))+rax]
movaps xmm15,XMMWORD[((-40))+rax]
mov rbp,QWORD[((-16))+rax]
mov rbx,QWORD[((-8))+rax]
lea rsp,[rax]
$L$epilogue:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_sha256_multi_block:
ALIGN 32
sha256_multi_block_shaext:
mov QWORD[8+rsp],rdi ;WIN64 prologue
mov QWORD[16+rsp],rsi
mov rax,rsp
$L$SEH_begin_sha256_multi_block_shaext:
mov rdi,rcx
mov rsi,rdx
mov rdx,r8
_shaext_shortcut:
mov rax,rsp
push rbx
push rbp
lea rsp,[((-168))+rsp]
movaps XMMWORD[rsp],xmm6
movaps XMMWORD[16+rsp],xmm7
movaps XMMWORD[32+rsp],xmm8
movaps XMMWORD[48+rsp],xmm9
movaps XMMWORD[(-120)+rax],xmm10
movaps XMMWORD[(-104)+rax],xmm11
movaps XMMWORD[(-88)+rax],xmm12
movaps XMMWORD[(-72)+rax],xmm13
movaps XMMWORD[(-56)+rax],xmm14
movaps XMMWORD[(-40)+rax],xmm15
sub rsp,288
shl edx,1
and rsp,-256
lea rdi,[128+rdi]
mov QWORD[272+rsp],rax
$L$body_shaext:
lea rbx,[256+rsp]
lea rbp,[((K256_shaext+128))]
$L$oop_grande_shaext:
mov DWORD[280+rsp],edx
xor edx,edx
mov r8,QWORD[rsi]
mov ecx,DWORD[8+rsi]
cmp ecx,edx
cmovg edx,ecx
test ecx,ecx
mov DWORD[rbx],ecx
cmovle r8,rsp
mov r9,QWORD[16+rsi]
mov ecx,DWORD[24+rsi]
cmp ecx,edx
cmovg edx,ecx
test ecx,ecx
mov DWORD[4+rbx],ecx
cmovle r9,rsp
test edx,edx
jz NEAR $L$done_shaext
movq xmm12,QWORD[((0-128))+rdi]
movq xmm4,QWORD[((32-128))+rdi]
movq xmm13,QWORD[((64-128))+rdi]
movq xmm5,QWORD[((96-128))+rdi]
movq xmm8,QWORD[((128-128))+rdi]
movq xmm9,QWORD[((160-128))+rdi]
movq xmm10,QWORD[((192-128))+rdi]
movq xmm11,QWORD[((224-128))+rdi]
punpckldq xmm12,xmm4
punpckldq xmm13,xmm5
punpckldq xmm8,xmm9
punpckldq xmm10,xmm11
movdqa xmm3,XMMWORD[((K256_shaext-16))]
movdqa xmm14,xmm12
movdqa xmm15,xmm13
punpcklqdq xmm12,xmm8
punpcklqdq xmm13,xmm10
punpckhqdq xmm14,xmm8
punpckhqdq xmm15,xmm10
pshufd xmm12,xmm12,27
pshufd xmm13,xmm13,27
pshufd xmm14,xmm14,27
pshufd xmm15,xmm15,27
jmp NEAR $L$oop_shaext
ALIGN 32
$L$oop_shaext:
movdqu xmm4,XMMWORD[r8]
movdqu xmm8,XMMWORD[r9]
movdqu xmm5,XMMWORD[16+r8]
movdqu xmm9,XMMWORD[16+r9]
movdqu xmm6,XMMWORD[32+r8]
DB 102,15,56,0,227
movdqu xmm10,XMMWORD[32+r9]
DB 102,68,15,56,0,195
movdqu xmm7,XMMWORD[48+r8]
lea r8,[64+r8]
movdqu xmm11,XMMWORD[48+r9]
lea r9,[64+r9]
movdqa xmm0,XMMWORD[((0-128))+rbp]
DB 102,15,56,0,235
paddd xmm0,xmm4
pxor xmm4,xmm12
movdqa xmm1,xmm0
movdqa xmm2,XMMWORD[((0-128))+rbp]
DB 102,68,15,56,0,203
paddd xmm2,xmm8
movdqa XMMWORD[80+rsp],xmm13
DB 69,15,56,203,236
pxor xmm8,xmm14
movdqa xmm0,xmm2
movdqa XMMWORD[112+rsp],xmm15
DB 69,15,56,203,254
pshufd xmm0,xmm1,0x0e
pxor xmm4,xmm12
movdqa XMMWORD[64+rsp],xmm12
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
pxor xmm8,xmm14
movdqa XMMWORD[96+rsp],xmm14
movdqa xmm1,XMMWORD[((16-128))+rbp]
paddd xmm1,xmm5
DB 102,15,56,0,243
DB 69,15,56,203,247
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((16-128))+rbp]
paddd xmm2,xmm9
DB 69,15,56,203,236
movdqa xmm0,xmm2
prefetcht0 [127+r8]
DB 102,15,56,0,251
DB 102,68,15,56,0,211
prefetcht0 [127+r9]
DB 69,15,56,203,254
pshufd xmm0,xmm1,0x0e
DB 102,68,15,56,0,219
DB 15,56,204,229
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((32-128))+rbp]
paddd xmm1,xmm6
DB 69,15,56,203,247
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((32-128))+rbp]
paddd xmm2,xmm10
DB 69,15,56,203,236
DB 69,15,56,204,193
movdqa xmm0,xmm2
movdqa xmm3,xmm7
DB 69,15,56,203,254
pshufd xmm0,xmm1,0x0e
DB 102,15,58,15,222,4
paddd xmm4,xmm3
movdqa xmm3,xmm11
DB 102,65,15,58,15,218,4
DB 15,56,204,238
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((48-128))+rbp]
paddd xmm1,xmm7
DB 69,15,56,203,247
DB 69,15,56,204,202
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((48-128))+rbp]
paddd xmm8,xmm3
paddd xmm2,xmm11
DB 15,56,205,231
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm4
DB 102,15,58,15,223,4
DB 69,15,56,203,254
DB 69,15,56,205,195
pshufd xmm0,xmm1,0x0e
paddd xmm5,xmm3
movdqa xmm3,xmm8
DB 102,65,15,58,15,219,4
DB 15,56,204,247
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((64-128))+rbp]
paddd xmm1,xmm4
DB 69,15,56,203,247
DB 69,15,56,204,211
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((64-128))+rbp]
paddd xmm9,xmm3
paddd xmm2,xmm8
DB 15,56,205,236
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm5
DB 102,15,58,15,220,4
DB 69,15,56,203,254
DB 69,15,56,205,200
pshufd xmm0,xmm1,0x0e
paddd xmm6,xmm3
movdqa xmm3,xmm9
DB 102,65,15,58,15,216,4
DB 15,56,204,252
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((80-128))+rbp]
paddd xmm1,xmm5
DB 69,15,56,203,247
DB 69,15,56,204,216
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((80-128))+rbp]
paddd xmm10,xmm3
paddd xmm2,xmm9
DB 15,56,205,245
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm6
DB 102,15,58,15,221,4
DB 69,15,56,203,254
DB 69,15,56,205,209
pshufd xmm0,xmm1,0x0e
paddd xmm7,xmm3
movdqa xmm3,xmm10
DB 102,65,15,58,15,217,4
DB 15,56,204,229
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((96-128))+rbp]
paddd xmm1,xmm6
DB 69,15,56,203,247
DB 69,15,56,204,193
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((96-128))+rbp]
paddd xmm11,xmm3
paddd xmm2,xmm10
DB 15,56,205,254
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm7
DB 102,15,58,15,222,4
DB 69,15,56,203,254
DB 69,15,56,205,218
pshufd xmm0,xmm1,0x0e
paddd xmm4,xmm3
movdqa xmm3,xmm11
DB 102,65,15,58,15,218,4
DB 15,56,204,238
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((112-128))+rbp]
paddd xmm1,xmm7
DB 69,15,56,203,247
DB 69,15,56,204,202
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((112-128))+rbp]
paddd xmm8,xmm3
paddd xmm2,xmm11
DB 15,56,205,231
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm4
DB 102,15,58,15,223,4
DB 69,15,56,203,254
DB 69,15,56,205,195
pshufd xmm0,xmm1,0x0e
paddd xmm5,xmm3
movdqa xmm3,xmm8
DB 102,65,15,58,15,219,4
DB 15,56,204,247
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((128-128))+rbp]
paddd xmm1,xmm4
DB 69,15,56,203,247
DB 69,15,56,204,211
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((128-128))+rbp]
paddd xmm9,xmm3
paddd xmm2,xmm8
DB 15,56,205,236
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm5
DB 102,15,58,15,220,4
DB 69,15,56,203,254
DB 69,15,56,205,200
pshufd xmm0,xmm1,0x0e
paddd xmm6,xmm3
movdqa xmm3,xmm9
DB 102,65,15,58,15,216,4
DB 15,56,204,252
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((144-128))+rbp]
paddd xmm1,xmm5
DB 69,15,56,203,247
DB 69,15,56,204,216
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((144-128))+rbp]
paddd xmm10,xmm3
paddd xmm2,xmm9
DB 15,56,205,245
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm6
DB 102,15,58,15,221,4
DB 69,15,56,203,254
DB 69,15,56,205,209
pshufd xmm0,xmm1,0x0e
paddd xmm7,xmm3
movdqa xmm3,xmm10
DB 102,65,15,58,15,217,4
DB 15,56,204,229
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((160-128))+rbp]
paddd xmm1,xmm6
DB 69,15,56,203,247
DB 69,15,56,204,193
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((160-128))+rbp]
paddd xmm11,xmm3
paddd xmm2,xmm10
DB 15,56,205,254
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm7
DB 102,15,58,15,222,4
DB 69,15,56,203,254
DB 69,15,56,205,218
pshufd xmm0,xmm1,0x0e
paddd xmm4,xmm3
movdqa xmm3,xmm11
DB 102,65,15,58,15,218,4
DB 15,56,204,238
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((176-128))+rbp]
paddd xmm1,xmm7
DB 69,15,56,203,247
DB 69,15,56,204,202
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((176-128))+rbp]
paddd xmm8,xmm3
paddd xmm2,xmm11
DB 15,56,205,231
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm4
DB 102,15,58,15,223,4
DB 69,15,56,203,254
DB 69,15,56,205,195
pshufd xmm0,xmm1,0x0e
paddd xmm5,xmm3
movdqa xmm3,xmm8
DB 102,65,15,58,15,219,4
DB 15,56,204,247
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((192-128))+rbp]
paddd xmm1,xmm4
DB 69,15,56,203,247
DB 69,15,56,204,211
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((192-128))+rbp]
paddd xmm9,xmm3
paddd xmm2,xmm8
DB 15,56,205,236
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm5
DB 102,15,58,15,220,4
DB 69,15,56,203,254
DB 69,15,56,205,200
pshufd xmm0,xmm1,0x0e
paddd xmm6,xmm3
movdqa xmm3,xmm9
DB 102,65,15,58,15,216,4
DB 15,56,204,252
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((208-128))+rbp]
paddd xmm1,xmm5
DB 69,15,56,203,247
DB 69,15,56,204,216
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((208-128))+rbp]
paddd xmm10,xmm3
paddd xmm2,xmm9
DB 15,56,205,245
DB 69,15,56,203,236
movdqa xmm0,xmm2
movdqa xmm3,xmm6
DB 102,15,58,15,221,4
DB 69,15,56,203,254
DB 69,15,56,205,209
pshufd xmm0,xmm1,0x0e
paddd xmm7,xmm3
movdqa xmm3,xmm10
DB 102,65,15,58,15,217,4
nop
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm1,XMMWORD[((224-128))+rbp]
paddd xmm1,xmm6
DB 69,15,56,203,247
movdqa xmm0,xmm1
movdqa xmm2,XMMWORD[((224-128))+rbp]
paddd xmm11,xmm3
paddd xmm2,xmm10
DB 15,56,205,254
nop
DB 69,15,56,203,236
movdqa xmm0,xmm2
mov ecx,1
pxor xmm6,xmm6
DB 69,15,56,203,254
DB 69,15,56,205,218
pshufd xmm0,xmm1,0x0e
movdqa xmm1,XMMWORD[((240-128))+rbp]
paddd xmm1,xmm7
movq xmm7,QWORD[rbx]
nop
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
movdqa xmm2,XMMWORD[((240-128))+rbp]
paddd xmm2,xmm11
DB 69,15,56,203,247
movdqa xmm0,xmm1
cmp ecx,DWORD[rbx]
cmovge r8,rsp
cmp ecx,DWORD[4+rbx]
cmovge r9,rsp
pshufd xmm9,xmm7,0x00
DB 69,15,56,203,236
movdqa xmm0,xmm2
pshufd xmm10,xmm7,0x55
movdqa xmm11,xmm7
DB 69,15,56,203,254
pshufd xmm0,xmm1,0x0e
pcmpgtd xmm9,xmm6
pcmpgtd xmm10,xmm6
DB 69,15,56,203,229
pshufd xmm0,xmm2,0x0e
pcmpgtd xmm11,xmm6
movdqa xmm3,XMMWORD[((K256_shaext-16))]
DB 69,15,56,203,247
pand xmm13,xmm9
pand xmm15,xmm10
pand xmm12,xmm9
pand xmm14,xmm10
paddd xmm11,xmm7
paddd xmm13,XMMWORD[80+rsp]
paddd xmm15,XMMWORD[112+rsp]
paddd xmm12,XMMWORD[64+rsp]
paddd xmm14,XMMWORD[96+rsp]
movq QWORD[rbx],xmm11
dec edx
jnz NEAR $L$oop_shaext
mov edx,DWORD[280+rsp]
pshufd xmm12,xmm12,27
pshufd xmm13,xmm13,27
pshufd xmm14,xmm14,27
pshufd xmm15,xmm15,27
movdqa xmm5,xmm12
movdqa xmm6,xmm13
punpckldq xmm12,xmm14
punpckhdq xmm5,xmm14
punpckldq xmm13,xmm15
punpckhdq xmm6,xmm15
movq QWORD[(0-128)+rdi],xmm12
psrldq xmm12,8
movq QWORD[(128-128)+rdi],xmm5
psrldq xmm5,8
movq QWORD[(32-128)+rdi],xmm12
movq QWORD[(160-128)+rdi],xmm5
movq QWORD[(64-128)+rdi],xmm13
psrldq xmm13,8
movq QWORD[(192-128)+rdi],xmm6
psrldq xmm6,8
movq QWORD[(96-128)+rdi],xmm13
movq QWORD[(224-128)+rdi],xmm6
lea rdi,[8+rdi]
lea rsi,[32+rsi]
dec edx
jnz NEAR $L$oop_grande_shaext
$L$done_shaext:
movaps xmm6,XMMWORD[((-184))+rax]
movaps xmm7,XMMWORD[((-168))+rax]
movaps xmm8,XMMWORD[((-152))+rax]
movaps xmm9,XMMWORD[((-136))+rax]
movaps xmm10,XMMWORD[((-120))+rax]
movaps xmm11,XMMWORD[((-104))+rax]
movaps xmm12,XMMWORD[((-88))+rax]
movaps xmm13,XMMWORD[((-72))+rax]
movaps xmm14,XMMWORD[((-56))+rax]
movaps xmm15,XMMWORD[((-40))+rax]
mov rbp,QWORD[((-16))+rax]
mov rbx,QWORD[((-8))+rax]
lea rsp,[rax]
$L$epilogue_shaext:
mov rdi,QWORD[8+rsp] ;WIN64 epilogue
mov rsi,QWORD[16+rsp]
DB 0F3h,0C3h ;repret
$L$SEH_end_sha256_multi_block_shaext:
ALIGN 256
K256:
DD 1116352408,1116352408,1116352408,1116352408
DD 1116352408,1116352408,1116352408,1116352408
DD 1899447441,1899447441,1899447441,1899447441
DD 1899447441,1899447441,1899447441,1899447441
DD 3049323471,3049323471,3049323471,3049323471
DD 3049323471,3049323471,3049323471,3049323471
DD 3921009573,3921009573,3921009573,3921009573
DD 3921009573,3921009573,3921009573,3921009573
DD 961987163,961987163,961987163,961987163
DD 961987163,961987163,961987163,961987163
DD 1508970993,1508970993,1508970993,1508970993
DD 1508970993,1508970993,1508970993,1508970993
DD 2453635748,2453635748,2453635748,2453635748
DD 2453635748,2453635748,2453635748,2453635748
DD 2870763221,2870763221,2870763221,2870763221
DD 2870763221,2870763221,2870763221,2870763221
DD 3624381080,3624381080,3624381080,3624381080
DD 3624381080,3624381080,3624381080,3624381080
DD 310598401,310598401,310598401,310598401
DD 310598401,310598401,310598401,310598401
DD 607225278,607225278,607225278,607225278
DD 607225278,607225278,607225278,607225278
DD 1426881987,1426881987,1426881987,1426881987
DD 1426881987,1426881987,1426881987,1426881987
DD 1925078388,1925078388,1925078388,1925078388
DD 1925078388,1925078388,1925078388,1925078388
DD 2162078206,2162078206,2162078206,2162078206
DD 2162078206,2162078206,2162078206,2162078206
DD 2614888103,2614888103,2614888103,2614888103
DD 2614888103,2614888103,2614888103,2614888103
DD 3248222580,3248222580,3248222580,3248222580
DD 3248222580,3248222580,3248222580,3248222580
DD 3835390401,3835390401,3835390401,3835390401
DD 3835390401,3835390401,3835390401,3835390401
DD 4022224774,4022224774,4022224774,4022224774
DD 4022224774,4022224774,4022224774,4022224774
DD 264347078,264347078,264347078,264347078
DD 264347078,264347078,264347078,264347078
DD 604807628,604807628,604807628,604807628
DD 604807628,604807628,604807628,604807628
DD 770255983,770255983,770255983,770255983
DD 770255983,770255983,770255983,770255983
DD 1249150122,1249150122,1249150122,1249150122
DD 1249150122,1249150122,1249150122,1249150122
DD 1555081692,1555081692,1555081692,1555081692
DD 1555081692,1555081692,1555081692,1555081692
DD 1996064986,1996064986,1996064986,1996064986
DD 1996064986,1996064986,1996064986,1996064986
DD 2554220882,2554220882,2554220882,2554220882
DD 2554220882,2554220882,2554220882,2554220882
DD 2821834349,2821834349,2821834349,2821834349
DD 2821834349,2821834349,2821834349,2821834349
DD 2952996808,2952996808,2952996808,2952996808
DD 2952996808,2952996808,2952996808,2952996808
DD 3210313671,3210313671,3210313671,3210313671
DD 3210313671,3210313671,3210313671,3210313671
DD 3336571891,3336571891,3336571891,3336571891
DD 3336571891,3336571891,3336571891,3336571891
DD 3584528711,3584528711,3584528711,3584528711
DD 3584528711,3584528711,3584528711,3584528711
DD 113926993,113926993,113926993,113926993
DD 113926993,113926993,113926993,113926993
DD 338241895,338241895,338241895,338241895
DD 338241895,338241895,338241895,338241895
DD 666307205,666307205,666307205,666307205
DD 666307205,666307205,666307205,666307205
DD 773529912,773529912,773529912,773529912
DD 773529912,773529912,773529912,773529912
DD 1294757372,1294757372,1294757372,1294757372
DD 1294757372,1294757372,1294757372,1294757372
DD 1396182291,1396182291,1396182291,1396182291
DD 1396182291,1396182291,1396182291,1396182291
DD 1695183700,1695183700,1695183700,1695183700
DD 1695183700,1695183700,1695183700,1695183700
DD 1986661051,1986661051,1986661051,1986661051
DD 1986661051,1986661051,1986661051,1986661051
DD 2177026350,2177026350,2177026350,2177026350
DD 2177026350,2177026350,2177026350,2177026350
DD 2456956037,2456956037,2456956037,2456956037
DD 2456956037,2456956037,2456956037,2456956037
DD 2730485921,2730485921,2730485921,2730485921
DD 2730485921,2730485921,2730485921,2730485921
DD 2820302411,2820302411,2820302411,2820302411
DD 2820302411,2820302411,2820302411,2820302411
DD 3259730800,3259730800,3259730800,3259730800
DD 3259730800,3259730800,3259730800,3259730800
DD 3345764771,3345764771,3345764771,3345764771
DD 3345764771,3345764771,3345764771,3345764771
DD 3516065817,3516065817,3516065817,3516065817
DD 3516065817,3516065817,3516065817,3516065817
DD 3600352804,3600352804,3600352804,3600352804
DD 3600352804,3600352804,3600352804,3600352804
DD 4094571909,4094571909,4094571909,4094571909
DD 4094571909,4094571909,4094571909,4094571909
DD 275423344,275423344,275423344,275423344
DD 275423344,275423344,275423344,275423344
DD 430227734,430227734,430227734,430227734
DD 430227734,430227734,430227734,430227734
DD 506948616,506948616,506948616,506948616
DD 506948616,506948616,506948616,506948616
DD 659060556,659060556,659060556,659060556
DD 659060556,659060556,659060556,659060556
DD 883997877,883997877,883997877,883997877
DD 883997877,883997877,883997877,883997877
DD 958139571,958139571,958139571,958139571
DD 958139571,958139571,958139571,958139571
DD 1322822218,1322822218,1322822218,1322822218
DD 1322822218,1322822218,1322822218,1322822218
DD 1537002063,1537002063,1537002063,1537002063
DD 1537002063,1537002063,1537002063,1537002063
DD 1747873779,1747873779,1747873779,1747873779
DD 1747873779,1747873779,1747873779,1747873779
DD 1955562222,1955562222,1955562222,1955562222
DD 1955562222,1955562222,1955562222,1955562222
DD 2024104815,2024104815,2024104815,2024104815
DD 2024104815,2024104815,2024104815,2024104815
DD 2227730452,2227730452,2227730452,2227730452
DD 2227730452,2227730452,2227730452,2227730452
DD 2361852424,2361852424,2361852424,2361852424
DD 2361852424,2361852424,2361852424,2361852424
DD 2428436474,2428436474,2428436474,2428436474
DD 2428436474,2428436474,2428436474,2428436474
DD 2756734187,2756734187,2756734187,2756734187
DD 2756734187,2756734187,2756734187,2756734187
DD 3204031479,3204031479,3204031479,3204031479
DD 3204031479,3204031479,3204031479,3204031479
DD 3329325298,3329325298,3329325298,3329325298
DD 3329325298,3329325298,3329325298,3329325298
$L$pbswap:
DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
DD 0x00010203,0x04050607,0x08090a0b,0x0c0d0e0f
K256_shaext:
DD 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
DD 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
DD 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
DD 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
DD 0xe49b69c1,0xefbe4786,0x0fc19dc6,0x240ca1cc
DD 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
DD 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
DD 0xc6e00bf3,0xd5a79147,0x06ca6351,0x14292967
DD 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
DD 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
DD 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
DD 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
DD 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
DD 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
DD 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
DD 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
DB 83,72,65,50,53,54,32,109,117,108,116,105,45,98,108,111
DB 99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114
DB 32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71
DB 65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112
DB 101,110,115,115,108,46,111,114,103,62,0
EXTERN __imp_RtlVirtualUnwind
ALIGN 16
se_handler:
push rsi
push rdi
push rbx
push rbp
push r12
push r13
push r14
push r15
pushfq
sub rsp,64
mov rax,QWORD[120+r8]
mov rbx,QWORD[248+r8]
mov rsi,QWORD[8+r9]
mov r11,QWORD[56+r9]
mov r10d,DWORD[r11]
lea r10,[r10*1+rsi]
cmp rbx,r10
jb NEAR $L$in_prologue
mov rax,QWORD[152+r8]
mov r10d,DWORD[4+r11]
lea r10,[r10*1+rsi]
cmp rbx,r10
jae NEAR $L$in_prologue
mov rax,QWORD[272+rax]
mov rbx,QWORD[((-8))+rax]
mov rbp,QWORD[((-16))+rax]
mov QWORD[144+r8],rbx
mov QWORD[160+r8],rbp
lea rsi,[((-24-160))+rax]
lea rdi,[512+r8]
mov ecx,20
DD 0xa548f3fc
$L$in_prologue:
mov rdi,QWORD[8+rax]
mov rsi,QWORD[16+rax]
mov QWORD[152+r8],rax
mov QWORD[168+r8],rsi
mov QWORD[176+r8],rdi
mov rdi,QWORD[40+r9]
mov rsi,r8
mov ecx,154
DD 0xa548f3fc
mov rsi,r9
xor rcx,rcx
mov rdx,QWORD[8+rsi]
mov r8,QWORD[rsi]
mov r9,QWORD[16+rsi]
mov r10,QWORD[40+rsi]
lea r11,[56+rsi]
lea r12,[24+rsi]
mov QWORD[32+rsp],r10
mov QWORD[40+rsp],r11
mov QWORD[48+rsp],r12
mov QWORD[56+rsp],rcx
call QWORD[__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
section .pdata rdata align=4
ALIGN 4
DD $L$SEH_begin_sha256_multi_block wrt ..imagebase
DD $L$SEH_end_sha256_multi_block wrt ..imagebase
DD $L$SEH_info_sha256_multi_block wrt ..imagebase
DD $L$SEH_begin_sha256_multi_block_shaext wrt ..imagebase
DD $L$SEH_end_sha256_multi_block_shaext wrt ..imagebase
DD $L$SEH_info_sha256_multi_block_shaext wrt ..imagebase
section .xdata rdata align=8
ALIGN 8
$L$SEH_info_sha256_multi_block:
DB 9,0,0,0
DD se_handler wrt ..imagebase
DD $L$body wrt ..imagebase,$L$epilogue wrt ..imagebase
$L$SEH_info_sha256_multi_block_shaext:
DB 9,0,0,0
DD se_handler wrt ..imagebase
DD $L$body_shaext wrt ..imagebase,$L$epilogue_shaext wrt ..imagebase