Function at 0x14009add0
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
vmovdqu ymm11, ymmword [0x1402bfc40]
mov rdi, rcx
mov rbx, rdx
mov r13, r8
cmp r8, 0x40
ja 0x14009b280
mov eax, 0x36
vpxor xmm6, xmm6, xmm6
vmovdqu ymmword [rcx], ymm11
lea rbp, [rsp + 0x40]
vmovd xmm0, eax
mov qword [rcx + 0x38], 0
vpbroadcastb xmm0, xmm0
mov qword [rcx + 0x30], 0
vmovdqu xmmword [rcx + 0x20], xmm6
vmovdqu xmmword [rsp + 0x40], xmm0
vmovdqu xmmword [rsp + 0x50], xmm0
vmovdqu xmmword [rsp + 0x60], xmm0
vmovdqu xmmword [rsp + 0x70], xmm0
test r8, r8
je 0x14009b3a0
lea r12, [r8 - 1]
cmp r12, 0x1e
jbe 0x14009b390
mov eax, 0x36
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
je 0x14009b010
cmp r13, 0x20
je 0x14009b4a3
mov eax, 0x20
lea r12, [r13 - 1]
mov rdx, r13
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 0xe
jbe 0x14009aedc
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 0x14009b027
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x40], dl
lea rdx, [rax + 1]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 1]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 2]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 2]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 3]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 3]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 4]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 4]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 5]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 5]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 6]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 6]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 7]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 7]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 8]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 8]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 9]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 9]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xa]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 0xa]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xb]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 0xb]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xc]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 0xc]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xd]
cmp rdx, r13
jae 0x14009b027
movzx ecx, byte [rbx + rax + 0xd]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xe]
cmp rdx, r13
jae 0x14009b027
movzx eax, byte [rbx + rax + 0xe]
xor byte [rsp + rdx + 0x40], al
jmp 0x14009b027
vpxor ymm0, ymm0, ymmword [rbx + 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 0x14009b445
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 0x14009b100
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 0x14009b0c4
mov eax, 0x20
mov rdx, r13
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 0xe
jbe 0x14009b13c
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 0x14009b0c4
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x40], dl
lea rdx, [rax + 1]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 1]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 2]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 2]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 3]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 3]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 4]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 4]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 5]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 5]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 6]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 6]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 7]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 7]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 8]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 8]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 9]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 9]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xa]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 0xa]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xb]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 0xb]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xc]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 0xc]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xd]
cmp rdx, r13
jae 0x14009b0c4
movzx ecx, byte [rbx + rax + 0xd]
xor byte [rsp + rdx + 0x40], cl
lea rdx, [rax + 0xe]
cmp rdx, r13
jae 0x14009b0c4
movzx eax, byte [rbx + rax + 0xe]
xor byte [rsp + rdx + 0x40], al
jmp 0x14009b0c4
vpxor xmm0, xmm0, xmm0
shl r13, 3
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x70], 0
vmovdqu ymmword [rsp + 0x40], ymm11
vmovdqu xmmword [rsp + 0x60], xmm0
cmp r13, 0x1ff
jbe 0x14009b496
lea r12, [r13 - 0x200]
mov esi, 0x200
lea rbp, [rsp + 0x40]
shr r12, 9
add r12, 1
shl r12, 6
add r12, rdx
jmp 0x14009b2ff
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 0x14009b320
mov dword [rsp + 0x70], esi
test esi, esi
jne 0x14009b2e5
mov rdx, rbx
mov rcx, rbp
add rbx, 0x40
add dword [rsp + 0x74], 1
call sym.blake256_compress
cmp r12, rbx
jne 0x14009b2d8
and r13d, 0x1ff
test r13, r13
jne 0x14009b410
lea rbx, [rsp + 0x20]
mov r9d, 1
mov r8d, 0x81
mov rcx, rbp
mov rdx, rbx
mov r13d, 0x20
call sym.blake256_final_h
vpxor xmm0, xmm0, xmm0
mov eax, 0x36
mov qword [rdi + 0x38], 0
vmovdqu xmmword [rdi + 0x20], xmm0
vmovd xmm0, eax
vpbroadcastb xmm0, xmm0
mov qword [rdi + 0x30], 0
vmovdqu ymmword [rdi], ymm11
vmovdqu xmmword [rsp + 0x60], xmm0
vmovdqu xmmword [rsp + 0x70], xmm0
jmp 0x14009ae6b
xor eax, eax
jmp 0x14009aea7
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 0x14009b0c4
mov rdx, r13
lea r8, [rsp + 0x80]
mov rax, r12
shr rdx, 3
mov r9, r8
cmp edx, 8
jae 0x14009b472
xor ecx, ecx
test dl, 4
jne 0x14009b466
test dl, 2
jne 0x14009b456
and edx, 1
jne 0x14009b44c
mov dword [rsp + 0x78], r13d
jmp 0x14009b330
xor eax, eax
jmp 0x14009b10b
movzx eax, byte [rax + rcx]
mov byte [r9 + rcx], al
jmp 0x14009b43b
movzx r8d, word [rax + rcx]
mov word [r9 + rcx], r8w
add rcx, 2
jmp 0x14009b436
mov ecx, dword [rax]
mov dword [r9], ecx
mov ecx, 4
jmp 0x14009b431
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 0x14009b47b
lea r9, [r8 + rax]
add rax, r12
jmp 0x14009b42a
mov r12, rdx
lea rbp, [rsp + 0x40]
jmp 0x14009b327
mov r12d, 0x1f
jmp 0x14009b027