Function at 0x1400d1580
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 0x1400d1a00
vmovdqu ymm1, ymmword [0x1401f8880]
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 [rcx], ymm1
test r8, r8
je 0x1400d1b50
lea rdi, [r8 - 1]
cmp rdi, 0x1e
jbe 0x1400d1c2c
vpxor ymm2, ymm0, ymmword [rdx]
mov rax, r8
shr rax, 5
vmovdqu ymmword [rsp + 0x60], ymm2
cmp rax, 2
je 0x1400d1790
cmp r8, 0x20
je 0x1400d17a8
mov eax, 0x20
mov rdx, rsi
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 0xe
jbe 0x1400d166a
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 0x1400d17a8
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x60], dl
lea rdx, [rax + 1]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 1]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 2]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 2]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 3]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 3]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 4]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 4]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 5]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 5]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 6]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 6]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 7]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 7]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 8]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 8]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 9]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 9]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xa]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 0xa]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xb]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 0xb]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xc]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 0xc]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xd]
cmp rdx, rsi
jae 0x1400d17a8
movzx ecx, byte [rbx + rax + 0xd]
add rax, 0xe
xor byte [rsp + rdx + 0x60], cl
cmp rax, rsi
jae 0x1400d17a8
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x60], dl
jmp 0x1400d17a8
vpxor ymm0, ymm0, ymmword [rdx + 0x20]
mov esi, 0x40
mov edi, 0x3f
vmovdqu ymmword [rsp + 0x80], ymm0
vmovdqu ymmword [rsp + 0x20], ymm1
mov r8d, 0x200
mov rdx, rbp
mov rcx, r12
vzeroupper
call sym.blake256_update
vpxor xmm0, xmm0, xmm0
mov eax, 0x5c
vmovdqu ymm1, ymmword [rsp + 0x20]
vmovdqu xmmword [r12 + 0xa0], xmm0
vmovd xmm0, eax
lea r9, [r12 + 0x80]
vpbroadcastb ymm0, xmm0
mov qword [r12 + 0xb8], 0
mov qword [r12 + 0xb0], 0
vmovdqu ymmword [rsp + 0x60], ymm0
vmovdqu ymmword [rsp + 0x80], ymm0
vmovdqu ymmword [r12 + 0x80], ymm1
cmp rdi, 0x1e
jbe 0x1400d1c15
vpxor ymm1, ymm0, ymmword [rbx]
mov rax, rsi
shr rax, 5
vmovdqu ymmword [rsp + 0x60], ymm1
cmp rax, 2
jne 0x1400d1880
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 0x1400d184c
mov eax, 0x20
mov rdx, rsi
sub rdx, rax
lea rcx, [rdx - 1]
cmp rcx, 0xe
jbe 0x1400d18bc
lea rcx, [rbp + rax]
vmovdqu xmm4, xmmword [rbx + rax]
vpxor xmm0, xmm4, xmmword [rcx]
vmovdqu xmmword [rcx], xmm0
mov rcx, rdx
and rcx, 0xfffffffffffffff0
add rax, rcx
and edx, 0xf
je 0x1400d184c
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x60], dl
lea rdx, [rax + 1]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 1]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 2]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 2]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 3]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 3]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 4]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 4]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 5]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 5]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 6]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 6]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 7]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 7]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 8]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 8]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 9]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 9]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xa]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 0xa]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xb]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 0xb]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xc]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 0xc]
xor byte [rsp + rdx + 0x60], cl
lea rdx, [rax + 0xd]
cmp rdx, rsi
jae 0x1400d184c
movzx ecx, byte [rbx + rax + 0xd]
add rax, 0xe
xor byte [rsp + rdx + 0x60], cl
cmp rax, rsi
jae 0x1400d184c
movzx edx, byte [rbx + rax]
xor byte [rsp + rax + 0x60], dl
jmp 0x1400d184c
vmovdqu ymm0, ymmword [0x1401f8860]
lea rax, [r8*8]
mov qword [rsp + 0x98], 0
mov qword [rsp + 0x90], 0
vmovdqu ymmword [rsp + 0x60], ymm0
vpxor xmm0, xmm0, xmm0
vmovdqu xmmword [rsp + 0x80], xmm0
cmp rax, 0x1ff
jbe 0x1400d1c1c
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 0x1400d1a9a
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 0x1400d1ac0
mov dword [rsp + 0x90], edi
test edi, edi
jne 0x1400d1a80
mov rdx, rbx
mov rcx, rbp
add rbx, 0x40
inc dword [rsp + 0x94]
call sym.blake256_compress
cmp rsi, rbx
jne 0x1400d1a70
shl r14, 9
mov rax, r13
sub rax, r14
test rax, rax
jne 0x1400d1bd0
lea rbx, [rsp + 0x40]
mov r9d, 1
mov r8d, 0x81
mov rcx, rbp
mov rdx, rbx
mov esi, 0x1c
mov edi, 0x1b
call sym.blake256_final_h
vmovdqu ymm1, ymmword [0x1401f8880]
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
xor eax, eax
vmovdqu ymmword [rsp + 0x60], ymm0
vmovdqu ymmword [rsp + 0x80], ymm0
vmovdqu ymmword [r12], ymm1
jmp 0x1400d1635
vmovdqu ymmword [rsp + 0x20], ymm1
mov r8d, 0x200
mov rdx, rbp
vzeroupper
call sym.blake256_update
mov eax, 0x5c
mov qword [r12 + 0xb8], 0
vmovdqu ymm1, ymmword [rsp + 0x20]
vmovd xmm0, eax
mov qword [r12 + 0xb0], 0
vmovdqu xmmword [r12 + 0xa0], xmm6
vpbroadcastb ymm0, xmm0
lea r9, [r12 + 0x80]
vmovdqu ymmword [rsp + 0x60], ymm0
vmovdqu ymmword [r12 + 0x80], ymm1
vmovdqu ymmword [rsp + 0x80], ymm0
jmp 0x1400d184c
mov rdx, rax
lea rdi, [rsp + 0xa0]
shr rdx, 3
cmp edx, 4
jb 0x1400d1beb
mov ecx, edx
shr ecx, 2
rep movsd dword [rdi], dword [rsi]
xor ecx, ecx
test dl, 2
je 0x1400d1bfd
movzx ecx, word [rsi]
mov word [rdi], cx
mov ecx, 2
and edx, 1
je 0x1400d1c09
movzx edx, byte [rsi + rcx]
mov byte [rdi + rcx], dl
mov dword [rsp + 0x98], eax
jmp 0x1400d1ad3
xor eax, eax
jmp 0x1400d188b
mov rsi, rdx
lea rbp, [rsp + 0x60]
vzeroupper
jmp 0x1400d1aca
xor eax, eax
jmp 0x1400d1635