Function at 0x14003c120
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, 0x48
mov qword [rsp + 0x20], r9
mov rsi, r8
mov r12, rcx
mov rax, qword [0x140125058]
xor rax, rsp
mov qword [rsp + 0x40], rax
mov r15, qword [r8 + 0x10]
cmp qword [r8 + 0x18], 0xf
jbe 0x14003c158
mov rsi, qword [rsi]
movabs rbx, 0xcbf29ce484222325
test r15, r15
mov qword [rsp + 0x28], rdx
je 0x14003c18a
movabs rax, 0x100000001b3
lea rdx, [r15 - 1]
mov ecx, r15d
and ecx, 3
cmp rdx, 3
jae 0x14003c18f
xor edx, edx
jmp 0x14003c1d8
mov rbp, rbx
jmp 0x14003c207
mov rdi, r15
sub rdi, rcx
xor edx, edx
nop word [rax + rax]
movzx ebp, byte [rsi + rdx]
xor rbp, rbx
imul rbp, rax
movzx ebx, byte [rsi + rdx + 1]
xor rbx, rbp
imul rbx, rax
movzx ebp, byte [rsi + rdx + 2]
xor rbp, rbx
imul rbp, rax
movzx ebx, byte [rsi + rdx + 3]
xor rbx, rbp
imul rbx, rax
add rdx, 4
cmp rdi, rdx
jne 0x14003c1a0
mov rbp, rbx
test rcx, rcx
je 0x14003c207
add rdx, rsi
xor edi, edi
nop word cs:[rax + rax]
nop
movzx ebp, byte [rdx + rdi]
xor rbp, rbx
imul rbp, rax
add rdi, 1
mov rbx, rbp
cmp rcx, rdi
jne 0x14003c1f0
and rbp, qword [r12 + 0x30]
mov rdi, qword [r12 + 8]
mov r14, qword [r12 + 0x18]
mov rax, rbp
shl rax, 4
mov r13, rbp
add r13, rbp
mov rbp, qword [r14 + rax]
mov rbx, rdi
cmp rbp, rdi
je 0x14003c250
lea rax, [r13*8]
or rax, 8
mov rax, qword [r14 + rax]
mov rbx, qword [rax]
nop word cs:[rax + rax]
nop dword [rax]
cmp rbp, rbx
je 0x14003c2f6
mov rbx, qword [rbx + 8]
cmp r15, qword [rbx + 0x20]
jne 0x14003c250
cmp qword [rbx + 0x28], 0xf
jbe 0x14003c270
mov rdx, qword [rbx + 0x10]
jmp 0x14003c274
lea rdx, [rbx + 0x10]
mov rcx, rsi
mov r8, r15
call fcn.1400cc660
test eax, eax
jne 0x14003c250
mov rsi, qword [rsp + 0x20]
mov rax, qword [rsi]
mov rcx, qword [rsi + 8]
mov qword [rcx], rax
mov rax, qword [rsi]
mov rcx, qword [rsi + 8]
mov qword [rax + 8], rcx
add qword [r12 + 0x10], 0xffffffffffffffff
mov rax, qword [rsi + 0x28]
cmp rax, 0x10
jb 0x14003c2e2
mov rcx, qword [rsi + 0x10]
lea rdx, [rax + 1]
cmp rdx, 0x1000
jb 0x14003c2dd
mov rbp, qword [rcx - 8]
add rcx, 0xfffffffffffffff8
sub rcx, rbp
cmp rcx, 0x20
jae 0x14003c4f6
add rax, 0x28
mov rdx, rax
mov rcx, rbp
call fcn.1400a8a80
mov edx, 0x38
mov rcx, rsi
call fcn.1400a8a80
xor ebp, ebp
jmp 0x14003c4c2
mov r15, qword [rsp + 0x20]
mov rax, qword [r15]
cmp rax, rbp
je 0x14003c33a
mov rcx, qword [r15 + 8]
mov qword [rcx], rax
mov rcx, qword [rax + 8]
mov qword [rcx], rbp
mov rcx, qword [rbp + 8]
mov qword [rcx], r15
mov rcx, qword [rbp + 8]
mov rdx, qword [rax + 8]
mov qword [rbp + 8], rdx
mov rdx, qword [r15 + 8]
mov qword [rax + 8], rdx
mov qword [r15 + 8], rcx
mov rdi, qword [r12 + 8]
mov r14, qword [r12 + 0x18]
lea rax, [r14 + r13*8]
mov rdx, qword [r14 + r13*8]
cmp rdx, rdi
je 0x14003c376
mov rcx, r15
cmp rdx, rbp
je 0x14003c38c
or r13, 1
mov rax, qword [r14 + r13*8]
mov rax, qword [rax]
mov qword [r14 + r13*8], rax
cmp rax, r15
je 0x14003c38f
mov rcx, qword [r12 + 0x18]
lea rax, [rcx + r13*8]
mov rcx, qword [rcx + r13*8]
mov rcx, qword [rcx + 8]
jmp 0x14003c38c
mov qword [rax], r15
shl r13, 3
or r13, 8
add r13, qword [r12 + 0x18]
mov rax, r13
mov rcx, r15
mov qword [rax], rcx
mov rax, qword [r12 + 0x10]
mov rbx, qword [r12 + 0x38]
test rax, rax
js 0x14003c3c1
cvtsi2ss xmm0, rax
test rbx, rbx
jns 0x14003c3db
mov rax, rbx
shr rax, 1
mov ecx, ebx
and ecx, 1
or rcx, rax
cvtsi2ss xmm1, rcx
addss xmm1, xmm1
jmp 0x14003c3e0
mov rcx, rax
shr rcx, 1
and eax, 1
or rax, rcx
cvtsi2ss xmm0, rax
addss xmm0, xmm0
test rbx, rbx
js 0x14003c3a8
cvtsi2ss xmm1, rbx
divss xmm0, xmm1
mov bpl, 1
ucomiss xmm0, dword [r12]
jbe 0x14003c4bf
movabs rax, 0xfffffffffffffff
cmp rbx, rax
setb al
mov cl, 3
cmp rbx, 0x200
jb 0x14003c40f
mov ecx, eax
shl rbx, cl
lea rsi, [r12 + 0x18]
lea rdi, [rbx + rbx]
mov rax, qword [r12 + 0x28]
sub rax, qword [r12 + 0x18]
sar rax, 3
cmp rax, rdi
jae 0x14003c446
mov rax, rdi
shr rax, 0x3d
jne 0x14003c4ef
mov rcx, rsi
mov rdx, rdi
call fcn.14001b4f0
mov rax, qword [r12 + 8]
mov qword [rsp + 0x30], rax
lea r8, [rsp + 0x30]
mov rcx, rsi
mov rdx, rdi
call fcn.14001ae30
lea rax, [rbx - 1]
mov qword [r12 + 0x30], rax
mov qword [r12 + 0x38], rbx
mov rax, qword [r12 + 8]
mov rsi, qword [rax]
cmp rsi, rax
je 0x14003c4bf
mov rbx, qword [rax + 8]
lea r8, [rsi + 0x10]
lea rdx, [rsp + 0x30]
mov rcx, r12
mov r9, rsi
call fcn.14003c120
cmp rbx, rsi
je 0x14003c4bf
lea rsi, [rsp + 0x30]
nop dword [rax]
mov rax, qword [r12 + 8]
mov rdi, qword [rax]
lea r8, [rdi + 0x10]
mov rcx, r12
mov rdx, rsi
mov r9, rdi
call fcn.14003c120
cmp rbx, rdi
jne 0x14003c4a0
mov rbx, r15
mov rsi, qword [rsp + 0x28]
mov qword [rsi], rbx
mov byte [rsi + 8], bpl
mov rcx, qword [rsp + 0x40]
xor rcx, rsp
call fcn.1400a8dd0
mov rax, rsi
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
call fcn.140002b70
ud2
call fcn.1400d9340
ud2