Function at 0x14008f610
Capabilities:
Hash data using sha256 via x86 extensions

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 8], rcx
push rbx
push rsi
push rdi
push r14
sub rsp, 0x58
mov rax, qword [rcx]
mov rsi, r9
mov rdi, r8
mov rbx, rdx
mov r14, rcx
call qword [rax + 0x20]
test al, al
jne 0x140046421
mov rcx, r14
call fcn.14000dd30
mov ecx, 1
call fcn.140029470
test al, al
je 0x140046457
mov ecx, 0x100000
call fcn.140029470
test al, al
je 0x140046457
mov r9, rsi
mov r8, rdi
mov rdx, rbx
mov rcx, r14
add rsp, 0x58
pop r14
pop rdi
pop rsi
pop rbx
jmp 0x14008f610
mov ecx, 4
mov qword [rsp + 0x90], rbp
call fcn.140029470
test al, al
je 0x1400464b2
cmp rsi, 8
jb 0x1400464b2
mov rbp, rsi
shr rbp, 3
imul rax, rbp, 0xfffffffffffffff8
add rsi, rax
mov qword [rsp + 0x98], rsi
nop dword [rax]
mov r8, rdi
mov rdx, rbx
mov rcx, r14
call fcn.14008e860
add rbx, 0x100
add rdi, 0x100
sub rbp, 1
jne 0x140046490
call fcn.140081770
test al, al
je 0x1400464fc
cmp rsi, 4
jb 0x1400464fc
mov rbp, rsi
shr rbp, 2
imul rax, rbp, 0xfffffffffffffffc
add rsi, rax
mov qword [rsp + 0x98], rsi
nop word [rax + rax]
mov r8, rdi
mov rdx, rbx
mov rcx, r14
call fcn.14008ce60
sub rbx, 0xffffffffffffff80
sub rdi, 0xffffffffffffff80
sub rbp, 1
jne 0x1400464e0
test rsi, rsi
je 0x1400468a8
lea rsi, [rbx + 8]
mov qword [rsp + 0x50], r12
sub rbx, rdi
mov qword [rsp + 0x48], r13
sub rbx, 8
mov qword [rsp + 0x40], r15
lea rax, [rdi + 8]
mov qword [rsp + 0x88], rbx
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], rax
nop word [rax + rax]
mov ebp, dword [rax + rbx]
mov ebx, 8
mov edi, dword [rsi]
mov r11d, dword [rsi - 4]
mov r14d, dword [rsi + 4]
mov r15d, dword [rsi + 8]
mov r12d, dword [rsi + 0xc]
mov r13d, dword [rsi + 0x10]
mov eax, dword [rsi + 0x14]
mov rcx, qword [rsp + 0x80]
bswap edi
mov r10d, edi
bswap r11d
mov rsi, qword [rcx + 8]
xor r10d, r11d
add rsi, 8
bswap ebp
bswap r14d
bswap r15d
bswap r12d
bswap r13d
bswap eax
nop dword [rax]
mov r8d, r11d
mov edx, r15d
ror edx, 0x19
xor r8d, ebp
and r10d, r8d
mov ecx, r15d
ror ecx, 0xb
xor r10d, r11d
xor edx, ecx
mov ecx, r15d
ror ecx, 6
xor edx, ecx
mov ecx, r13d
xor ecx, r12d
and ecx, r15d
xor ecx, r13d
add edx, ecx
mov ecx, ebp
add edx, dword [rsi - 8]
ror ecx, 0xd
add eax, edx
add r14d, eax
mov edx, ebp
ror edx, 0x16
add eax, r10d
xor edx, ecx
mov ecx, ebp
ror ecx, 2
xor edx, ecx
mov ecx, r14d
ror ecx, 0xb
add eax, edx
mov edx, r14d
mov r9d, eax
ror edx, 0x19
xor r9d, ebp
xor edx, ecx
mov r10d, eax
mov ecx, r14d
ror ecx, 6
xor edx, ecx
mov ecx, r12d
xor ecx, r15d
and ecx, r14d
xor ecx, r12d
add edx, ecx
mov ecx, eax
add edx, dword [rsi - 4]
add r13d, edx
ror ecx, 0xd
add edi, r13d
mov edx, eax
ror edx, 0x16
xor edx, ecx
mov ecx, eax
ror ecx, 2
xor edx, ecx
mov ecx, r9d
and ecx, r8d
xor ecx, ebp
add r13d, ecx
mov ecx, edi
add r13d, edx
ror ecx, 0xb
mov edx, edi
xor r10d, r13d
ror edx, 0x19
xor edx, ecx
mov ecx, edi
ror ecx, 6
xor edx, ecx
mov ecx, r15d
xor ecx, r14d
and ecx, edi
xor ecx, r15d
add edx, ecx
add edx, dword [rsi]
add r12d, edx
mov edx, r13d
add r11d, r12d
ror edx, 0x16
mov ecx, r13d
mov r8d, r13d
ror ecx, 0xd
xor edx, ecx
mov ecx, r13d
ror ecx, 2
xor edx, ecx
mov ecx, r10d
and ecx, r9d
xor ecx, eax
add r12d, ecx
mov ecx, r11d
ror ecx, 0xb
add r12d, edx
xor r8d, r12d
mov edx, r11d
ror edx, 0x19
and r10d, r8d
xor edx, ecx
xor r10d, r13d
mov ecx, r11d
mov r9d, r12d
ror ecx, 6
xor edx, ecx
mov ecx, r14d
xor ecx, edi
and ecx, r11d
xor ecx, r14d
add edx, ecx
mov ecx, r12d
add edx, dword [rsi + 4]
ror ecx, 0xd
add r15d, edx
add ebp, r15d
mov edx, r12d
ror edx, 0x16
add r15d, r10d
xor edx, ecx
mov ecx, r12d
ror ecx, 2
xor edx, ecx
mov ecx, ebp
ror ecx, 0xb
add r15d, edx
xor r9d, r15d
mov edx, ebp
ror edx, 0x19
xor edx, ecx
mov ecx, ebp
ror ecx, 6
xor edx, ecx
mov ecx, edi
xor ecx, r11d
and ecx, ebp
xor ecx, edi
add edx, ecx
mov ecx, r15d
add edx, dword [rsi + 8]
ror ecx, 0xd
add r14d, edx
add eax, r14d
mov edx, r15d
ror edx, 0x16
xor edx, ecx
mov ecx, r15d
ror ecx, 2
xor edx, ecx
mov ecx, r9d
and ecx, r8d
xor ecx, r12d
add r14d, ecx
mov ecx, eax
ror ecx, 0xb
add r14d, edx
mov edx, eax
ror edx, 0x19
xor edx, ecx
mov ecx, eax
ror ecx, 6
xor edx, ecx
mov ecx, r11d
xor ecx, ebp
mov r8d, r15d
and ecx, eax
xor r8d, r14d
xor ecx, r11d
add edx, ecx
mov ecx, r14d
add edx, dword [rsi + 0xc]
ror ecx, 0xd
add edi, edx
add r13d, edi
mov edx, r14d
ror edx, 0x16
xor edx, ecx
mov ecx, r14d
ror ecx, 2
xor edx, ecx
mov ecx, r8d
and ecx, r9d
mov r9d, r14d
xor ecx, r15d
add edi, ecx
mov ecx, r13d
ror ecx, 0xb
add edi, edx
xor r9d, edi
mov edx, r13d
ror edx, 0x19
mov r10d, edi
xor edx, ecx
mov ecx, r13d
ror ecx, 6
xor edx, ecx
mov ecx, eax
xor ecx, ebp
and ecx, r13d
xor ecx, ebp
add edx, ecx
mov ecx, edi
add edx, dword [rsi + 0x10]
ror ecx, 0xd
add r11d, edx
add r12d, r11d
mov edx, edi
ror edx, 0x16
xor edx, ecx
mov ecx, edi
ror ecx, 2
xor edx, ecx
mov ecx, r9d
and ecx, r8d
xor ecx, r14d
add r11d, ecx
mov ecx, r12d
add r11d, edx
ror ecx, 0xb
xor r10d, r11d
mov edx, r12d
ror edx, 0x19
and r9d, r10d
xor edx, ecx
mov ecx, r12d
ror ecx, 6
xor edx, ecx
mov ecx, eax
xor ecx, r13d
and ecx, r12d
xor ecx, eax
add edx, ecx
mov ecx, r11d
add edx, dword [rsi + 0x14]
add ebp, edx
ror ecx, 0xd
mov edx, r11d
add r15d, ebp
ror edx, 0x16
xor edx, ecx
mov ecx, r11d
ror ecx, 2
xor edx, ecx
xor r9d, edi
add ebp, r9d
lea rsi, [rsi + 0x20]
add ebp, edx
sub rbx, 1
jne 0x140046590
mov rsi, qword [rsp + 0x28]
mov rbx, qword [rsp + 0x88]
add rsi, 0x20
mov dword [rsp + 0x20], eax
mov rax, qword [rsp + 0x30]
mov ecx, dword [rsp + 0x20]
bswap ebp
bswap r11d
mov dword [rax - 8], ebp
mov dword [rax - 4], r11d
bswap edi
mov dword [rax], edi
bswap r14d
mov dword [rax + 4], r14d
bswap r15d
mov dword [rax + 8], r15d
bswap r12d
mov dword [rax + 0xc], r12d
bswap r13d
mov dword [rax + 0x10], r13d
bswap ecx
mov dword [rax + 0x14], ecx
add rax, 0x20
sub qword [rsp + 0x98], 1
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x30], rax
jne 0x140046540
mov r15, qword [rsp + 0x40]
mov r13, qword [rsp + 0x48]
mov r12, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x90]
add rsp, 0x58
pop r14
pop rdi
pop rsi
pop rbx
ret
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x40
mov rdi, qword [rcx + 8]
mov rbx, r9
movaps xmmword [rsp + 0x10], xmm8
movdqa xmm8, xmmword [0x1400c5390]
movaps xmmword [rsp], xmm9
movdqa xmm9, xmmword [0x1400c5380]
cmp r9, 2
jb 0x14008f847
shr r9, 1
mov r10, r8
imul rax, r9, 0xfffffffffffffffe
movaps xmmword [rsp + 0x30], xmm6
movaps xmmword [rsp + 0x20], xmm7
sub r10, rdx
add rbx, rax
movdqu xmm6, xmmword [rdx]
lea rax, [rdi + 0x20]
mov ecx, 2
movdqu xmm7, xmmword [rdx + 0x20]
movdqu xmm0, xmmword [rdx + 0x10]
movdqu xmm1, xmmword [rdx + 0x30]
movdqa xmm4, xmm6
movdqa xmm5, xmm7
punpcklqdq xmm4, xmm0
punpcklqdq xmm5, xmm1
punpckhqdq xmm6, xmm0
punpckhqdq xmm7, xmm1
pshufb xmm4, xmm9
pshufb xmm5, xmm9
pshufb xmm6, xmm9
pshufb xmm7, xmm9
nop
movdqu xmm0, xmmword [rax - 0x20]
movdqu xmm2, xmmword [rax - 0x10]
lea rax, [rax + 0x80]
movdqa xmm1, xmm0
psrldq xmm1, 8
movdqa xmm3, xmm2
psrldq xmm3, 8
sha256rnds2 xmm6, xmm4, xmm0
sha256rnds2 xmm7, xmm5, xmm0
movdqa xmm0, xmm1
sha256rnds2 xmm4, xmm6, xmm0
sha256rnds2 xmm5, xmm7, xmm0
movdqa xmm0, xmm2
movdqu xmm2, xmmword [rax - 0x70]
sha256rnds2 xmm6, xmm4, xmm0
sha256rnds2 xmm7, xmm5, xmm0
movdqa xmm0, xmm3
movdqa xmm3, xmm2
psrldq xmm3, 8
sha256rnds2 xmm4, xmm6, xmm0
sha256rnds2 xmm5, xmm7, xmm0
movdqu xmm0, xmmword [rax - 0x80]
movdqa xmm1, xmm0
psrldq xmm1, 8
sha256rnds2 xmm6, xmm4, xmm0
sha256rnds2 xmm7, xmm5, xmm0
movdqa xmm0, xmm1
sha256rnds2 xmm4, xmm6, xmm0
sha256rnds2 xmm5, xmm7, xmm0
movdqa xmm0, xmm2
movdqu xmm2, xmmword [rax - 0x50]
sha256rnds2 xmm6, xmm4, xmm0
sha256rnds2 xmm7, xmm5, xmm0
movdqa xmm0, xmm3
movdqa xmm3, xmm2
psrldq xmm3, 8
sha256rnds2 xmm4, xmm6, xmm0
sha256rnds2 xmm5, xmm7, xmm0
movdqu xmm0, xmmword [rax - 0x60]
movdqa xmm1, xmm0
psrldq xmm1, 8
sha256rnds2 xmm6, xmm4, xmm0
sha256rnds2 xmm7, xmm5, xmm0
movdqa xmm0, xmm1
sha256rnds2 xmm4, xmm6, xmm0
sha256rnds2 xmm5, xmm7, xmm0
movdqa xmm0, xmm2
movdqu xmm2, xmmword [rax - 0x30]
sha256rnds2 xmm6, xmm4, xmm0
sha256rnds2 xmm7, xmm5, xmm0
movdqa xmm0, xmm3
movdqa xmm3, xmm2
psrldq xmm3, 8
sha256rnds2 xmm4, xmm6, xmm0
sha256rnds2 xmm5, xmm7, xmm0
movdqu xmm0, xmmword [rax - 0x40]
movdqa xmm1, xmm0
psrldq xmm1, 8
sha256rnds2 xmm6, xmm4, xmm0
sha256rnds2 xmm7, xmm5, xmm0
movdqa xmm0, xmm1
sha256rnds2 xmm4, xmm6, xmm0
sha256rnds2 xmm5, xmm7, xmm0
movdqa xmm0, xmm2
sha256rnds2 xmm6, xmm4, xmm0
sha256rnds2 xmm7, xmm5, xmm0
movdqa xmm0, xmm3
sha256rnds2 xmm4, xmm6, xmm0
sha256rnds2 xmm5, xmm7, xmm0
sub rcx, 1
jne 0x14008f6b0
movdqa xmm0, xmm4
punpcklqdq xmm4, xmm6
punpckhqdq xmm0, xmm6
pshufb xmm0, xmm8
pshufb xmm4, xmm8
movdqu xmmword [r8], xmm0
add r8, 0x40
movdqa xmm0, xmm5
punpcklqdq xmm5, xmm7
movdqu xmmword [r10 + rdx + 0x10], xmm4
punpckhqdq xmm0, xmm7
pshufb xmm0, xmm8
pshufb xmm5, xmm8
movdqu xmmword [r10 + rdx + 0x20], xmm0
movdqu xmmword [r10 + rdx + 0x30], xmm5
add rdx, 0x40
sub r9, 1
jne 0x14008f662
movaps xmm7, xmmword [rsp + 0x20]
movaps xmm6, xmmword [rsp + 0x30]
test rbx, rbx
je 0x14008fa2c
sub r8, rdx
nop dword [rax]
nop word [rax + rax]
movdqu xmm0, xmmword [rdx + 0x10]
movdqu xmm2, xmmword [rdx]
movdqu xmm1, xmmword [rdi + 0x10]
movdqa xmm3, xmm2
punpckhqdq xmm2, xmm0
punpcklqdq xmm3, xmm0
movdqu xmm0, xmmword [rdi]
pshufb xmm3, xmm9
pshufb xmm2, xmm9
sha256rnds2 xmm2, xmm3, xmm0
psrldq xmm0, 8
sha256rnds2 xmm3, xmm2, xmm0
movdqa xmm0, xmm1
psrldq xmm1, 8
sha256rnds2 xmm2, xmm3, xmm0
movdqa xmm0, xmm1
sha256rnds2 xmm3, xmm2, xmm0
movdqu xmm0, xmmword [rdi + 0x20]
movdqu xmm1, xmmword [rdi + 0x30]
sha256rnds2 xmm2, xmm3, xmm0
psrldq xmm0, 8
sha256rnds2 xmm3, xmm2, xmm0
movdqa xmm0, xmm1
psrldq xmm1, 8
sha256rnds2 xmm2, xmm3, xmm0
movdqa xmm0, xmm1
sha256rnds2 xmm3, xmm2, xmm0
movdqu xmm0, xmmword [rdi + 0x40]
movdqu xmm1, xmmword [rdi + 0x50]
sha256rnds2 xmm2, xmm3, xmm0
psrldq xmm0, 8
sha256rnds2 xmm3, xmm2, xmm0
movdqa xmm0, xmm1
psrldq xmm1, 8
sha256rnds2 xmm2, xmm3, xmm0
movdqa xmm0, xmm1
sha256rnds2 xmm3, xmm2, xmm0
movdqu xmm0, xmmword [rdi + 0x60]
movdqu xmm1, xmmword [rdi + 0x70]
sha256rnds2 xmm2, xmm3, xmm0
psrldq xmm0, 8
sha256rnds2 xmm3, xmm2, xmm0
movdqa xmm0, xmm1
psrldq xmm1, 8
sha256rnds2 xmm2, xmm3, xmm0
movdqa xmm0, xmm1
movdqu xmm1, xmmword [rdi + 0x90]
sha256rnds2 xmm3, xmm2, xmm0
movdqu xmm0, xmmword [rdi + 0x80]
sha256rnds2 xmm2, xmm3, xmm0
psrldq xmm0, 8
sha256rnds2 xmm3, xmm2, xmm0
movdqa xmm0, xmm1
psrldq xmm1, 8
sha256rnds2 xmm2, xmm3, xmm0
movdqa xmm0, xmm1
movdqu xmm1, xmmword [rdi + 0xb0]
sha256rnds2 xmm3, xmm2, xmm0
movdqu xmm0, xmmword [rdi + 0xa0]
sha256rnds2 xmm2, xmm3, xmm0
psrldq xmm0, 8
sha256rnds2 xmm3, xmm2, xmm0
movdqa xmm0, xmm1
psrldq xmm1, 8
sha256rnds2 xmm2, xmm3, xmm0
movdqa xmm0, xmm1
movdqu xmm1, xmmword [rdi + 0xd0]
sha256rnds2 xmm3, xmm2, xmm0
movdqu xmm0, xmmword [rdi + 0xc0]
sha256rnds2 xmm2, xmm3, xmm0
psrldq xmm0, 8
sha256rnds2 xmm3, xmm2, xmm0
movdqa xmm0, xmm1
psrldq xmm1, 8
sha256rnds2 xmm2, xmm3, xmm0
movdqa xmm0, xmm1
movdqu xmm1, xmmword [rdi + 0xf0]
sha256rnds2 xmm3, xmm2, xmm0
movdqu xmm0, xmmword [rdi + 0xe0]
sha256rnds2 xmm2, xmm3, xmm0
psrldq xmm0, 8
lea rdx, [rdx + 0x20]
sha256rnds2 xmm3, xmm2, xmm0
movdqa xmm0, xmm1
psrldq xmm1, 8
sha256rnds2 xmm2, xmm3, xmm0
movdqa xmm0, xmm1
sha256rnds2 xmm3, xmm2, xmm0
movdqa xmm0, xmm3
punpcklqdq xmm3, xmm2
punpckhqdq xmm0, xmm2
pshufb xmm0, xmm8
pshufb xmm3, xmm8
movdqu xmmword [rdx + r8 - 0x20], xmm0
movdqu xmmword [rdx + r8 - 0x10], xmm3
sub rbx, 1
jne 0x14008f860
mov rbx, qword [rsp + 0x50]
movaps xmm8, xmmword [rsp + 0x10]
movaps xmm9, xmmword [rsp]
add rsp, 0x40
pop rdi
ret