Function at 0x14009be40
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov rsi, rcx
mov rax, qword [rcx + 0x10]
test rax, rax
je 0x14009c0b8
mov rbx, qword [rsi + 8]
mov rcx, qword [rsi + 0x38]
shr rcx, 3
cmp rcx, rax
jbe 0x14009be95
mov r13, qword [rbx]
cmp r13, rbx
je 0x14009c0b8
mov r8, qword [r13 + 0x20]
cmp qword [r13 + 0x28], 0x10
jb 0x14009bf12
mov rax, qword [r13 + 0x10]
jmp 0x14009bf16
mov rax, qword [rbx + 8]
mov qword [rax], 0
mov rdi, qword [rbx]
test rdi, rdi
je 0x14009bed1
nop dword [rax + rax]
mov rbx, qword [rdi]
lea rcx, [rdi + 0x10]
call fcn.14009c820
mov edx, 0x50
mov rcx, rdi
call fcn.1400cd44c
mov rdi, rbx
test rbx, rbx
jne 0x14009beb0
mov rax, qword [rsi + 8]
mov qword [rax], rax
mov rax, qword [rsi + 8]
mov qword [rax + 8], rax
mov qword [rsi + 0x10], 0
mov rdx, qword [rsi + 0x18]
mov rax, qword [rsi + 0x20]
cmp rdx, rax
je 0x14009c0b8
mov rcx, qword [rsi + 8]
mov r9, rax
sub r9, rdx
add r9, 0xfffffffffffffff8
cmp r9, 0x18
jae 0x14009bf4b
mov r8, rdx
jmp 0x14009bf90
lea rax, [r13 + 0x10]
mov rdi, qword [rsi + 0x18]
test r8, r8
je 0x14009bfa1
mov ecx, r8d
and ecx, 3
movabs rdx, 0x100000001b3
cmp r8, 4
jae 0x14009bfad
movabs r9, 0xcbf29ce484222325
xor r10d, r10d
jmp 0x14009bffc
shr r9, 3
inc r9
mov r10, r9
and r10, 0xfffffffffffffffc
lea r8, [rdx + r10*8]
movq xmm0, rcx
pshufd xmm0, xmm0, 0x44
xor r11d, r11d
nop word [rax + rax]
movdqu xmmword [rdx + r11*8], xmm0
movdqu xmmword [rdx + r11*8 + 0x10], xmm0
add r11, 4
cmp r10, r11
jne 0x14009bf70
cmp r9, r10
je 0x14009c0b8
nop
mov qword [r8], rcx
add r8, 8
cmp r8, rax
jne 0x14009bf90
jmp 0x14009c0b8
movabs r8, 0xcbf29ce484222325
jmp 0x14009c027
and r8, 0xfffffffffffffffc
movabs r9, 0xcbf29ce484222325
xor r10d, r10d
nop
movzx r11d, byte [rax + r10]
xor r11, r9
imul r11, rdx
movzx r9d, byte [rax + r10 + 1]
xor r9, r11
imul r9, rdx
movzx r11d, byte [rax + r10 + 2]
xor r11, r9
imul r11, rdx
movzx r9d, byte [rax + r10 + 3]
xor r9, r11
imul r9, rdx
add r10, 4
cmp r8, r10
jne 0x14009bfc0
mov r8, r9
test rcx, rcx
je 0x14009c027
add rax, r10
xor r10d, r10d
nop word [rax + rax]
movzx r8d, byte [rax + r10]
xor r8, r9
imul r8, rdx
inc r10
mov r9, r8
cmp rcx, r10
jne 0x14009c010
mov rax, qword [r13 + 8]
mov qword [rsp + 0x28], rax
and r8, qword [rsi + 0x30]
lea rax, [r8 + r8]
mov rcx, r8
shl rcx, 4
lea r15, [rdi + rcx]
lea rdx, [r8 + r8]
inc rdx
mov qword [rsp + 0x30], rdx
mov r14, qword [rdi + rcx]
mov qword [rsp + 0x20], rdi
mov rbp, qword [rdi + rax*8 + 8]
mov r12, r13
jmp 0x14009c075
cmp r12, rbx
je 0x14009c0ac
mov rdi, r12
mov r12, qword [r12]
lea rcx, [rdi + 0x10]
call fcn.14009c820
mov edx, 0x50
mov rcx, rdi
call fcn.1400cd44c
dec qword [rsi + 0x10]
cmp rdi, rbp
je 0x14009c15f
cmp r12, rbx
jne 0x14009c070
cmp r14, r13
jne 0x14009c070
mov qword [r15], rbx
mov rax, qword [rsp + 0x28]
mov qword [rax], rbx
mov qword [rbx + 8], rax
mov rcx, qword [rsi + 0x18]
test rcx, rcx
je 0x14009c106
mov rdx, qword [rsi + 0x28]
sub rdx, rcx
cmp rdx, 0x1000
jb 0x14009c0ed
mov rax, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, rax
cmp rcx, 0x20
jae 0x14009c2c4
add rdx, 0x27
mov rcx, rax
lea rdi, [rsi + 0x18]
call fcn.1400cd44c
pxor xmm0, xmm0
movdqu xmmword [rdi], xmm0
mov qword [rdi + 0x10], 0
mov rax, qword [rsi + 8]
mov rcx, qword [rax + 8]
mov qword [rcx], 0
mov rdi, qword [rax]
test rdi, rdi
je 0x14009c141
nop dword [rax]
mov rbx, qword [rdi]
lea rcx, [rdi + 0x10]
call fcn.14009c820
mov edx, 0x50
mov rcx, rdi
call fcn.1400cd44c
mov rdi, rbx
test rbx, rbx
jne 0x14009c120
mov rcx, qword [rsi + 8]
mov edx, 0x50
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.1400cd44c
mov rax, qword [rsp + 0x28]
cmp r14, r13
jne 0x14009c16f
mov qword [r15], rbx
mov rax, rbx
mov rcx, qword [rsp + 0x20]
mov rdx, qword [rsp + 0x30]
mov qword [rcx + rdx*8], rax
cmp r12, rbx
je 0x14009c0ac
movabs r9, 0xcbf29ce484222325
movabs rbp, 0x100000001b3
cmp qword [r12 + 0x28], 0x10
jb 0x14009c1a9
mov rax, qword [r12 + 0x10]
jmp 0x14009c1ae
lea rax, [r12 + 0x10]
mov r11, qword [rsp + 0x20]
mov rdx, qword [r12 + 0x20]
mov r10, r9
test rdx, rdx
je 0x14009c247
mov ecx, edx
and ecx, 3
cmp rdx, 4
jae 0x14009c1d4
xor r8d, r8d
jmp 0x14009c21c
and rdx, 0xfffffffffffffffc
xor r8d, r8d
nop dword [rax + rax]
movzx r10d, byte [rax + r8]
xor r10, r9
imul r10, rbp
movzx r9d, byte [rax + r8 + 1]
xor r9, r10
imul r9, rbp
movzx r10d, byte [rax + r8 + 2]
xor r10, r9
imul r10, rbp
movzx r9d, byte [rax + r8 + 3]
xor r9, r10
imul r9, rbp
add r8, 4
cmp rdx, r8
jne 0x14009c1e0
mov r10, r9
test rcx, rcx
je 0x14009c247
add rax, r8
xor edx, edx
nop dword [rax]
movzx r10d, byte [rax + rdx]
xor r10, r9
imul r10, rbp
inc rdx
mov r9, r10
cmp rcx, rdx
jne 0x14009c230
and r10, qword [rsi + 0x30]
lea rax, [r10 + r10]
mov r15, r10
shl r15, 4
add r15, r11
lea r14, [r10 + r10]
inc r14
mov r13, qword [r11 + rax*8 + 8]
nop word cs:[rax + rax]
mov rdi, r12
mov r12, qword [r12]
lea rcx, [rdi + 0x10]
call fcn.14009c820
mov edx, 0x50
mov rcx, rdi
call fcn.1400cd44c
dec qword [rsi + 0x10]
cmp rdi, r13
je 0x14009c2a0
cmp r12, rbx
jne 0x14009c270
jmp 0x14009c0a9
mov qword [r15], rbx
mov rax, qword [rsp + 0x20]
mov qword [rax + r14*8], rbx
cmp r12, rbx
movabs r9, 0xcbf29ce484222325
jne 0x14009c19a
jmp 0x14009c0ac
call fcn.1400e193c
int3