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

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r14
push r15
sub rsp, 0x40
mov rax, qword [0x140103a28]
xor rax, rsp
mov qword [rsp + 0x30], rax
mov rdi, rdx
mov rbx, rcx
movzx edx, word [rcx + 0xe]
mov eax, edx
and eax, 7
cmp eax, 5
ja case.default.0x14003f88b
lea r8, [0x140000000]
cdqe
mov ecx, dword [r8 + rax*4 + 0x3fe2c]
add rcx, r8
jmp rcx
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 8]
cmp rax, qword [rdi + 0x20]
jbe 0x14003f8ac
mov edx, 1
mov rcx, rdi
call fcn.140041ed0
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 8]
mov qword [rdi + 0x18], rax
movabs rax, 0x789e9d398d40976c
mov qword [rcx], rax
jmp 0x14003fe08
xor edx, edx
mov rcx, rdi
call fcn.140056770
jmp 0x14003fe0a
mov dl, 1
mov rcx, rdi
call fcn.140056770
jmp 0x14003fe0a
mov r11d, dword [rbx]
movabs rbp, 0xffffffffffff
mov rsi, qword [rbx + 8]
mov eax, r11d
shl rax, 5
and rsi, rbp
add rax, rsi
cmp rsi, rax
je 0x14003f97c
add rsi, 0xd
mov r15d, 0x1000
mov r14d, 0xd
test word [rsi + 1], r15w
je 0x14003f92c
movsx eax, byte [rsi]
lea r8, [rsi - 0xd]
mov ecx, r14d
sub ecx, eax
jmp 0x14003f936
mov r8, qword [rsi - 5]
mov ecx, dword [rsi - 0xd]
and r8, rbp
mov r9d, ecx
mov edx, 5
mov rcx, rdi
call fcn.140064e70
lea rcx, [rsi + 3]
mov rdx, rdi
call fcn.14003f840
test al, al
je 0x14003facc
mov edx, dword [rbx]
add rsi, 0x20
mov rax, qword [rbx + 8]
mov ecx, edx
and rax, rbp
shl rcx, 5
add rcx, rax
lea rax, [rsi - 0xd]
cmp rax, rcx
jne 0x14003f917
mov r11d, edx
lea ecx, [r11 + r11]
xor r8d, r8d
neg rcx
movabs rbx, 0x30000000519
shl rcx, 3
add qword [rdi + 0x18], rcx
mov r10, qword [rdi + 0x18]
test r11d, r11d
je 0x14003f9d0
movabs r9, 0x100000001b3
nop dword [rax + rax]
lea ecx, [r8 + r8]
inc r8d
mov eax, ecx
lea edx, [rcx + 1]
mov rcx, qword [r10 + rdx*8]
xor rcx, qword [r10 + rax*8]
imul rcx, r9
xor rbx, rcx
cmp r8d, r11d
jb 0x14003f9b0
lea rax, [r10 + 8]
cmp rax, qword [rdi + 0x20]
jbe 0x14003f9eb
mov edx, 1
mov rcx, rdi
call fcn.140041ed0
mov r10, qword [rdi + 0x18]
lea rax, [r10 + 8]
mov qword [rdi + 0x18], rax
mov qword [r10], rbx
jmp 0x14003fe08
mov r8d, dword [rbx]
movabs rbp, 0xffffffffffff
mov rsi, qword [rbx + 8]
mov eax, r8d
shl rax, 4
and rsi, rbp
add rax, rsi
cmp rsi, rax
je 0x14003fa51
nop
mov rdx, rdi
mov rcx, rsi
call fcn.14003f840
test al, al
je 0x14003facc
mov edx, dword [rbx]
add rsi, 0x10
mov rax, qword [rbx + 8]
mov ecx, edx
shl rcx, 4
and rax, rbp
add rcx, rax
cmp rsi, rcx
jne 0x14003fa20
mov r8d, edx
mov eax, r8d
movabs rbx, 0x400000006cc
neg rax
mov ecx, r8d
shl rax, 3
add qword [rdi + 0x18], rax
mov rdx, qword [rdi + 0x18]
test r8d, r8d
je 0x14003faa1
mov rax, rdx
movabs r9, 0x100000001b3
nop dword [rax]
nop word [rax + rax]
xor rbx, qword [rax]
lea rax, [rax + 8]
imul rbx, r9
sub rcx, 1
jne 0x14003fa90
lea rax, [rdx + 8]
cmp rax, qword [rdi + 0x20]
jbe 0x14003fabc
mov edx, 1
mov rcx, rdi
call fcn.140041ed0
mov rdx, qword [rdi + 0x18]
lea rax, [rdx + 8]
mov qword [rdi + 0x18], rax
mov qword [rdx], rbx
jmp 0x14003fe08
xor al, al
jmp 0x14003fe0a
bt dx, 0xc
jae 0x14003fae9
movsx eax, byte [rbx + 0xd]
mov r14d, 0xd
sub r14d, eax
jmp 0x14003fafd
mov r14d, dword [rbx]
movabs rbp, 0xffffffffffff
mov rbx, qword [rbx + 8]
and rbx, rbp
mov r9d, r14d
mov r8, rbx
mov edx, 5
mov rcx, rdi
call fcn.140064e70
jmp 0x14003fe08
movzx eax, dx
shr ax, 9
test al, 1
je 0x14003fbd3
movsd xmm1, qword [rbx]
xorps xmm0, xmm0
comisd xmm0, xmm1
jbe 0x14003fb38
cvttsd2si rax, xmm1
jmp 0x14003fb6a
movsd xmm2, qword [0x1400de1d8]
xor ecx, ecx
comisd xmm1, xmm2
movaps xmm0, xmm1
jb 0x14003fb62
subsd xmm0, xmm2
comisd xmm0, xmm2
jae 0x14003fb62
movabs rax, 0x8000000000000000
mov rcx, rax
cvttsd2si rax, xmm0
add rax, rcx
movsd qword [rsp + 0x28], xmm1
movabs rbx, 0x789e9b398d409406
mov qword [rsp + 0x20], rax
xor r8d, r8d
movabs r9, 0x100000001b3
nop dword [rax]
movzx eax, byte [rsp + r8 + 0x20]
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x21]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x22]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x23]
imul rbx, r9
add r8, 4
xor rbx, rax
imul rbx, r9
cmp r8, 0x10
jb 0x14003fb90
jmp 0x14003fdde
movzx eax, dl
shr al, 5
test al, 1
je 0x14003fc53
movsxd rcx, dword [rbx]
xor r8d, r8d
mov qword [rsp + 0x20], rcx
movabs rbx, 0x789e9b398d409406
movabs r9, 0x100000001b3
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
movsd qword [rsp + 0x28], xmm0
nop word [rax + rax]
movzx eax, byte [rsp + r8 + 0x20]
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x21]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x22]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x23]
imul rbx, r9
add r8, 4
xor rbx, rax
imul rbx, r9
cmp r8, 0x10
jb 0x14003fc10
jmp 0x14003fdde
movzx eax, dl
xorps xmm0, xmm0
shr al, 6
test al, 1
je 0x14003fcd3
mov ecx, dword [rbx]
xor r8d, r8d
mov qword [rsp + 0x20], rcx
movabs rbx, 0x789e9b398d409406
movabs r9, 0x100000001b3
cvtsi2sd xmm0, rcx
movsd qword [rsp + 0x28], xmm0
nop dword [rax]
movzx eax, byte [rsp + r8 + 0x20]
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x21]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x22]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x23]
imul rbx, r9
add r8, 4
xor rbx, rax
imul rbx, r9
cmp r8, 0x10
jb 0x14003fc90
jmp 0x14003fdde
shr dl, 7
test dl, 1
je 0x14003fd53
mov rax, qword [rbx]
xor r8d, r8d
mov qword [rsp + 0x20], rax
movabs rbx, 0x789e9b398d409406
movabs r9, 0x100000001b3
cvtsi2sd xmm0, rax
movsd qword [rsp + 0x28], xmm0
nop word [rax + rax]
movzx eax, byte [rsp + r8 + 0x20]
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x21]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x22]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x23]
imul rbx, r9
add r8, 4
xor rbx, rax
imul rbx, r9
cmp r8, 0x10
jb 0x14003fd10
jmp 0x14003fdde
mov rcx, qword [rbx]
mov qword [rsp + 0x20], rcx
test rcx, rcx
js 0x14003fd67
cvtsi2sd xmm0, rcx
jmp 0x14003fd7c
mov rax, rcx
and ecx, 1
shr rax, 1
or rax, rcx
cvtsi2sd xmm0, rax
addsd xmm0, xmm0
movsd qword [rsp + 0x28], xmm0
movabs rbx, 0x789e9b398d409406
xor r8d, r8d
movabs r9, 0x100000001b3
nop dword [rax]
movzx eax, byte [rsp + r8 + 0x20]
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x21]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x22]
imul rbx, r9
xor rbx, rax
movzx eax, byte [rsp + r8 + 0x23]
imul rbx, r9
add r8, 4
xor rbx, rax
imul rbx, r9
cmp r8, 0x10
jb 0x14003fda0
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 8]
cmp rax, qword [rdi + 0x20]
jbe 0x14003fdfd
mov edx, 1
mov rcx, rdi
call fcn.140041ed0
mov rcx, qword [rdi + 0x18]
lea rax, [rcx + 8]
mov qword [rdi + 0x18], rax
mov qword [rcx], rbx
mov al, 1
mov rcx, qword [rsp + 0x30]
xor rcx, rsp
call fcn.140069d50
mov rbx, qword [rsp + 0x80]
add rsp, 0x40
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret