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

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xdc0]
sub rsp, 0xec0
mov rax, qword [0x1403291e8]
xor rax, rsp
mov qword [rbp + 0xdb0], rax
mov ebx, r9d
mov r15, r8
mov dword [rsp + 0x20], edx
mov qword [rsp + 0x28], rcx
mov r13, qword [rbp + 0xe28]
mov rax, qword [rbp + 0xe30]
mov qword [rsp + 0x30], rax
test r13, r13
jne 0x1400c9eee
xor al, al
jmp 0x1400ca13e
mov esi, 0x40
mov r14d, dword [rbp + 0xe20]
lea eax, [r14 - 2]
mov ecx, 0x80
cmp eax, 1
cmovbe esi, ecx
mov ecx, r14d
call fcn.1400cb5b0
movsxd r12, eax
cmp ebx, esi
jle 0x1400c9f36
lea r9, [rbp + 0xc70]
mov r8d, r14d
mov edx, ebx
mov rcx, r15
call fcn.1400ca600
lea r15, [rbp + 0xc70]
mov ebx, r12d
mov edi, esi
mov r8d, esi
xor edx, edx
lea rcx, [rbp + 0xb50]
call sub.VCRUNTIME140.dll_memset
mov r8d, esi
xor edx, edx
lea rcx, [rbp + 0xbe0]
call sub.VCRUNTIME140.dll_memset
mov eax, esi
cmp ebx, esi
cmovle eax, ebx
movsxd rbx, eax
mov r8, rbx
mov rdx, r15
lea rcx, [rbp + 0xb50]
call sub.VCRUNTIME140.dll_memcpy
mov r8, rbx
mov rdx, r15
lea rcx, [rbp + 0xbe0]
call sub.VCRUNTIME140.dll_memcpy
xor ecx, ecx
mov eax, ecx
movdqa xmm2, xmmword [str.6666666666666666_sha3]
movdqa xmm3, xmmword [0x140245ae0]
nop dword [rax]
movdqu xmm0, xmmword [rbp + rax + 0xb50]
movdqa xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rbp + rax + 0xb50], xmm1
movdqu xmm0, xmmword [rbp + rax + 0xbe0]
pxor xmm0, xmm3
movdqu xmmword [rbp + rax + 0xbe0], xmm0
movdqu xmm0, xmmword [rbp + rax + 0xb60]
movdqa xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rbp + rax + 0xb60], xmm1
movdqu xmm0, xmmword [rbp + rax + 0xbf0]
pxor xmm0, xmm3
movdqu xmmword [rbp + rax + 0xbf0], xmm0
movdqu xmm0, xmmword [rbp + rax + 0xb70]
movdqa xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rbp + rax + 0xb70], xmm1
movdqu xmm0, xmmword [rbp + rax + 0xc00]
movdqa xmm1, xmm3
pxor xmm1, xmm0
movdqu xmmword [rbp + rax + 0xc00], xmm1
movdqu xmm0, xmmword [rbp + rax + 0xb80]
movdqa xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rbp + rax + 0xb80], xmm1
movdqu xmm0, xmmword [rbp + rax + 0xc10]
pxor xmm0, xmm3
movdqu xmmword [rbp + rax + 0xc10], xmm0
add ecx, 0x40
add rax, 0x40
cmp rax, rdi
jl 0x1400c9fa0
movsxd rax, ecx
cmp rax, rdi
jge 0x1400ca098
nop dword [rax]
xor byte [rbp + rax + 0xb50], 0x36
xor byte [rbp + rax + 0xbe0], 0x5c
inc rax
cmp rax, rdi
jl 0x1400ca080
lea rcx, [rsp + 0x40]
call fcn.14008c970
nop
mov dword [rbp + 0xb48], 2
lea rax, [rbp + 0xb50]
mov qword [rsp + 0x48], rax
mov dword [rbp + 0x748], esi
mov rax, qword [rsp + 0x28]
mov qword [rsp + 0x50], rax
mov eax, dword [rsp + 0x20]
mov dword [rbp + 0x74c], eax
mov r9, qword [rsp + 0x30]
lea r8, [rbp + 0xcb0]
mov edx, r14d
lea rcx, [rsp + 0x40]
call fcn.1400ca960
mov r8, rdi
lea rdx, [rbp + 0xbe0]
lea rcx, [rbp + 0xcf0]
call sub.VCRUNTIME140.dll_memcpy
mov r8, r12
lea rcx, [rbp + 0xcf0]
add rcx, rdi
lea rdx, [rbp + 0xcb0]
call sub.VCRUNTIME140.dll_memcpy
lea edx, [r12 + rsi]
mov r9, r13
mov r8d, r14d
lea rcx, [rbp + 0xcf0]
call fcn.1400ca600
nop
lea rcx, [rsp + 0x40]
call fcn.14008cb60
mov al, 1
mov rcx, qword [rbp + 0xdb0]
xor rcx, rsp
call fcn.1401feb70
mov rbx, qword [rsp + 0xf00]
add rsp, 0xec0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret