Function at 0x14009b4b0
Capabilities:
Authenticate hmac
Hash data using sha256

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xe8
vmovups xmmword [rsp + 0xc0], xmm6
vmovups xmmword [rsp + 0xd0], xmm11
mov rdi, rcx
mov rbx, rdx
mov r13, r8
cmp r8, 0x40
ja 0x14009b950
mov eax, 0x36
vmovdqu ymm11, ymmword [0x1402bfc60]
vpxor xmm6, xmm6, xmm6
mov qword [rcx + 0x38], 0
vmovd xmm0, eax
vmovdqu xmmword [rcx + 0x20], xmm6
lea rbp, [rsp + 0x40]
vpbroadcastb xmm0, xmm0
mov qword [rcx + 0x30], 0
vmovdqu ymmword [rcx], ymm11
vmovdqu xmmword [rsp + 0x40], xmm0
vmovdqu xmmword [rsp + 0x50], xmm0
vmovdqu xmmword [rsp + 0x60], xmm0
vmovdqu xmmword [rsp + 0x70], xmm0
test r8, r8
je 0x14009ba88
lea r12, [r8 - 1]
cmp r12, 0x1e
jbe 0x14009bb83
vmovd xmm0, eax
mov rax, r8
vpbroadcastb ymm0, xmm0
vpxor ymm1, ymm0, ymmword [rdx]
shr rax, 5
vmovdqu ymmword [rsp + 0x40], ymm1
cmp rax, 2
je 0x14009b6e0
cmp r8, 0x20
je 0x14009b6f7
mov eax, 0x20
mov rdx, r13
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 0xe
jbe 0x14009b5b3
lea rcx, [rbp + rax]
vmovdqu xmm2, xmmword [rbx + rax]
vpxor xmm0, xmm2, xmmword [rcx]
vmovdqu xmmword [rcx], xmm0
mov rcx, rdx
and rcx, 0xfffffffffffffff0
add rax, rcx
and edx, 0xf
je 0x14009b6f7
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x40], dl
lea rdx, [rax + 1]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 1]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 2]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 2]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 3]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 3]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 4]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 4]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 5]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 5]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 6]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 6]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 7]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 7]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 8]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 8]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 9]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 9]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xa]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 0xa]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xb]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 0xb]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xc]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 0xc]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xd]
cmp rdx, r13
jae 0x14009b6f7
movzx ecx, byte [rbx + rax + 0xd]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xe]
cmp rdx, r13
jae 0x14009b6f7
movzx eax, byte [rbx + rax + 0xe]
xor byte [rsp + rdx + 0x40], al
jmp 0x14009b6f7
vpxor ymm0, ymm0, ymmword [rdx + 0x20]
mov r13d, 0x40
mov r12d, 0x3f
vmovdqu ymmword [rsp + 0x60], ymm0
mov r8d, 0x200
mov rdx, rbp
mov rcx, rdi
call sym.blake256_update
vpxor xmm0, xmm0, xmm0
mov eax, 0x5c
mov qword [rdi + 0xb8], 0
vmovdqu xmmword [rdi + 0xa0], xmm0
vmovd xmm0, eax
lea r9, [rdi + 0x80]
vpbroadcastb xmm0, xmm0
vmovdqu ymmword [rdi + 0x80], ymm11
mov qword [rdi + 0xb0], 0
vmovdqu xmmword [rsp + 0x40], xmm0
vmovdqu xmmword [rsp + 0x50], xmm0
vmovdqu xmmword [rsp + 0x60], xmm0
vmovdqu xmmword [rsp + 0x70], xmm0
cmp r12, 0x1e
jbe 0x14009bb25
vmovd xmm0, eax
mov rax, r13
vpbroadcastb ymm0, xmm0
vpxor ymm1, ymm0, ymmword [rbx]
shr rax, 5
vmovdqu ymmword [rsp + 0x40], ymm1
cmp rax, 2
jne 0x14009b7d0
vpxor ymm0, ymm0, ymmword [rbx + 0x20]
vmovdqu ymmword [rsp + 0x60], ymm0
mov r8d, 0x200
mov rdx, rbp
mov rcx, r9
call sym.blake256_update
nop
vmovups xmm6, xmmword [rsp + 0xc0]
vmovups xmm11, xmmword [rsp + 0xd0]
add rsp, 0xe8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
cmp r13, 0x20
je 0x14009b794
mov eax, 0x20
mov rdx, r13
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 0xe
jbe 0x14009b80c
lea rcx, [rbp + rax]
vmovdqu xmm3, xmmword [rbx + rax]
vpxor xmm0, xmm3, xmmword [rcx]
vmovdqu xmmword [rcx], xmm0
mov rcx, rdx
and rcx, 0xfffffffffffffff0
add rax, rcx
and edx, 0xf
je 0x14009b794
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x40], dl
lea rdx, [rax + 1]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 1]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 2]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 2]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 3]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 3]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 4]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 4]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 5]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 5]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 6]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 6]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 7]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 7]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 8]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 8]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 9]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 9]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xa]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 0xa]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xb]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 0xb]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xc]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 0xc]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xd]
cmp rdx, r13
jae 0x14009b794
movzx ecx, byte [rbx + rax + 0xd]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xe]
cmp rdx, r13
jae 0x14009b794
movzx eax, byte [rbx + rax + 0xe]
xor byte [rsp + rdx + 0x40], al
jmp 0x14009b794
vmovdqu ymm0, ymmword [0x1402bfc40]
shl r13, 3
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x70], 0
vmovdqu ymmword [rsp + 0x40], ymm0
vpxor xmm0, xmm0, xmm0
vmovdqu xmmword [rsp + 0x60], xmm0
cmp r13, 0x1ff
jbe 0x14009bb76
lea r12, [r13 - 0x200]
mov esi, 0x200
lea rbp, [rsp + 0x40]
shr r12, 9
add r12, 1
shl r12, 6
add r12, rdx
jmp 0x14009b9d7
mov dword [rsp + 0x70], 0x200
mov esi, 0x200
mov rdx, rbx
mov rcx, rbp
add rbx, 0x40
add esi, 0x200
call sym.blake256_compress
cmp r12, rbx
je 0x14009b9f8
mov dword [rsp + 0x70], esi
test esi, esi
jne 0x14009b9bd
mov rdx, rbx
mov rcx, rbp
add rbx, 0x40
add dword [rsp + 0x74], 1
call sym.blake256_compress
cmp r12, rbx
jne 0x14009b9b0
and r13d, 0x1ff
test r13, r13
jne 0x14009baf0
lea rbx, [rsp + 0x20]
mov r9d, 1
mov r8d, 0x81
mov rcx, rbp
mov rdx, rbx
mov r13d, 0x1c
mov r12d, 0x1b
call sym.blake256_final_h
vpxor xmm0, xmm0, xmm0
mov eax, 0x36
vmovdqu ymm11, ymmword [0x1402bfc60]
vmovdqu xmmword [rdi + 0x20], xmm0
vmovd xmm0, eax
xor eax, eax
vpbroadcastb xmm0, xmm0
mov qword [rdi + 0x38], 0
mov qword [rdi + 0x30], 0
vmovdqu ymmword [rdi], ymm11
vmovdqu xmmword [rsp + 0x40], xmm0
vmovdqu xmmword [rsp + 0x50], xmm0
vmovdqu xmmword [rsp + 0x60], xmm0
vmovdqu xmmword [rsp + 0x70], xmm0
jmp 0x14009b57e
mov r8d, 0x200
mov rdx, rbp
call sym.blake256_update
mov eax, 0x5c
mov qword [rdi + 0xb8], 0
lea r9, [rdi + 0x80]
vmovd xmm0, eax
vmovdqu ymmword [rdi + 0x80], ymm11
vpbroadcastb xmm0, xmm0
vmovdqu xmmword [rdi + 0xa0], xmm6
mov qword [rdi + 0xb0], 0
vmovdqu xmmword [rsp + 0x40], xmm0
vmovdqu xmmword [rsp + 0x50], xmm0
vmovdqu xmmword [rsp + 0x60], xmm0
vmovdqu xmmword [rsp + 0x70], xmm0
jmp 0x14009b794
mov rdx, r13
lea r8, [rsp + 0x80]
mov rax, r12
shr rdx, 3
mov r9, r8
cmp edx, 8
jae 0x14009bb52
xor ecx, ecx
test dl, 4
jne 0x14009bb46
test dl, 2
jne 0x14009bb36
and edx, 1
jne 0x14009bb2c
mov dword [rsp + 0x78], r13d
jmp 0x14009ba08
xor eax, eax
jmp 0x14009b7db
movzx eax, byte [rax + rcx]
mov byte [r9 + rcx], al
jmp 0x14009bb1b
movzx r8d, word [rax + rcx]
mov word [r9 + rcx], r8w
add rcx, 2
jmp 0x14009bb16
mov ecx, dword [rax]
mov dword [r9], ecx
mov ecx, 4
jmp 0x14009bb11
mov r10d, edx
xor eax, eax
and r10d, 0xfffffff8
mov ecx, eax
add eax, 8
mov r9, qword [r12 + rcx]
mov qword [r8 + rcx], r9
cmp eax, r10d
jb 0x14009bb5b
lea r9, [r8 + rax]
add rax, r12
jmp 0x14009bb0a
mov r12, rdx
lea rbp, [rsp + 0x40]
jmp 0x14009b9ff
xor eax, eax
jmp 0x14009b57e