Function at 0x1401b9b20
Capabilities:
Authenticate hmac

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb0
lea rsi, [rsp + 0x7f]
mov r13, rcx
mov rdi, rdx
mov rbx, r8
and rsi, 0xffffffffffffffc0
lea rbp, [rcx + 0x80]
cmp r8, 0x40
ja 0x1401ba0d8
call sym.sha256_ctx_init
mov r12d, 0x40
sub r12, rbx
test rbx, rbx
je 0x1401ba140
cmp rbx, 0x1f
jbe 0x1401ba130
mov eax, 0x36
vmovd xmm0, eax
mov rax, rbx
vpbroadcastb ymm0, xmm0
vpxor ymm1, ymm0, ymmword [rdi]
shr rax, 5
vmovdqu ymmword [rsi], ymm1
cmp rax, 2
jne 0x1401b9d1c
vpxor ymm0, ymm0, ymmword [rdi + 0x20]
vmovdqu ymmword [rsi + 0x20], ymm0
vzeroupper
lea r14, [rsi + rbx]
mov eax, r12d
movabs rcx, 0x3636363636363636
cmp r12d, 8
jb 0x1401b9cb0
mov eax, r12d
lea r8, [r14 + 8]
mov qword [r14], rcx
and r8, 0xfffffffffffffff8
mov qword [r14 + rax - 8], rcx
mov rax, r14
sub rax, r8
add eax, r12d
and eax, 0xfffffff8
cmp eax, 8
jb 0x1401b9c00
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [r8 + r9], rcx
cmp edx, eax
jb 0x1401b9bed
nop dword [rax + rax]
mov r8d, 0x40
mov rdx, rsi
mov rcx, r13
call sym.sha256_update
mov rcx, rbp
call sym.sha256_ctx_init
lea rax, [rbx - 1]
cmp rax, 0x1e
jbe 0x1401ba188
mov eax, 0x5c
vmovd xmm0, eax
mov rax, rbx
vpbroadcastb ymm0, xmm0
vpxor ymm1, ymm0, ymmword [rdi]
shr rax, 5
vmovdqu ymmword [rsi], ymm1
cmp rax, 2
jne 0x1401b9f18
vpxor ymm0, ymm0, ymmword [rdi + 0x20]
vmovdqu ymmword [rsi + 0x20], ymm0
vzeroupper
movabs rcx, 0x5c5c5c5c5c5c5c5c
mov eax, r12d
cmp r12d, 8
jae 0x1401b9ce0
and r12d, 4
jne 0x1401ba18f
test eax, eax
je 0x1401b9c88
mov byte [r14], 0x5c
test al, 2
jne 0x1401ba1b9
mov r8d, 0x40
mov rdx, rsi
mov rcx, rbp
call sym.sha256_update
nop
add rsp, 0xb0
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
test r12b, 4
jne 0x1401ba1a4
test eax, eax
je 0x1401b9c00
mov byte [r14], 0x36
test al, 2
je 0x1401b9c00
mov edx, 0x3636
mov word [r14 + rax - 2], dx
jmp 0x1401b9c00
mov eax, r12d
lea r8, [r14 + 8]
mov qword [r14], rcx
and r8, 0xfffffffffffffff8
mov qword [r14 + rax - 8], rcx
mov rax, r14
sub rax, r8
add eax, r12d
and eax, 0xfffffff8
cmp eax, 8
jb 0x1401b9c88
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [r8 + r9], rcx
cmp edx, eax
jb 0x1401b9d09
jmp 0x1401b9c88
cmp rbx, 0x20
je 0x1401ba1d1
mov eax, 0x20
vzeroupper
mov rcx, rbx
sub rcx, rax
lea rdx, [rcx - 1]
cmp rdx, 0xe
jbe 0x1401b9d69
mov edx, 0x36
vmovd xmm0, edx
mov rdx, rcx
vpbroadcastb xmm0, xmm0
vpxor xmm0, xmm0, xmmword [rdi + rax]
and rdx, 0xfffffffffffffff0
vmovdqu xmmword [rsi + rax], xmm0
add rax, rdx
and ecx, 0xf
je 0x1401b9ba9
movzx edx, byte [rdi + rax]
xor edx, 0x36
mov byte [rsi + rax], dl
lea rdx, [rax + 1]
cmp rdx, rbx
jae 0x1401b9ba9
movzx edx, byte [rdi + rax + 1]
xor edx, 0x36
mov byte [rsi + rax + 1], dl
lea rdx, [rax + 2]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 2]
xor edx, 0x36
mov byte [rsi + rax + 2], dl
lea rdx, [rax + 3]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 3]
xor edx, 0x36
mov byte [rsi + rax + 3], dl
lea rdx, [rax + 4]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 4]
xor edx, 0x36
mov byte [rsi + rax + 4], dl
lea rdx, [rax + 5]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 5]
xor edx, 0x36
mov byte [rsi + rax + 5], dl
lea rdx, [rax + 6]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 6]
xor edx, 0x36
mov byte [rsi + rax + 6], dl
lea rdx, [rax + 7]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 7]
xor edx, 0x36
mov byte [rsi + rax + 7], dl
lea rdx, [rax + 8]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 8]
xor edx, 0x36
mov byte [rsi + rax + 8], dl
lea rdx, [rax + 9]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 9]
xor edx, 0x36
mov byte [rsi + rax + 9], dl
lea rdx, [rax + 0xa]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 0xa]
xor edx, 0x36
mov byte [rsi + rax + 0xa], dl
lea rdx, [rax + 0xb]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 0xb]
xor edx, 0x36
mov byte [rsi + rax + 0xb], dl
lea rdx, [rax + 0xc]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 0xc]
xor edx, 0x36
mov byte [rsi + rax + 0xc], dl
lea rdx, [rax + 0xd]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 0xd]
xor edx, 0x36
mov byte [rsi + rax + 0xd], dl
lea rdx, [rax + 0xe]
cmp rdx, rbx
jae 0x1401b9eb9
movzx edx, byte [rdi + rax + 0xe]
xor edx, 0x36
mov byte [rsi + rax + 0xe], dl
lea r14, [rsi + rbx]
mov eax, r12d
movabs r8, 0x3636363636363636
cmp r12d, 8
jb 0x1401b9cb0
mov eax, r12d
lea rcx, [r14 + 8]
mov qword [r14], r8
and rcx, 0xfffffffffffffff8
mov qword [r14 + rax - 8], r8
mov rax, r14
sub rax, rcx
add eax, r12d
and eax, 0xfffffff8
cmp eax, 8
jb 0x1401b9c00
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [rcx + r9], r8
cmp edx, eax
jb 0x1401b9f01
jmp 0x1401b9c00
cmp rbx, 0x20
je 0x1401ba1c9
mov eax, 0x20
vzeroupper
mov rcx, rbx
sub rcx, rax
lea rdx, [rcx - 1]
cmp rdx, 0xe
jbe 0x1401b9f65
mov edx, 0x5c
vmovd xmm0, edx
mov rdx, rcx
vpbroadcastb xmm0, xmm0
vpxor xmm0, xmm0, xmmword [rdi + rax]
and rdx, 0xfffffffffffffff0
vmovdqu xmmword [rsi + rax], xmm0
add rax, rdx
and ecx, 0xf
je 0x1401b9c5b
movzx edx, byte [rdi + rax]
xor edx, 0x5c
mov byte [rsi + rax], dl
lea rdx, [rax + 1]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 1]
xor edx, 0x5c
mov byte [rsi + rax + 1], dl
lea rdx, [rax + 2]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 2]
xor edx, 0x5c
mov byte [rsi + rax + 2], dl
lea rdx, [rax + 3]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 3]
xor edx, 0x5c
mov byte [rsi + rax + 3], dl
lea rdx, [rax + 4]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 4]
xor edx, 0x5c
mov byte [rsi + rax + 4], dl
lea rdx, [rax + 5]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 5]
xor edx, 0x5c
mov byte [rsi + rax + 5], dl
lea rdx, [rax + 6]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 6]
xor edx, 0x5c
mov byte [rsi + rax + 6], dl
lea rdx, [rax + 7]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 7]
xor edx, 0x5c
mov byte [rsi + rax + 7], dl
lea rdx, [rax + 8]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 8]
xor edx, 0x5c
mov byte [rsi + rax + 8], dl
lea rdx, [rax + 9]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 9]
xor edx, 0x5c
mov byte [rsi + rax + 9], dl
lea rdx, [rax + 0xa]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 0xa]
xor edx, 0x5c
mov byte [rsi + rax + 0xa], dl
lea rdx, [rax + 0xb]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 0xb]
xor edx, 0x5c
mov byte [rsi + rax + 0xb], dl
lea rdx, [rax + 0xc]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 0xc]
xor edx, 0x5c
mov byte [rsi + rax + 0xc], dl
lea rdx, [rax + 0xd]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 0xd]
xor edx, 0x5c
mov byte [rsi + rax + 0xd], dl
lea rdx, [rax + 0xe]
cmp rdx, rbx
jae 0x1401b9c5b
movzx edx, byte [rdi + rax + 0xe]
xor edx, 0x5c
mov byte [rsi + rax + 0xe], dl
jmp 0x1401b9c5b
call sym.sha256_ctx_init
mov r8, rbx
mov rdx, rdi
mov rcx, r13
lea rdi, [rsp + 0x20]
mov ebx, 0x20
mov r12d, 0x20
call sym.sha256_update
mov rdx, rdi
mov rcx, r13
call sym.sha256_final
mov rcx, r13
call sym.sha256_ctx_init
mov eax, 0x36
vmovd xmm0, eax
vpbroadcastb ymm0, xmm0
vpxor ymm0, ymm0, ymmword [rsp + 0x20]
vmovdqu ymmword [rsi], ymm0
vzeroupper
jmp 0x1401b9ba9
xor eax, eax
jmp 0x1401b9d2e
mov eax, 0x36
mov rdx, rsi
mov rcx, r13
mov r14, rsi
vmovd xmm0, eax
mov r8d, 0x40
mov r12d, 0x40
vpbroadcastb xmm0, xmm0
vmovdqu xmmword [rsi], xmm0
vmovdqu xmmword [rsi + 0x10], xmm0
vmovdqu xmmword [rsi + 0x20], xmm0
vmovdqu xmmword [rsi + 0x30], xmm0
call sym.sha256_update
mov rcx, rbp
call sym.sha256_ctx_init
jmp 0x1401b9c5b
xor eax, eax
jmp 0x1401b9f2a
mov dword [r14], 0x5c5c5c5c
mov dword [r14 + rax - 4], 0x5c5c5c5c
jmp 0x1401b9c88
mov dword [r14], 0x36363636
mov dword [r14 + rax - 4], 0x36363636
jmp 0x1401b9c00
mov ecx, 0x5c5c
mov word [r14 + rax - 2], cx
jmp 0x1401b9c88
vzeroupper
jmp 0x1401b9c5b
vzeroupper
jmp 0x1401b9ba9