Function at 0x180051440
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 [0x18017de10]
mov rdi, rcx
mov qword [rsp + 0x48], rcx
mov r12, rdx
mov rdx, qword [0x18017c078]
shl rax, 5
mov qword [rbp - 0x60], r8
lea rcx, [rdx + 0x18]
add rcx, rax
cmp qword [rax + rdx + 0x10], 8
jbe 0x180051498
mov rcx, qword [rcx]
mov eax, dword [rcx]
lea rcx, [0x18017d6f0]
cmp byte [rax + rcx], 1
je 0x1800514cd
mov rax, qword [0x18017de08]
lea rcx, [rdx + 0x18]
shl rax, 5
add rcx, rax
cmp qword [rax + rdx + 0x10], 8
jbe 0x1800514c4
mov rcx, qword [rcx]
cmp byte [rcx], 0
je 0x180052014
mov rax, qword [0x18017d6c0]
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 [0x180163200]
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 0x180051fd8
mov qword [rsp + 0x3a8], rsi
mov esi, dword [0x18017c784]
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 [0x18017d6c0]
mov edx, r13d
mov rcx, qword [rax + 0x58]
call fcn.180050bc0
mov r15, rax
test rax, rax
je 0x180051db7
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 0x180051db7
mov r9, qword [r9 + 8]
movabs r8, 0xcbf29ce484222325
mov rcx, r9
cmp byte [r9], 0
je 0x180051618
nop dword [rax]
inc rcx
cmp byte [rcx], 0
jne 0x180051610
mov edx, 0
sub rcx, r9
je 0x180051db7
movabs rdi, 0x100000001b3
movsx rax, byte [r9 + rdx]
inc rdx
xor r8, rax
imul r8, rdi
cmp rdx, rcx
jb 0x180051630
mov rdi, qword [rsp + 0x48]
movabs rax, 0xc106a596b87eca81
cmp r8, rax
jne 0x180051db7
cmp r15, qword [rbp - 0x60]
je 0x180051db7
mov rax, qword [0x18017d6c0]
mov rsi, qword [r14 + rsi*8]
mov rbx, qword [rax + 0x58]
mov eax, 4
mov edi, eax
mov eax, dword [rax + rsi]
cmp dword [0x18017d698], eax
jle 0x1800516bd
lea rcx, [0x18017d698]
call fcn.1800db7d0
cmp dword [0x18017d698], 0xffffffff
jne 0x1800516bd
movabs rcx, 0x9241b8778dd136bd
call fcn.18006c2a0
lea rcx, [0x18017d698]
mov dword [0x18017d7f4], eax
call fcn.1800db764
mov edx, dword [0x18017d7f4]
mov edx, dword [rdx + r15]
cmp edx, 0xffffffff
je 0x180051f4b
and edx, 0x7fff
mov rcx, rbx
call fcn.180050bc0
mov r14, rax
test rax, rax
je 0x180051d9e
mov ecx, dword [rdi + rsi]
cmp dword [0x18017d690], ecx
jle 0x18005172b
lea rcx, [0x18017d690]
call fcn.1800db7d0
cmp dword [0x18017d690], 0xffffffff
jne 0x18005172b
movabs rcx, 0xdccf003ada4c08e3
call fcn.18006c2a0
lea rcx, [0x18017d690]
mov dword [0x18017d6b4], eax
call fcn.1800db764
mov eax, dword [0x18017d6b4]
cmp byte [rax + r15], 0
je 0x180051d9e
mov rdx, r14
mov rcx, r12
call fcn.180072da0
test al, al
je 0x180051d9e
mov eax, dword [rdi + rsi]
cmp dword [0x18017d7f0], eax
jle 0x180051790
lea rcx, [0x18017d7f0]
call fcn.1800db7d0
cmp dword [0x18017d7f0], 0xffffffff
jne 0x180051790
movabs rcx, 0x9f4c773fb92eaba8
call fcn.18006c2a0
lea rcx, [0x18017d7f0]
mov dword [0x18017d69c], eax
call fcn.1800db764
mov eax, dword [0x18017d69c]
mov rbx, qword [rax + r14]
test rbx, rbx
je 0x180051d9e
mov eax, dword [rdi + rsi]
cmp dword [0x18017d694], eax
jle 0x1800517e4
lea rcx, [0x18017d694]
call fcn.1800db7d0
cmp dword [0x18017d694], 0xffffffff
jne 0x1800517e4
movabs rcx, 0xfbb517d29079c514
call fcn.18006c2a0
lea rcx, [0x18017d694]
mov dword [0x18017d6d0], eax
call fcn.1800db764
mov eax, dword [0x18017d6d0]
cmp byte [rax + rbx], 0
jne 0x180051d9e
mov rax, qword [rbx]
mov rcx, rbx
mov rdx, qword [rax + 0x40]
call rdx
test rax, rax
je 0x180051d9e
mov rax, qword [rax + 0x1f0]
test rax, rax
je 0x180051d9e
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 0x1800518fa
lea rdx, [rbp - 0x68]
mov rcx, r12
call fcn.1800531a0
mov ecx, dword [rax]
and ecx, 0x7fff
mov dword [rbp + 0x150], ecx
mov rcx, r12
call fcn.180072f90
mov rcx, r12
mov dword [rbp + 0x158], eax
call fcn.180073130
mov word [rbp + 0x160], ax
mov eax, dword [rdi + rsi]
xorps xmm0, xmm0
cmp dword [0x18017d7f0], 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 0x18005195d
lea rcx, [0x18017d7f0]
call fcn.1800db7d0
cmp dword [0x18017d7f0], 0xffffffff
jne 0x18005195d
movabs rcx, 0x9f4c773fb92eaba8
call fcn.18006c2a0
lea rcx, [0x18017d7f0]
mov dword [0x18017d69c], eax
call fcn.1800db764
mov eax, dword [0x18017d69c]
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 [0x18017d6b8]
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 [0x18017d6d8], eax
movsd qword [rsp + 0x70], xmm0
movss dword [rbp - 0x48], xmm8
jle 0x180051c90
lea rcx, [0x18017d6d8]
call fcn.1800db7d0
cmp dword [0x18017d6d8], 0xffffffff
jne 0x180051c90
movabs rax, 0x92d0fbde6d97757a
movabs rcx, 0x8bf433a1c6f4586a
mov qword [rsp + 0x30], rax
movabs rdx, 0xf5fa90cb6c7b017c
mov rax, qword [rsp + 0x30]
movabs r8, 0xadf0c4fe52b74d3f
mov qword [rbp + 0x100], rax
movabs r9, 0x792321f7c1f9c8c8
movabs rax, 0x3d1401c7f9d9f7e8
movabs r10, 0x974cd138426754f1
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x108], rax
movabs rax, 0xb779e6187d476bd1
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x110], rax
movabs rax, 0xabb20381f5b27855
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x118], rax
movabs rax, 0x47ed399733150d82
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, 0x47ed39a207353db3
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, 0xad95c49752db4d5c
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, 0x794721d9c18dc8a6
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xe8], rax
movabs rax, 0x974cd138420b549d
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.180078100
lea rcx, [0x18017d6d8]
movsxd rdx, dword [rax + 1]
add rax, 5
add rax, rdx
mov qword [0x18017d6c8], rax
call fcn.1800db764
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 [0x18017d6c8]
cmp qword [rbp - 0x28], r14
jne 0x180051d98
movss xmm0, dword [rbp + 0x7c]
comiss xmm0, dword [0x180163070]
mov rdi, qword [rsp + 0x48]
jbe 0x180051d90
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.180051270
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 0x180051d2b
xorps xmm0, xmm0
sqrtss xmm0, xmm1
jmp 0x180051d33
movaps xmm0, xmm1
call fcn.1800fea40
mov rax, qword [0x18017ddf8]
shl rax, 5
add rax, qword [0x18017c078]
cmp qword [rax + 0x10], 8
lea rcx, [rax + 0x18]
jbe 0x180051d53
mov rcx, qword [rcx]
comiss xmm0, dword [rcx]
mov rbx, qword [rsp + 0x40]
ja 0x180051d88
test rbx, rbx
je 0x180051d68
comiss xmm0, xmm13
ja 0x180051d88
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 0x180051da8
movss xmm6, dword [rsp + 0x50]
jmp 0x180051da8
movss xmm6, dword [rsp + 0x50]
jmp 0x180051da3
movss xmm6, dword [rsp + 0x50]
mov rdi, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x40]
mov r14, qword gs:[0x58]
mov esi, dword [0x18017c784]
inc r13d
cmp r13d, dword [rsp + 0x54]
jle 0x1800515b0
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 0x180051fc8
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.180051270
mov rax, qword [0x18017de00]
shl rax, 5
add rax, qword [0x18017c078]
cmp qword [rax + 0x10], 8
lea rcx, [rax + 0x18]
jbe 0x180051e4c
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 [0x18017d6d4], eax
jle 0x180051e9c
lea rcx, [0x18017d6d4]
call fcn.1800db7d0
cmp dword [0x18017d6d4], 0xffffffff
jne 0x180051e9c
movabs rcx, 0x39909e4dfce32507
call fcn.18006c2a0
lea rcx, [0x18017d6d4]
mov dword [0x18017d6dc], eax
call fcn.1800db764
mov eax, dword [0x18017d6dc]
cmp dword [rax + r12], 1
jl 0x180051f5a
mov eax, dword [0x18017d6a0]
movabs r14, 0xc00b6117fa3186e9
cmp eax, dword [rdi + rsi]
jle 0x180051f2d
lea rcx, [0x18017d6a0]
call fcn.1800db7d0
mov eax, dword [0x18017d6a0]
cmp eax, 0xffffffff
jne 0x180051ef9
mov rcx, r14
call fcn.18006c2a0
lea rcx, [0x18017d6a0]
mov dword [0x18017d6e0], eax
call fcn.1800db764
mov eax, dword [0x18017d6a0]
cmp eax, dword [rdi + rsi]
jle 0x180051f2d
lea rcx, [0x18017d6a0]
call fcn.1800db7d0
cmp dword [0x18017d6a0], 0xffffffff
jne 0x180051f2d
mov rcx, r14
call fcn.18006c2a0
lea rcx, [0x18017d6a0]
mov dword [0x18017d6e0], eax
call fcn.1800db764
mov eax, dword [0x18017d6e0]
movss xmm12, dword [rax + r12]
movss xmm2, dword [rax + r12 + 4]
addss xmm12, xmm12
addss xmm2, xmm2
jmp 0x180051f5e
mov rbx, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x48]
jmp 0x180051db1
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 [0x1801631b8]
movss dword [rbx + 0x1c], xmm1
movaps xmm1, xmm6
movss dword [rbx + 0x18], xmm0
call fcn.1800e7050
movss dword [rbx + 0x18], xmm0
movaps xmm1, xmm6
movss xmm0, dword [rbx + 0x1c]
call fcn.1800e7050
movss dword [rbx + 0x1c], xmm0
movaps xmm1, xmm6
movss xmm0, dword [rbx + 0x20]
call fcn.1800e7050
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.1800db5c0
add rsp, 0x3b0
pop r12
pop rdi
pop rbp
ret