Function at 0x140161c30
Capabilities:
Authenticate hmac

Disassembly:
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
lea rsi, [rsp + 0x7f]
mov rbp, rcx
mov rdi, rdx
mov rbx, r8
and rsi, 0xffffffffffffffc0
cmp r8, 0x40
ja 0x140161fe8
call fcn.1401397c0
mov r12d, 0x40
sub r12, rbx
test rbx, rbx
je 0x1401621f0
cmp rbx, 0x1f
jbe 0x140162040
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 0x140162243
vpxor ymm0, ymm0, ymmword [rdi + 0x20]
mov ebx, 0x40
vmovdqu ymmword [rsi + 0x20], ymm0
vzeroupper
lea r13, [rsi + rbx]
mov eax, r12d
movabs r8, 0x3636363636363636
cmp r12d, 8
jae 0x140161de0
test r12b, 4
jne 0x14016227c
test eax, eax
je 0x140161ceb
mov byte [r13], 0x36
test al, 2
jne 0x14016226c
mov rcx, rbp
mov r8d, 0x40
mov rdx, rsi
sub rbp, 0xffffffffffffff80
call fcn.140139810
mov rcx, rbp
call fcn.1401397c0
lea rax, [rbx - 1]
cmp rax, 0x1e
jbe 0x14016223c
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 0x140161e28
vpxor ymm0, ymm0, ymmword [rdi + 0x20]
vmovdqu ymmword [rsi + 0x20], ymm0
vzeroupper
movabs rcx, 0x5c5c5c5c5c5c5c5c
mov eax, r12d
cmp r12d, 8
jae 0x140161da0
and r12d, 4
jne 0x140162256
test eax, eax
je 0x140161d78
mov byte [r13], 0x5c
test al, 2
jne 0x140162292
mov r8d, 0x40
mov rdx, rsi
mov rcx, rbp
call fcn.140139810
nop
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
mov eax, r12d
lea r8, [r13 + 8]
mov qword [r13], rcx
and r8, 0xfffffffffffffff8
mov qword [r13 + rax - 8], rcx
mov rax, r13
sub rax, r8
add eax, r12d
and eax, 0xfffffff8
cmp eax, 8
jb 0x140161d78
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [r8 + r9], rcx
cmp edx, eax
jb 0x140161dca
jmp 0x140161d78
mov eax, r12d
lea rcx, [r13 + 8]
mov qword [r13], r8
and rcx, 0xfffffffffffffff8
mov qword [r13 + rax - 8], r8
mov rax, r13
sub rax, rcx
add eax, r12d
and eax, 0xfffffff8
cmp eax, 8
jb 0x140161ceb
and eax, 0xfffffff8
xor edx, edx
mov r9d, edx
add edx, 8
mov qword [rcx + r9], r8
cmp edx, eax
jb 0x140161e0e
jmp 0x140161ceb
cmp rbx, 0x20
je 0x1401622a2
mov eax, 0x20
vzeroupper
mov rcx, rbx
sub rcx, rax
lea rdx, [rcx - 1]
cmp rdx, 0xe
jbe 0x140161e75
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 0x140161d4a
movzx edx, byte [rdi + rax]
xor edx, 0x5c
mov byte [rsi + rax], dl
lea rdx, [rax + 1]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 1]
xor edx, 0x5c
mov byte [rsi + rax + 1], dl
lea rdx, [rax + 2]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 2]
xor edx, 0x5c
mov byte [rsi + rax + 2], dl
lea rdx, [rax + 3]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 3]
xor edx, 0x5c
mov byte [rsi + rax + 3], dl
lea rdx, [rax + 4]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 4]
xor edx, 0x5c
mov byte [rsi + rax + 4], dl
lea rdx, [rax + 5]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 5]
xor edx, 0x5c
mov byte [rsi + rax + 5], dl
lea rdx, [rax + 6]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 6]
xor edx, 0x5c
mov byte [rsi + rax + 6], dl
lea rdx, [rax + 7]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 7]
xor edx, 0x5c
mov byte [rsi + rax + 7], dl
lea rdx, [rax + 8]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 8]
xor edx, 0x5c
mov byte [rsi + rax + 8], dl
lea rdx, [rax + 9]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 9]
xor edx, 0x5c
mov byte [rsi + rax + 9], dl
lea rdx, [rax + 0xa]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 0xa]
xor edx, 0x5c
mov byte [rsi + rax + 0xa], dl
lea rdx, [rax + 0xb]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 0xb]
xor edx, 0x5c
mov byte [rsi + rax + 0xb], dl
lea rdx, [rax + 0xc]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 0xc]
xor edx, 0x5c
mov byte [rsi + rax + 0xc], dl
lea rdx, [rax + 0xd]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 0xd]
xor edx, 0x5c
mov byte [rsi + rax + 0xd], dl
lea rdx, [rax + 0xe]
cmp rdx, rbx
jae 0x140161d4a
movzx edx, byte [rdi + rax + 0xe]
xor edx, 0x5c
mov byte [rsi + rax + 0xe], dl
jmp 0x140161d4a
call fcn.1401397c0
mov r8, rbx
mov rdx, rdi
mov rcx, rbp
lea rdi, [rsp + 0x20]
mov ebx, 0x20
mov r12d, 0x20
call fcn.140139810
mov rdx, rdi
mov rcx, rbp
call fcn.140139a10
mov rcx, rbp
call fcn.1401397c0
mov eax, 0x36
vmovd xmm0, eax
vpbroadcastb ymm0, xmm0
vpxor ymm0, ymm0, ymmword [rsp + 0x20]
vmovdqu ymmword [rsi], ymm0
vzeroupper
jmp 0x140161cb5
xor eax, eax
mov rcx, rbx
sub rcx, rax
lea rdx, [rcx - 1]
cmp rdx, 0xe
jbe 0x14016207d
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 0x140161cb5
movzx edx, byte [rdi + rax]
xor edx, 0x36
mov byte [rsi + rax], dl
lea rdx, [rax + 1]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 1]
xor edx, 0x36
mov byte [rsi + rax + 1], dl
lea rdx, [rax + 2]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 2]
xor edx, 0x36
mov byte [rsi + rax + 2], dl
lea rdx, [rax + 3]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 3]
xor edx, 0x36
mov byte [rsi + rax + 3], dl
lea rdx, [rax + 4]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 4]
xor edx, 0x36
mov byte [rsi + rax + 4], dl
lea rdx, [rax + 5]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 5]
xor edx, 0x36
mov byte [rsi + rax + 5], dl
lea rdx, [rax + 6]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 6]
xor edx, 0x36
mov byte [rsi + rax + 6], dl
lea rdx, [rax + 7]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 7]
xor edx, 0x36
mov byte [rsi + rax + 7], dl
lea rdx, [rax + 8]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 8]
xor edx, 0x36
mov byte [rsi + rax + 8], dl
lea rdx, [rax + 9]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 9]
xor edx, 0x36
mov byte [rsi + rax + 9], dl
lea rdx, [rax + 0xa]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 0xa]
xor edx, 0x36
mov byte [rsi + rax + 0xa], dl
lea rdx, [rax + 0xb]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 0xb]
xor edx, 0x36
mov byte [rsi + rax + 0xb], dl
lea rdx, [rax + 0xc]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 0xc]
xor edx, 0x36
mov byte [rsi + rax + 0xc], dl
lea rdx, [rax + 0xd]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 0xd]
xor edx, 0x36
mov byte [rsi + rax + 0xd], dl
lea rdx, [rax + 0xe]
cmp rdx, rbx
jae 0x140161cb5
movzx edx, byte [rdi + rax + 0xe]
xor edx, 0x36
mov byte [rsi + rax + 0xe], dl
jmp 0x140161cb5
mov eax, 0x36
mov rcx, rbp
mov rdx, rsi
sub rbp, 0xffffffffffffff80
vmovd xmm0, eax
mov r8d, 0x40
mov r13, rsi
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 fcn.140139810
mov rcx, rbp
call fcn.1401397c0
jmp 0x140161d4a
xor eax, eax
jmp 0x140161e3a
cmp rbx, 0x20
je 0x1401622aa
mov eax, 0x20
vzeroupper
jmp 0x140162042
mov dword [r13], 0x5c5c5c5c
mov dword [r13 + rax - 4], 0x5c5c5c5c
jmp 0x140161d78
mov ecx, 0x3636
mov word [r13 + rax - 2], cx
jmp 0x140161ceb
mov dword [r13], 0x36363636
mov dword [r13 + rax - 4], 0x36363636
jmp 0x140161ceb
mov edx, 0x5c5c
mov word [r13 + rax - 2], dx
jmp 0x140161d78
vzeroupper
jmp 0x140161d4a
vzeroupper
jmp 0x140161cb5