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

Disassembly:
push rbp
push rdi
push r12
lea rbp, [rsp - 0x2b0]
sub rsp, 0x3b0
mov rax, qword [0x18017b040]
xor rax, rsp
mov qword [rbp + 0x1e0], rax
mov rax, qword [0x18017df20]
mov rdi, rcx
mov qword [rsp + 0x48], rcx
mov r12, rdx
mov rdx, qword [0x18017c080]
shl rax, 5
mov qword [rbp - 0x60], r8
lea rcx, [rdx + 0x18]
add rcx, rax
cmp qword [rax + rdx + 0x10], 8
jbe 0x180051538
mov rcx, qword [rcx]
mov eax, dword [rcx]
lea rcx, [0x18017d7e0]
cmp byte [rax + rcx], 1
je 0x18005156d
mov rax, qword [0x18017df18]
lea rcx, [rdx + 0x18]
shl rax, 5
add rcx, rax
cmp qword [rax + rdx + 0x10], 8
jbe 0x180051564
mov rcx, qword [rcx]
cmp byte [rcx], 0
je 0x1800520b4
mov rax, qword [0x18017d7b0]
mov qword [rsp + 0x3e0], rbx
xor ebx, ebx
mov qword [rsp + 0x3a0], r13
mov r13d, 1
movaps xmmword [rsp + 0x380], xmm6
xorps xmm6, xmm6
mov rcx, qword [rax + 0x58]
movaps xmmword [rsp + 0x320], xmm12
xorps xmm12, xmm12
movaps xmmword [rsp + 0x310], xmm13
movss xmm13, dword [0x180164160]
mov eax, dword [rcx + 0x1510]
movaps xmmword [rsp + 0x300], xmm14
xorps xmm14, xmm14
movaps xmmword [rsp + 0x2f0], xmm15
xorps xmm15, xmm15
movss dword [rsp + 0x50], xmm6
mov qword [rsp + 0x40], rbx
mov dword [rsp + 0x54], eax
cmp eax, r13d
jl 0x180052078
mov qword [rsp + 0x3a8], rsi
mov esi, dword [0x18017c794]
mov qword [rsp + 0x398], r14
mov r14, qword gs:[0x58]
mov qword [rsp + 0x390], r15
movaps xmmword [rsp + 0x370], xmm7
movaps xmmword [rsp + 0x360], xmm8
movaps xmmword [rsp + 0x350], xmm9
movaps xmmword [rsp + 0x340], xmm10
movaps xmmword [rsp + 0x330], xmm11
nop word [rax + rax]
mov rax, qword [0x18017d7b0]
mov edx, r13d
mov rcx, qword [rax + 0x58]
call fcn.180050c60
mov r15, rax
test rax, rax
je 0x180051e57
mov qword [rbp - 0x70], 0
lea rdx, [rbp - 0x70]
mov r8, qword [rax]
mov rcx, rax
call qword [r8 + 0x130]
mov r9, qword [rbp - 0x70]
test r9, r9
je 0x180051e57
mov r9, qword [r9 + 8]
movabs r8, 0xcbf29ce484222325
mov rcx, r9
cmp byte [r9], 0
je 0x1800516b8
nop dword [rax]
inc rcx
cmp byte [rcx], 0
jne 0x1800516b0
mov edx, 0
sub rcx, r9
je 0x180051e57
movabs rdi, 0x100000001b3
movsx rax, byte [r9 + rdx]
inc rdx
xor r8, rax
imul r8, rdi
cmp rdx, rcx
jb 0x1800516d0
mov rdi, qword [rsp + 0x48]
movabs rax, 0xc106a596b87eca81
cmp r8, rax
jne 0x180051e57
cmp r15, qword [rbp - 0x60]
je 0x180051e57
mov rax, qword [0x18017d7b0]
mov rsi, qword [r14 + rsi*8]
mov rbx, qword [rax + 0x58]
mov eax, 4
mov edi, eax
mov eax, dword [rax + rsi]
cmp dword [0x18017d788], eax
jle 0x18005175d
lea rcx, [0x18017d788]
call fcn.1800dbe74
cmp dword [0x18017d788], 0xffffffff
jne 0x18005175d
movabs rcx, 0x9241b8778dd136bd
call fcn.18006c530
lea rcx, [0x18017d788]
mov dword [0x18017d8e4], eax
call fcn.1800dbe08
mov edx, dword [0x18017d8e4]
mov edx, dword [rdx + r15]
cmp edx, 0xffffffff
je 0x180051feb
and edx, 0x7fff
mov rcx, rbx
call fcn.180050c60
mov r14, rax
test rax, rax
je 0x180051e3e
mov ecx, dword [rdi + rsi]
cmp dword [0x18017d780], ecx
jle 0x1800517cb
lea rcx, [0x18017d780]
call fcn.1800dbe74
cmp dword [0x18017d780], 0xffffffff
jne 0x1800517cb
movabs rcx, 0xdccf003ada4c08e3
call fcn.18006c530
lea rcx, [0x18017d780]
mov dword [0x18017d7a4], eax
call fcn.1800dbe08
mov eax, dword [0x18017d7a4]
cmp byte [rax + r15], 0
je 0x180051e3e
mov rdx, r14
mov rcx, r12
call fcn.180073320
test al, al
je 0x180051e3e
mov eax, dword [rdi + rsi]
cmp dword [0x18017d8e0], eax
jle 0x180051830
lea rcx, [0x18017d8e0]
call fcn.1800dbe74
cmp dword [0x18017d8e0], 0xffffffff
jne 0x180051830
movabs rcx, 0x9f4c773fb92eaba8
call fcn.18006c530
lea rcx, [0x18017d8e0]
mov dword [0x18017d78c], eax
call fcn.1800dbe08
mov eax, dword [0x18017d78c]
mov rbx, qword [rax + r14]
test rbx, rbx
je 0x180051e3e
mov eax, dword [rdi + rsi]
cmp dword [0x18017d784], eax
jle 0x180051884
lea rcx, [0x18017d784]
call fcn.1800dbe74
cmp dword [0x18017d784], 0xffffffff
jne 0x180051884
movabs rcx, 0xfbb517d29079c514
call fcn.18006c530
lea rcx, [0x18017d784]
mov dword [0x18017d7c0], eax
call fcn.1800dbe08
mov eax, dword [0x18017d7c0]
cmp byte [rax + rbx], 0
jne 0x180051e3e
mov rax, qword [rbx]
mov rcx, rbx
mov rdx, qword [rax + 0x40]
call rdx
test rax, rax
je 0x180051e3e
mov rax, qword [rax + 0x1f0]
test rax, rax
je 0x180051e3e
movss xmm9, dword [rax + 0xc0]
xorps xmm0, xmm0
movss xmm10, dword [rax + 0xc4]
xor ebx, ebx
movss xmm11, dword [rax + 0xc8]
xorps xmm1, xmm1
xor eax, eax
movups xmmword [rbp + 0x50], xmm0
mov qword [rbp + 0x40], rax
mov qword [rbp + 0x48], rax
movups xmmword [rbp + 0x60], xmm1
mov qword [rbp + 0x70], rax
mov qword [rbp + 0x138], 0x1c3003
mov qword [rbp + 0x148], rbx
mov qword [rbp + 0x140], rbx
mov dword [rbp + 0x164], 0x49040007
mov byte [rbp + 0x168], al
movups xmmword [rbp - 0x30], xmm0
movups xmmword [rbp - 0x20], xmm0
movups xmmword [rbp - 0x10], xmm0
movups xmmword [rbp], xmm0
movups xmmword [rbp + 0x10], xmm0
movups xmmword [rbp + 0x20], xmm0
movups xmmword [rbp + 0x30], xmm0
movups xmmword [rbp + 0x78], xmm0
movups xmmword [rbp + 0x88], xmm0
movups xmmword [rbp + 0x98], xmm0
movups xmmword [rbp + 0xa8], xmm0
movups xmmword [rbp + 0xb8], xmm0
movups xmmword [rbp + 0xc8], xmm0
test r12, r12
je 0x18005199a
lea rdx, [rbp - 0x68]
mov rcx, r12
call fcn.180053240
mov ecx, dword [rax]
and ecx, 0x7fff
mov dword [rbp + 0x150], ecx
mov rcx, r12
call fcn.180073510
mov rcx, r12
mov dword [rbp + 0x158], eax
call fcn.1800736b0
mov word [rbp + 0x160], ax
mov eax, dword [rdi + rsi]
xorps xmm0, xmm0
cmp dword [0x18017d8e0], eax
xorps xmm1, xmm1
movups xmmword [rbp + 0x170], xmm0
mov qword [rbp + 0x1a0], rbx
movups xmmword [rbp + 0x180], xmm1
movups xmmword [rbp + 0x190], xmm0
jle 0x1800519fd
lea rcx, [0x18017d8e0]
call fcn.1800dbe74
cmp dword [0x18017d8e0], 0xffffffff
jne 0x1800519fd
movabs rcx, 0x9f4c773fb92eaba8
call fcn.18006c530
lea rcx, [0x18017d8e0]
mov dword [0x18017d78c], eax
call fcn.1800dbe08
mov eax, dword [0x18017d78c]
mov rcx, qword [rax + r14]
mov rax, qword [rcx]
mov rdx, qword [rax + 0x40]
call rdx
lea rdx, [rsp + 0x58]
mov rcx, qword [rax + 0x1f0]
mov rax, qword [r12]
movss xmm8, dword [rcx + 0xc8]
movss xmm6, dword [rcx + 0xc0]
movss xmm7, dword [rcx + 0xc4]
mov rcx, r12
movss dword [rsp + 0x38], xmm8
mov qword [rsp + 0x58], rbx
mov dword [rsp + 0x60], ebx
call qword [rax + 0x530]
mov eax, dword [rsp + 0x60]
movaps xmm0, xmm6
mov rbx, qword [0x18017d7a8]
unpcklps xmm0, xmm7
movsd qword [rsp + 0x30], xmm0
movsd qword [rbp - 0x50], xmm0
movsd xmm0, qword [rsp + 0x58]
mov dword [rsp + 0x78], eax
mov eax, dword [rdi + rsi]
cmp dword [0x18017d7c8], eax
movsd qword [rsp + 0x70], xmm0
movss dword [rbp - 0x48], xmm8
jle 0x180051d30
lea rcx, [0x18017d7c8]
call fcn.1800dbe74
cmp dword [0x18017d7c8], 0xffffffff
jne 0x180051d30
movabs rax, 0x8c6e78f13afef9c0
movabs rcx, 0xfff737a6f8fc4c44
mov qword [rsp + 0x30], rax
movabs rdx, 0xb16a4100e41fa6ee
mov rax, qword [rsp + 0x30]
movabs r8, 0xb34e47d105dec185
mov qword [rbp + 0x100], rax
movabs r9, 0x38616c2441b030da
movabs rax, 0x7c564c1479900ffa
movabs r10, 0x2d5810cbbcb8c297
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x108], rax
movabs rax, 0xd6d27eb8398fdb7
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x110], rax
movabs rax, 0xdfb10786cbba6c7b
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x118], rax
movabs rax, 0x2bba49383ffb3cd8
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x120], rax
mov qword [rsp + 0x30], rdx
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x128], rax
mov qword [rsp + 0x30], r8
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r9
mov qword [rbp + 0x1b0], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r10
mov qword [rbp + 0x1b8], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rcx
mov qword [rbp + 0x1c0], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1c8], rax
movabs rax, 0x2bba490d0bdb0ce9
movdqa xmm1, xmmword [rbp + 0x1c0]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rdx
mov qword [rbp + 0x1d0], rax
mov rax, qword [rsp + 0x30]
movdqa xmm0, xmmword [rbp + 0x100]
xorps xmm1, xmmword [rbp + 0x110]
xorps xmm0, xmmword [rbp + 0x1b0]
mov qword [rbp + 0x1d8], rax
movabs rax, 0xb32b47b805b2c1e6
movdqa xmmword [rbp + 0x100], xmm0
movdqa xmm0, xmmword [rbp + 0x1d0]
xorps xmm0, xmmword [rbp + 0x120]
movdqa xmmword [rbp + 0x120], xmm0
movdqa xmmword [rbp + 0x110], xmm1
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xe0], rax
movabs rax, 0x38056c0a41c430b4
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xe8], rax
movabs rax, 0x2d5810cbbcd4c2fb
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xf0], rax
mov qword [rsp + 0x30], rcx
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xf8], rax
mov qword [rsp + 0x30], r8
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r9
mov qword [rbp + 0x1b0], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r10
mov qword [rbp + 0x1b8], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x1c0], rax
mov qword [rsp + 0x30], rcx
mov rax, qword [rsp + 0x30]
lea rdx, [rbp + 0x100]
movdqa xmm0, xmmword [rbp + 0xe0]
lea rcx, [rbp + 0xe0]
xorps xmm0, xmmword [rbp + 0x1b0]
mov qword [rbp + 0x1c8], rax
movdqa xmm1, xmmword [rbp + 0x1c0]
xorps xmm1, xmmword [rbp + 0xf0]
movdqa xmmword [rbp + 0xf0], xmm1
movdqa xmmword [rbp + 0xe0], xmm0
call fcn.180078680
lea rcx, [0x18017d7c8]
movsxd rdx, dword [rax + 1]
add rax, 5
add rax, rdx
mov qword [0x18017d7b8], rax
call fcn.1800dbe08
lea rax, [rbp - 0x30]
mov rcx, rbx
mov qword [rsp + 0x28], rax
lea r9, [rbp - 0x50]
lea rax, [rbp + 0x130]
lea r8, [rsp + 0x70]
mov qword [rsp + 0x20], rax
lea rdx, [rbp + 0x170]
call qword [0x18017d7b8]
cmp qword [rbp - 0x28], r14
jne 0x180051e38
movss xmm0, dword [rbp + 0x7c]
comiss xmm0, dword [0x180163fd0]
mov rdi, qword [rsp + 0x48]
jbe 0x180051e30
movaps xmm0, xmm9
movss dword [rbp - 0x78], xmm11
unpcklps xmm0, xmm10
lea r8, [rbp - 0x80]
mov r9, r12
movsd qword [rbp - 0x80], xmm0
mov rdx, rdi
lea rcx, [rbp - 0x40]
call fcn.180051310
movss xmm0, dword [rax + 4]
movss xmm1, dword [rax]
mulss xmm0, xmm0
mulss xmm1, xmm1
addss xmm1, xmm0
xorps xmm0, xmm0
ucomiss xmm0, xmm1
ja 0x180051dcb
xorps xmm0, xmm0
sqrtss xmm0, xmm1
jmp 0x180051dd3
movaps xmm0, xmm1
call fcn.1801000f8
mov rax, qword [0x18017df08]
shl rax, 5
add rax, qword [0x18017c080]
cmp qword [rax + 0x10], 8
lea rcx, [rax + 0x18]
jbe 0x180051df3
mov rcx, qword [rcx]
comiss xmm0, dword [rcx]
mov rbx, qword [rsp + 0x40]
ja 0x180051e28
test rbx, rbx
je 0x180051e08
comiss xmm0, xmm13
ja 0x180051e28
mov rbx, r15
movaps xmm6, xmm11
movss dword [rsp + 0x50], xmm6
movaps xmm13, xmm0
mov qword [rsp + 0x40], rbx
movaps xmm14, xmm9
movaps xmm15, xmm10
jmp 0x180051e48
movss xmm6, dword [rsp + 0x50]
jmp 0x180051e48
movss xmm6, dword [rsp + 0x50]
jmp 0x180051e43
movss xmm6, dword [rsp + 0x50]
mov rdi, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x40]
mov r14, qword gs:[0x58]
mov esi, dword [0x18017c794]
inc r13d
cmp r13d, dword [rsp + 0x54]
jle 0x180051650
movaps xmm11, xmmword [rsp + 0x330]
movaps xmm10, xmmword [rsp + 0x340]
movaps xmm9, xmmword [rsp + 0x350]
movaps xmm8, xmmword [rsp + 0x360]
movaps xmm7, xmmword [rsp + 0x370]
mov r15, qword [rsp + 0x390]
test rbx, rbx
je 0x180052068
mov rbx, qword [rdi + 0x40]
lea r8, [rbp - 0x80]
movaps xmm0, xmm14
movss dword [rbp - 0x78], xmm6
unpcklps xmm0, xmm15
lea rcx, [rsp + 0x70]
mov r9, r12
movsd qword [rbp - 0x80], xmm0
mov rdx, rdi
call fcn.180051310
mov rax, qword [0x18017df10]
shl rax, 5
add rax, qword [0x18017c080]
cmp qword [rax + 0x10], 8
lea rcx, [rax + 0x18]
jbe 0x180051eec
mov rcx, qword [rcx]
mov rsi, qword [r14 + rsi*8]
movss xmm6, dword [rcx]
mov eax, 4
mov edi, eax
mov eax, dword [rax + rsi]
cmp dword [0x18017d7c4], eax
jle 0x180051f3c
lea rcx, [0x18017d7c4]
call fcn.1800dbe74
cmp dword [0x18017d7c4], 0xffffffff
jne 0x180051f3c
movabs rcx, 0x39909e4dfce32507
call fcn.18006c530
lea rcx, [0x18017d7c4]
mov dword [0x18017d7cc], eax
call fcn.1800dbe08
mov eax, dword [0x18017d7cc]
cmp dword [rax + r12], 1
jl 0x180051ffa
mov eax, dword [0x18017d790]
movabs r14, 0xc00b6117fa3186e9
cmp eax, dword [rdi + rsi]
jle 0x180051fcd
lea rcx, [0x18017d790]
call fcn.1800dbe74
mov eax, dword [0x18017d790]
cmp eax, 0xffffffff
jne 0x180051f99
mov rcx, r14
call fcn.18006c530
lea rcx, [0x18017d790]
mov dword [0x18017d7d0], eax
call fcn.1800dbe08
mov eax, dword [0x18017d790]
cmp eax, dword [rdi + rsi]
jle 0x180051fcd
lea rcx, [0x18017d790]
call fcn.1800dbe74
cmp dword [0x18017d790], 0xffffffff
jne 0x180051fcd
mov rcx, r14
call fcn.18006c530
lea rcx, [0x18017d790]
mov dword [0x18017d7d0], eax
call fcn.1800dbe08
mov eax, dword [0x18017d7d0]
movss xmm12, dword [rax + r12]
movss xmm2, dword [rax + r12 + 4]
addss xmm12, xmm12
addss xmm2, xmm2
jmp 0x180051ffe
mov rbx, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x48]
jmp 0x180051e51
movaps xmm2, xmm12
movss xmm1, dword [rsp + 0x74]
movss xmm0, dword [rsp + 0x70]
subss xmm1, xmm2
subss xmm0, xmm12
divss xmm1, xmm6
divss xmm0, xmm6
addss xmm1, dword [rbx + 0x1c]
addss xmm0, dword [rbx + 0x18]
movss xmm6, dword [0x180164118]
movss dword [rbx + 0x1c], xmm1
movaps xmm1, xmm6
movss dword [rbx + 0x18], xmm0
call fcn.1800e7ab0
movss dword [rbx + 0x18], xmm0
movaps xmm1, xmm6
movss xmm0, dword [rbx + 0x1c]
call fcn.1800e7ab0
movss dword [rbx + 0x1c], xmm0
movaps xmm1, xmm6
movss xmm0, dword [rbx + 0x20]
call fcn.1800e7ab0
movss dword [rbx + 0x20], xmm0
mov r14, qword [rsp + 0x398]
mov rsi, qword [rsp + 0x3a8]
movaps xmm12, xmmword [rsp + 0x320]
movaps xmm6, xmmword [rsp + 0x380]
movaps xmm13, xmmword [rsp + 0x310]
mov r13, qword [rsp + 0x3a0]
movaps xmm14, xmmword [rsp + 0x300]
mov rbx, qword [rsp + 0x3e0]
movaps xmm15, xmmword [rsp + 0x2f0]
mov rcx, qword [rbp + 0x1e0]
xor rcx, rsp
call fcn.1800dbb40
add rsp, 0x3b0
pop r12
pop rdi
pop rbp
ret