Function at 0x140164050
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x128
mov rdi, r9
mov r14, r8
mov r15, rdx
mov rsi, rcx
mov rax, qword [0x1403ac028]
xor rax, rsp
mov qword [rsp + 0x120], rax
test r9, r9
mov rax, qword [rcx]
cmove rdi, rax
test rdx, rdx
jne 0x140164096
cmp rdi, rax
je 0x1401642be
movaps xmm0, xmmword [0x14026fe30]
movaps xmmword [rsp + 0x110], xmm0
movaps xmmword [rsp + 0x100], xmm0
movaps xmmword [rsp + 0xf0], xmm0
movaps xmmword [rsp + 0xe0], xmm0
movaps xmmword [rsp + 0xd0], xmm0
movaps xmmword [rsp + 0xc0], xmm0
movaps xmmword [rsp + 0xb0], xmm0
movaps xmmword [rsp + 0xa0], xmm0
movaps xmmword [rsp + 0x90], xmm0
movaps xmmword [rsp + 0x80], xmm0
movaps xmmword [rsp + 0x70], xmm0
movaps xmmword [rsp + 0x60], xmm0
movaps xmmword [rsp + 0x50], xmm0
movaps xmmword [rsp + 0x40], xmm0
movaps xmmword [rsp + 0x30], xmm0
movaps xmmword [rsp + 0x20], xmm0
mov ebx, dword [rdi + 0x28]
cmp rbx, r14
jae 0x140164192
cmp qword [rsi + 8], rdi
je 0x14016413e
mov ecx, dword [rdi + 0x2c]
call fcn.14016e6b0
test rax, rax
je 0x1401642d2
mov r12, rax
mov rcx, qword [rsi + 0x10]
call fcn.14016e710
mov qword [rsi + 0x10], r12
mov qword [rsi + 8], rdi
lea r12, [rsi + 8]
mov rax, qword [rdi + 0x10]
mov rcx, r12
call qword [case.0x1400f45b0.0]
mov rax, qword [rsi + 8]
mov rax, qword [rax + 0x18]
mov rcx, r12
mov rdx, r15
mov r8, r14
call qword [case.0x1400f45b0.0]
mov rax, qword [rsi + 8]
mov rax, qword [rax + 0x20]
lea rdx, [rsp + 0x20]
mov rcx, r12
call qword [case.0x1400f45b0.0]
mov rax, qword [rsi + 8]
mov rcx, qword [rsi + 0x10]
mov r14d, dword [rax + 4]
mov edx, dword [rax + 0x2c]
call fcn.14016e750
jmp 0x1401641a7
test r14, r14
je 0x1401641a7
lea rcx, [rsp + 0x20]
mov rdx, r15
mov r8, r14
call fcn.140204f20
cmp ebx, r14d
je 0x1401641c4
mov eax, r14d
mov r8, rbx
sub r8, rax
lea rcx, [rsp + rax]
add rcx, 0x20
xor edx, edx
call fcn.1402055c0
test rbx, rbx
je 0x1401641e7
xor eax, eax
nop dword [rax + rax]
movzx ecx, byte [rsp + rax + 0x20]
xor cl, 0x36
mov byte [rsp + rax + 0xa0], cl
inc rax
cmp rbx, rax
jne 0x1401641d0
cmp qword [rsi + 0x28], rdi
je 0x140164212
mov ecx, dword [rdi + 0x2c]
call fcn.14016e6b0
test rax, rax
je 0x1401642d2
mov r14, rax
mov rcx, qword [rsi + 0x30]
call fcn.14016e710
mov qword [rsi + 0x30], r14
mov qword [rsi + 0x28], rdi
lea r14, [rsi + 0x28]
mov rax, qword [rdi + 0x10]
mov rcx, r14
call qword [case.0x1400f45b0.0]
mov rax, qword [r14]
mov rax, qword [rax + 0x18]
lea rdx, [rsp + 0xa0]
mov rcx, r14
mov r8, rbx
call qword [case.0x1400f45b0.0]
test ebx, ebx
je 0x140164267
xor eax, eax
nop word cs:[rax + rax]
movzx ecx, byte [rsp + rax + 0x20]
xor cl, 0x5c
mov byte [rsp + rax + 0xa0], cl
inc rax
cmp rbx, rax
jne 0x140164250
cmp qword [rsi + 0x48], rdi
je 0x14016428e
mov ecx, dword [rdi + 0x2c]
call fcn.14016e6b0
test rax, rax
je 0x1401642d2
mov r14, rax
mov rcx, qword [rsi + 0x50]
call fcn.14016e710
mov qword [rsi + 0x50], r14
mov qword [rsi + 0x48], rdi
lea r14, [rsi + 0x48]
mov rax, qword [rdi + 0x10]
mov rcx, r14
call qword [case.0x1400f45b0.0]
mov rax, qword [rsi + 0x48]
mov rax, qword [rax + 0x18]
lea rdx, [rsp + 0xa0]
mov rcx, r14
mov r8, rbx
call qword [case.0x1400f45b0.0]
mov qword [rsi], rdi
lea rdx, [rsi + 0x28]
add rsi, 8
mov rcx, rsi
call fcn.140163b90
mov esi, eax
jmp 0x1401642d4
xor esi, esi
mov rcx, qword [rsp + 0x120]
xor rcx, rsp
call fcn.140203460
mov eax, esi
add rsp, 0x128
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret