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

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xf0
vmovups xmmword [rsp + 0xe0], xmm6
mov r12, rcx
mov rbx, rdx
mov rsi, r8
cmp r8, 0x40
ja 0x1400d1340
vmovdqu ymm4, ymmword [0x1401f8860]
mov eax, 0x36
vpxor xmm6, xmm6, xmm6
mov qword [rcx + 0x38], 0
vmovd xmm0, eax
mov qword [rcx + 0x30], 0
vmovdqu xmmword [rcx + 0x20], xmm6
lea rbp, [rsp + 0x60]
vpbroadcastb ymm0, xmm0
vmovdqu ymmword [rsp + 0x60], ymm0
vmovdqu ymmword [rsp + 0x80], ymm0
vmovdqu ymmword [rsp + 0x20], ymm4
vmovdqu ymmword [rcx], ymm4
test r8, r8
je 0x1400d14a0
lea rdi, [r8 - 1]
cmp rdi, 0x1e
jbe 0x1400d1490
mov eax, 0x36
vmovd xmm0, eax
mov rax, rsi
vpbroadcastb ymm0, xmm0
vpxor ymm1, ymm0, ymmword [rbx]
shr rax, 5
vmovdqu ymmword [rsp + 0x60], ymm1
cmp rax, 2
je 0x1400d10d0
cmp rsi, 0x20
je 0x1400d156c
mov eax, 0x20
lea rdi, [rsi - 1]
mov rdx, rsi
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 0xe
jbe 0x1400d0fa2
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 0x1400d10e8
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x60], dl
lea rdx, [rax + 1]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 1]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 2]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 2]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 3]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 3]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 4]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 4]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 5]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 5]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 6]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 6]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 7]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 7]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 8]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 8]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 9]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 9]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xa]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 0xa]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xb]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 0xb]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xc]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 0xc]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xd]
cmp rdx, rsi
jae 0x1400d10e8
movzx ecx, byte [rbx + rax + 0xd]
add rax, 0xe
xor byte [rsp + rdx + 0x60], cl
cmp rax, rsi
jae 0x1400d10e8
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x60], dl
jmp 0x1400d10e8
vpxor ymm0, ymm0, ymmword [rbx + 0x20]
mov esi, 0x40
mov edi, 0x3f
vmovdqu ymmword [rsp + 0x80], ymm0
mov r8d, 0x200
mov rdx, rbp
mov rcx, r12
vzeroupper
call sym.blake256_update
vmovdqu ymm5, ymmword [rsp + 0x20]
vpxor xmm0, xmm0, xmm0
mov eax, 0x5c
vmovdqu xmmword [r12 + 0xa0], xmm0
vmovd xmm0, eax
lea r9, [r12 + 0x80]
mov qword [r12 + 0xb8], 0
vpbroadcastb ymm0, xmm0
mov qword [r12 + 0xb0], 0
vmovdqu ymmword [rsp + 0x60], ymm0
vmovdqu ymmword [rsp + 0x80], ymm0
vmovdqu ymmword [r12 + 0x80], ymm5
cmp rdi, 0x1e
jbe 0x1400d1555
vpxor ymm1, ymm0, ymmword [rbx]
mov rax, rsi
shr rax, 5
vmovdqu ymmword [rsp + 0x60], ymm1
cmp rax, 2
jne 0x1400d11c0
vpxor ymm0, ymm0, ymmword [rbx + 0x20]
vmovdqu ymmword [rsp + 0x80], ymm0
mov r8d, 0x200
mov rdx, rbp
mov rcx, r9
vzeroupper
call sym.blake256_update
nop
vmovups xmm6, xmmword [rsp + 0xe0]
add rsp, 0xf0
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
cmp rsi, 0x20
je 0x1400d1186
mov eax, 0x20
mov rdx, rsi
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 0xe
jbe 0x1400d11fc
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 0x1400d1186
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x60], dl
lea rdx, [rax + 1]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 1]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 2]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 2]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 3]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 3]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 4]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 4]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 5]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 5]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 6]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 6]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 7]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 7]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 8]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 8]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 9]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 9]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xa]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 0xa]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xb]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 0xb]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xc]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 0xc]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xd]
cmp rdx, rsi
jae 0x1400d1186
movzx ecx, byte [rbx + rax + 0xd]
add rax, 0xe
xor byte [rsp + rdx + 0x60], cl
cmp rax, rsi
jae 0x1400d1186
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x60], dl
jmp 0x1400d1186
vmovdqu ymm6, ymmword [0x1401f8860]
vpxor xmm0, xmm0, xmm0
lea rax, [r8*8]
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x90], 0
vmovdqu xmmword [rsp + 0x80], xmm0
vmovdqu ymmword [rsp + 0x20], ymm6
vmovdqu ymmword [rsp + 0x60], ymm6
cmp rax, 0x1ff
jbe 0x1400d155c
lea r13, [rax - 0x200]
mov edi, 0x200
lea rbp, [rsp + 0x60]
mov r14, r13
shr r14, 9
lea rsi, [r14 + 1]
shl rsi, 6
add rsi, rdx
vzeroupper
jmp 0x1400d13ea
mov dword [rsp + 0x90], 0x200
mov edi, 0x200
mov rdx, rbx
mov rcx, rbp
add rbx, 0x40
add edi, 0x200
call sym.blake256_compress
cmp rsi, rbx
je 0x1400d1410
mov dword [rsp + 0x90], edi
test edi, edi
jne 0x1400d13d0
mov rdx, rbx
mov rcx, rbp
add rbx, 0x40
inc dword [rsp + 0x94]
call sym.blake256_compress
cmp rsi, rbx
jne 0x1400d13c0
shl r14, 9
mov rax, r13
sub rax, r14
test rax, rax
jne 0x1400d1510
lea rbx, [rsp + 0x40]
mov r9d, 1
mov r8d, 0x81
mov rcx, rbp
mov rdx, rbx
mov esi, 0x20
call sym.blake256_final_h
vmovdqu ymm5, ymmword [rsp + 0x20]
vpxor xmm0, xmm0, xmm0
mov eax, 0x36
vmovdqu xmmword [r12 + 0x20], xmm0
vmovd xmm0, eax
mov qword [r12 + 0x38], 0
mov qword [r12 + 0x30], 0
vpbroadcastb ymm0, xmm0
vmovdqu ymmword [rsp + 0x80], ymm0
vmovdqu ymmword [r12], ymm5
jmp 0x1400d0f31
xor eax, eax
jmp 0x1400d0f6d
mov r8d, 0x200
mov rdx, rbp
vzeroupper
call sym.blake256_update
vmovdqu ymm5, ymmword [rsp + 0x20]
mov eax, 0x5c
mov qword [r12 + 0xb8], 0
vmovd xmm0, eax
mov qword [r12 + 0xb0], 0
vmovdqu xmmword [r12 + 0xa0], xmm6
lea r9, [r12 + 0x80]
vpbroadcastb ymm0, xmm0
vmovdqu ymmword [rsp + 0x60], ymm0
vmovdqu ymmword [r12 + 0x80], ymm5
vmovdqu ymmword [rsp + 0x80], ymm0
jmp 0x1400d1186
mov rdx, rax
lea rdi, [rsp + 0xa0]
shr rdx, 3
cmp edx, 4
jb 0x1400d152b
mov ecx, edx
shr ecx, 2
rep movsd dword [rdi], dword [rsi]
xor ecx, ecx
test dl, 2
je 0x1400d153d
movzx ecx, word [rsi]
mov word [rdi], cx
mov ecx, 2
and edx, 1
je 0x1400d1549
movzx edx, byte [rsi + rcx]
mov byte [rdi + rcx], dl
mov dword [rsp + 0x98], eax
jmp 0x1400d1423
xor eax, eax
jmp 0x1400d11cb
mov rsi, rdx
lea rbp, [rsp + 0x60]
vzeroupper
jmp 0x1400d141a
mov edi, 0x1f
jmp 0x1400d10e8