Function at 0x14009a030
Capabilities:
Hash data using sha256

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x138
vmovups xmmword [rsp + 0x100], xmm6
vmovups xmmword [rsp + 0x110], xmm7
vmovups xmmword [rsp + 0x120], xmm8
vmovdqu ymm0, ymmword [0x1402bfc40]
lea r12, [r8*8]
mov r15, rcx
vmovdqu ymmword [rsp + 0x80], ymm0
vpxor xmm0, xmm0, xmm0
mov qword [rsp + 0xb8], 0
mov rbx, rdx
mov qword [rsp + 0xb0], 0
vmovdqu xmmword [rsp + 0xa0], xmm0
cmp r12, 0x1ff
jbe 0x14009a650
lea r14, [r12 - 0x200]
xor ebp, ebp
xor esi, esi
shr r14, 9
lea rdi, [rsp + 0x80]
lea r13, [r14 + 1]
shl r13, 6
add r13, rdx
nop word [rax + rax]
add esi, 0x200
mov dword [rsp + 0xb0], esi
jne 0x14009a4a0
mov rdx, rbx
add ebp, 1
mov rcx, rdi
add rbx, 0x40
mov dword [rsp + 0xb4], ebp
call sym.blake256_compress
cmp rbx, r13
jne 0x14009a0d8
lea edx, [r14 + 1]
shl edx, 9
and r12d, 0x1ff
jne 0x14009a4cc
mov r8d, edx
xor ecx, ecx
mov r12d, edx
movzx eax, dl
mov esi, edx
mov ebx, edx
shr r12d, 8
shl rax, 8
mov r9d, ebp
mov r10d, ebp
movzx r12d, r12b
shr esi, 0x10
mov r11d, ebp
movzx ebp, bpl
or rax, r12
movzx esi, sil
shr ebx, 0x18
mov byte [rsp + 0x76], 0x81
shl rax, 8
movzx ebx, bl
shr r11d, 8
mov byte [rsp + 0x77], 1
shr r10d, 0x10
or rax, rsi
movzx r11d, r11b
shr r9d, 0x18
shl rax, 8
movzx r10d, r10b
movzx r9d, r9b
or rax, rbx
shl rax, 8
or rax, rbp
shl rax, 8
or rax, r11
shl rax, 8
or rax, r10
shl rax, 8
or rax, r9
mov qword [rsp + 0x78], rax
cmp ecx, 0x1b8
je 0x14009a5a0
cmp ecx, 0x1b7
jg 0x14009a540
test ecx, ecx
je 0x14009a530
mov r8d, 0x1b8
sub edx, 0x1b8
sub r8d, ecx
mov dword [rsp + 0xb0], edx
mov rcx, rdi
lea rdx, [0x1402bfae0]
movsxd r8, r8d
call sym.blake256_update
lea rdx, [rsp + 0x77]
mov r8d, 8
mov rcx, rdi
call sym.blake256_update
mov eax, dword [rsp + 0xb0]
sub eax, 8
sub eax, 0x40
lea rdx, [rsp + 0x78]
mov rcx, rdi
mov r8d, 0x40
mov dword [rsp + 0xb0], eax
call sym.blake256_update
mov esi, dword [rsp + 0x8c]
mov r8d, dword [rsp + 0x90]
mov ecx, dword [rsp + 0x94]
mov edx, dword [rsp + 0x98]
mov r9d, esi
mov r12d, dword [rsp + 0x80]
mov ebp, dword [rsp + 0x84]
shr r9d, 0x18
mov edi, dword [rsp + 0x88]
mov eax, dword [rsp + 0x9c]
mov dword [rsp + 0x38], r9d
mov r9d, esi
mov ebx, r12d
mov r11d, ebp
shr r9d, 0x10
shr ebx, 0x18
mov r10d, edi
mov r14d, ebp
mov dword [rsp + 0x3c], r9d
mov r9d, esi
shr r11d, 0x18
mov r13d, edi
shr r9d, 8
mov dword [rsp + 0x28], ebx
shr r10d, 0x18
mov ebx, r12d
mov dword [rsp + 0x40], r9d
mov r9d, r8d
shr ebx, 0x10
vmovd xmm2, dword [rsp + 0x38]
shr r9d, 0x18
mov dword [rsp + 0x30], r11d
mov r11d, ebp
vpinsrb xmm2, xmm2, byte [rsp + 0x3c], 1
mov dword [rsp + 0x44], r9d
shr r11d, 8
mov r9d, r8d
shr r14d, 0x10
shr r9d, 0x10
mov dword [rsp + 0x2c], ebx
mov ebx, r12d
shr r13d, 0x10
mov dword [rsp + 0x48], r9d
mov r9d, r8d
shr ebx, 8
vmovd xmm6, r11d
shr r9d, 8
mov dword [rsp + 0x34], r10d
mov r10d, edi
vmovd xmm0, dword [rsp + 0x28]
mov dword [rsp + 0x4c], r9d
mov r9d, ecx
shr r10d, 8
vmovd xmm7, ebx
shr r9d, 0x18
vpinsrb xmm0, xmm0, byte [rsp + 0x2c], 1
vmovd xmm3, dword [rsp + 0x30]
mov dword [rsp + 0x50], r9d
mov r9d, ecx
vmovd xmm5, r10d
vmovd xmm1, dword [rsp + 0x34]
shr r9d, 0x10
vpinsrb xmm7, xmm7, r12d, 1
vpinsrb xmm6, xmm6, ebp, 1
mov dword [rsp + 0x54], r9d
mov r9d, ecx
vpunpcklwd xmm0, xmm0, xmm7
vpinsrb xmm5, xmm5, edi, 1
shr r9d, 8
vpinsrb xmm3, xmm3, r14d, 1
vpinsrb xmm1, xmm1, r13d, 1
mov dword [rsp + 0x58], r9d
mov r9d, edx
vpunpcklwd xmm3, xmm3, xmm6
vpunpcklwd xmm1, xmm1, xmm5
shr r9d, 0x18
vpunpckldq xmm0, xmm0, xmm3
mov dword [rsp + 0x5c], r9d
mov r9d, edx
shr r9d, 0x10
mov dword [rsp + 0x60], r9d
mov r9d, edx
shr r9d, 8
mov dword [rsp + 0x64], r9d
mov r9d, eax
shr r9d, 0x18
mov dword [rsp + 0x68], r9d
mov r9d, eax
shr r9d, 0x10
mov dword [rsp + 0x6c], r9d
vmovd xmm4, dword [rsp + 0x40]
mov r9d, eax
vmovd xmm8, dword [rsp + 0x4c]
vpinsrb xmm4, xmm4, esi, 1
shr r9d, 8
vmovd xmm7, dword [rsp + 0x58]
vmovd xmm6, dword [rsp + 0x64]
vpunpcklwd xmm2, xmm2, xmm4
vmovd xmm3, dword [rsp + 0x68]
vmovd xmm5, r9d
vpunpckldq xmm1, xmm1, xmm2
vpinsrb xmm3, xmm3, byte [rsp + 0x6c], 1
vmovd xmm4, dword [rsp + 0x50]
vmovd xmm2, dword [rsp + 0x5c]
vpunpcklqdq xmm0, xmm0, xmm1
vpinsrb xmm4, xmm4, byte [rsp + 0x54], 1
vpinsrb xmm2, xmm2, byte [rsp + 0x60], 1
vmovd xmm1, dword [rsp + 0x44]
vpinsrb xmm1, xmm1, byte [rsp + 0x48], 1
vpinsrb xmm8, xmm8, r8d, 1
vpinsrb xmm7, xmm7, ecx, 1
vpinsrb xmm6, xmm6, edx, 1
vpinsrb xmm5, xmm5, eax, 1
vpunpcklwd xmm4, xmm4, xmm7
vpunpcklwd xmm1, xmm1, xmm8
vpunpcklwd xmm2, xmm2, xmm6
vpunpcklwd xmm3, xmm3, xmm5
vpunpckldq xmm1, xmm1, xmm4
vpunpckldq xmm2, xmm2, xmm3
vpunpcklqdq xmm1, xmm1, xmm2
vinserti128 ymm0, ymm0, xmm1, 1
vmovdqu ymmword [r15], ymm0
vzeroupper
vmovups xmm6, xmmword [rsp + 0x100]
vmovups xmm7, xmmword [rsp + 0x110]
vmovups xmm8, xmmword [rsp + 0x120]
add rsp, 0x138
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, rbx
mov rcx, rdi
add rbx, 0x40
call sym.blake256_compress
cmp r13, rbx
jne 0x14009a0d8
lea edx, [r14 + 1]
shl edx, 9
and r12d, 0x1ff
je 0x14009a11d
mov rcx, r12
lea r9, [rsp + 0xc0]
mov rax, r13
shr rcx, 3
mov r10, r9
cmp ecx, 8
jae 0x14009a620
xor r8d, r8d
test cl, 4
jne 0x14009a600
test cl, 2
jne 0x14009a5e0
and ecx, 1
jne 0x14009a5d0
mov dword [rsp + 0xb8], r12d
mov ecx, r12d
add r12d, edx
jb 0x14009a6f6
mov r8d, edx
mov edx, r12d
jmp 0x14009a122
mov dword [rsp + 0xbc], 1
jmp 0x14009a1c6
mov r8d, 0x200
sub edx, 0x200
sub r8d, ecx
mov dword [rsp + 0xb0], edx
mov rcx, rdi
lea rdx, [0x1402bfae0]
movsxd r8, r8d
call sym.blake256_update
mov r8d, 0x1b8
lea rdx, [0x1402bfae1]
mov rcx, rdi
sub dword [rsp + 0xb0], 0x1b8
call sym.blake256_update
mov dword [rsp + 0xbc], 1
jmp 0x14009a1ee
sub r8d, 8
lea rdx, [rsp + 0x76]
mov rcx, rdi
mov dword [rsp + 0xb0], r8d
mov r8d, 8
call sym.blake256_update
mov eax, dword [rsp + 0xb0]
jmp 0x14009a20b
movzx eax, byte [rax + r8]
mov byte [r10 + r8], al
jmp 0x14009a508
movzx r9d, word [rax + r8]
mov word [r10 + r8], r9w
add r8, 2
and ecx, 1
je 0x14009a508
jmp 0x14009a5d0
mov r8d, dword [rax]
mov dword [r10], r8d
mov r8d, 4
test cl, 2
je 0x14009a4ff
jmp 0x14009a5e0
mov r11d, ecx
xor eax, eax
and r11d, 0xfffffff8
mov r8d, eax
add eax, 8
mov r10, qword [r13 + r8]
mov qword [r9 + r8], r10
cmp eax, r11d
jb 0x14009a629
lea r10, [r9 + rax]
add rax, r13
jmp 0x14009a4ea
test r12, r12
jne 0x14009a666
xor ebp, ebp
xor edx, edx
lea rdi, [rsp + 0x80]
jmp 0x14009a11d
mov rdx, r12
lea rcx, [rsp + 0xc0]
mov rax, rbx
shr rdx, 3
mov r8, rcx
cmp edx, 8
jae 0x14009a6d1
xor ecx, ecx
test dl, 4
je 0x14009a691
mov ecx, dword [rax]
mov dword [r8], ecx
mov ecx, 4
test dl, 2
je 0x14009a6a4
movzx r9d, word [rax + rcx]
mov word [r8 + rcx], r9w
add rcx, 2
and edx, 1
je 0x14009a6b1
movzx eax, byte [rax + rcx]
mov byte [r8 + rcx], al
mov dword [rsp + 0xb8], r12d
mov ecx, r12d
mov edx, r12d
xor ebp, ebp
xor r8d, r8d
lea rdi, [rsp + 0x80]
jmp 0x14009a122
mov r10d, edx
xor eax, eax
and r10d, 0xfffffff8
mov r8d, eax
add eax, 8
mov r9, qword [rbx + r8]
mov qword [rcx + r8], r9
cmp eax, r10d
jb 0x14009a6da
lea r8, [rcx + rax]
add rax, rbx
jmp 0x14009a680
add ebp, 1
jmp 0x14009a51c