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

Disassembly:
push rbp
push rdi
push r12
lea rbp, [rsp - 0x2f0]
sub rsp, 0x3f0
mov rax, qword [0x18017b040]
xor rax, rsp
mov qword [rbp + 0x220], rax
mov rax, qword [0x18017de00]
mov r12, rdx
mov rdx, qword [0x18017c078]
mov qword [rbp - 0x50], rcx
shl rax, 5
mov qword [rsp + 0x40], r8
lea rcx, [rdx + 0x18]
add rcx, rax
cmp qword [rax + rdx + 0x10], 8
jbe 0x1800514e5
mov rcx, qword [rcx]
mov eax, dword [rcx]
lea rcx, [0x18017d6f0]
cmp byte [rax + rcx], 1
je 0x18005151a
mov rax, qword [0x18017ddf8]
lea rcx, [rdx + 0x18]
shl rax, 5
add rcx, rax
cmp qword [rax + rdx + 0x10], 8
jbe 0x180051511
mov rcx, qword [rcx]
cmp byte [rcx], 0
je 0x18005204e
mov rax, qword [0x18017d6c8]
mov qword [rsp + 0x420], rbx
xor ebx, ebx
mov qword [rsp + 0x3e0], r13
mov r13d, 1
movaps xmmword [rsp + 0x360], xmm12
xorps xmm12, xmm12
mov rcx, qword [rax + 0x58]
movaps xmmword [rsp + 0x350], xmm13
movss xmm13, dword [0x180163200]
movaps xmmword [rsp + 0x340], xmm14
xorps xmm14, xmm14
mov eax, dword [rcx + 0x1510]
movaps xmmword [rsp + 0x330], xmm15
xorps xmm15, xmm15
mov qword [rsp + 0x48], rbx
mov dword [rsp + 0x78], eax
cmp eax, r13d
jl 0x18005201a
mov qword [rsp + 0x3e8], rsi
mov esi, dword [0x18017c784]
mov qword [rsp + 0x3d8], r14
mov r14, qword gs:[0x58]
mov qword [rsp + 0x3d0], r15
movaps xmmword [rsp + 0x3c0], xmm6
movaps xmmword [rsp + 0x3b0], xmm7
movaps xmmword [rsp + 0x3a0], xmm8
movaps xmmword [rsp + 0x390], xmm9
movaps xmmword [rsp + 0x380], xmm10
movaps xmmword [rsp + 0x370], xmm11
nop dword [rax]
mov rax, qword [0x18017d6c8]
mov edx, r13d
mov rcx, qword [rax + 0x58]
call fcn.180050c10
mov r15, rax
test rax, rax
je 0x180051e6a
mov qword [rbp - 0x60], 0
lea rdx, [rbp - 0x60]
mov r8, qword [rax]
mov rcx, rax
call qword [r8 + 0x130]
mov r9, qword [rbp - 0x60]
test r9, r9
je 0x180051e6a
mov r9, qword [r9 + 8]
movabs r8, 0xcbf29ce484222325
mov rcx, r9
cmp byte [r9], 0
je 0x180051658
nop dword [rax]
inc rcx
cmp byte [rcx], 0
jne 0x180051650
mov edx, 0
sub rcx, r9
je 0x180051e6a
movabs rdi, 0x100000001b3
movsx rax, byte [r9 + rdx]
inc rdx
xor r8, rax
imul r8, rdi
cmp rdx, rcx
jb 0x180051670
mov rdi, qword [rsp + 0x40]
movabs rax, 0xc106a596b87eca81
cmp r8, rax
jne 0x180051e6a
cmp r15, rdi
je 0x180051e6a
mov rax, qword [0x18017d6c8]
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 0x1800516fc
lea rcx, [0x18017d698]
call fcn.1800dba20
cmp dword [0x18017d698], 0xffffffff
jne 0x1800516fc
movabs rcx, 0x9241b8778dd136bd
call fcn.18006c250
lea rcx, [0x18017d698]
mov dword [0x18017d7f4], eax
call fcn.1800db9b4
mov edx, dword [0x18017d7f4]
mov edx, dword [rdx + r15]
cmp edx, 0xffffffff
je 0x180051e5f
and edx, 0x7fff
mov rcx, rbx
call fcn.180050c10
mov r14, rax
test rax, rax
je 0x180051e56
mov ecx, dword [rdi + rsi]
cmp dword [0x18017d690], ecx
jle 0x18005176a
lea rcx, [0x18017d690]
call fcn.1800dba20
cmp dword [0x18017d690], 0xffffffff
jne 0x18005176a
movabs rcx, 0xdccf003ada4c08e3
call fcn.18006c250
lea rcx, [0x18017d690]
mov dword [0x18017d6b4], eax
call fcn.1800db9b4
mov eax, dword [0x18017d6b4]
cmp byte [rax + r15], 0
je 0x180051e56
mov rdx, r14
mov rcx, r12
call fcn.180072ec0
test al, al
je 0x180051e56
mov eax, dword [rdi + rsi]
cmp dword [0x18017d7f0], eax
jle 0x1800517cf
lea rcx, [0x18017d7f0]
call fcn.1800dba20
cmp dword [0x18017d7f0], 0xffffffff
jne 0x1800517cf
movabs rcx, 0x9f4c773fb92eaba8
call fcn.18006c250
lea rcx, [0x18017d7f0]
mov dword [0x18017d69c], eax
call fcn.1800db9b4
mov eax, dword [0x18017d69c]
mov rbx, qword [rax + r14]
test rbx, rbx
je 0x180051e56
mov eax, dword [rdi + rsi]
cmp dword [0x18017d694], eax
jle 0x180051823
lea rcx, [0x18017d694]
call fcn.1800dba20
cmp dword [0x18017d694], 0xffffffff
jne 0x180051823
movabs rcx, 0xfbb517d29079c514
call fcn.18006c250
lea rcx, [0x18017d694]
mov dword [0x18017d6e0], eax
call fcn.1800db9b4
mov eax, dword [0x18017d6e0]
cmp byte [rax + rbx], 0
jne 0x180051e56
mov rax, qword [rbx]
mov rcx, rbx
mov rdx, qword [rax + 0x40]
call rdx
test rax, rax
je 0x180051e56
mov rax, qword [rax + 0x1f0]
test rax, rax
je 0x180051e56
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
movss dword [rsp + 0x68], xmm9
movss dword [rsp + 0x6c], xmm10
movss dword [rsp + 0x70], xmm11
mov qword [rbp + 0x30], rax
mov qword [rbp + 0x38], rax
movups xmmword [rbp + 0x40], xmm0
movups xmmword [rbp + 0x50], xmm1
mov qword [rbp + 0x60], rax
mov qword [rbp + 0x128], 0x1c3003
mov qword [rbp + 0x138], rbx
mov qword [rbp + 0x130], rbx
mov dword [rbp + 0x154], 0x49040007
mov byte [rbp + 0x158], al
movups xmmword [rbp - 0x40], xmm0
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 + 0x68], 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
test r12, r12
je 0x18005194b
lea rdx, [rbp - 0x58]
mov rcx, r12
call fcn.1800531e0
mov ecx, dword [rax]
and ecx, 0x7fff
mov dword [rbp + 0x140], ecx
mov rcx, r12
call fcn.1800730b0
mov rcx, r12
mov dword [rbp + 0x148], eax
call fcn.180073250
mov word [rbp + 0x150], ax
mov eax, dword [rdi + rsi]
xorps xmm0, xmm0
cmp dword [0x18017d7f0], eax
xorps xmm1, xmm1
movups xmmword [rbp + 0x1b0], xmm0
mov qword [rbp + 0x1e0], rbx
movups xmmword [rbp + 0x1c0], xmm1
movups xmmword [rbp + 0x1d0], xmm0
jle 0x1800519ae
lea rcx, [0x18017d7f0]
call fcn.1800dba20
cmp dword [0x18017d7f0], 0xffffffff
jne 0x1800519ae
movabs rcx, 0x9f4c773fb92eaba8
call fcn.18006c250
lea rcx, [0x18017d7f0]
mov dword [0x18017d69c], eax
call fcn.1800db9b4
mov eax, dword [0x18017d69c]
mov rcx, qword [rax + r14]
mov rax, qword [rcx]
mov rdx, qword [rax + 0x40]
call rdx
lea rdx, [rsp + 0x7c]
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 + 0x7c], rbx
mov dword [rbp - 0x7c], ebx
call qword [rax + 0x530]
mov eax, dword [rbp - 0x7c]
movaps xmm0, xmm6
mov rbx, qword [0x18017d6b8]
unpcklps xmm0, xmm7
movsd qword [rsp + 0x30], xmm0
movsd qword [rbp - 0x70], xmm0
movsd xmm0, qword [rsp + 0x7c]
mov dword [rsp + 0x58], eax
mov eax, dword [rdi + rsi]
cmp dword [0x18017d6e4], eax
movsd qword [rsp + 0x50], xmm0
movss dword [rbp - 0x68], xmm8
jle 0x180051cf4
lea rcx, [0x18017d6e4]
call fcn.1800dba20
cmp dword [0x18017d6e4], 0xffffffff
jne 0x180051cf4
movabs rax, 0x4d9bc3d5e23daac0
movabs rcx, 0x79eabc424f767334
mov qword [rsp + 0x30], rax
movabs rdx, 0xea49ac2c0da76ea6
mov rax, qword [rsp + 0x30]
movabs r8, 0x72bbfcf5dd1d9285
mov qword [rbp + 0xf0], rax
movabs r9, 0x9f5b4b58b94977f2
movabs rax, 0xdb6c6b68816948d2
movabs r10, 0xa4e2b037e716c607
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xf8], rax
movabs rax, 0x84d78717d836f927
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x100], rax
movabs rax, 0x59ac8c627c30530b
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x108], rax
movabs rax, 0x68fd84ec828b0438
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x110], rax
mov qword [rsp + 0x30], rdx
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x118], rax
mov qword [rsp + 0x30], r8
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r9
mov qword [rbp + 0x1f0], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r10
mov qword [rbp + 0x1f8], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rcx
mov qword [rbp + 0x200], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x208], rax
movabs rax, 0x68fd84d9b6ab3409
movdqa xmm1, xmmword [rbp + 0x200]
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], rdx
mov qword [rbp + 0x210], rax
mov rax, qword [rsp + 0x30]
movdqa xmm0, xmmword [rbp + 0xf0]
xorps xmm1, xmmword [rbp + 0x100]
xorps xmm0, xmmword [rbp + 0x1f0]
mov qword [rbp + 0x218], rax
movabs rax, 0x72defc9cdd7192e6
movdqa xmmword [rbp + 0xf0], xmm0
movdqa xmm0, xmmword [rbp + 0x210]
xorps xmm0, xmmword [rbp + 0x110]
movdqa xmmword [rbp + 0x110], xmm0
movdqa xmmword [rbp + 0x100], xmm1
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xd0], rax
movabs rax, 0x9f3f4b76b93d779c
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xd8], rax
movabs rax, 0xa4e2b037e77ac66b
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xe0], rax
mov qword [rsp + 0x30], rcx
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xe8], rax
mov qword [rsp + 0x30], r8
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r9
mov qword [rbp + 0x1f0], rax
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x30], r10
mov qword [rbp + 0x1f8], rax
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0x200], rax
mov qword [rsp + 0x30], rcx
mov rax, qword [rsp + 0x30]
lea rdx, [rbp + 0xf0]
movdqa xmm0, xmmword [rbp + 0xd0]
lea rcx, [rbp + 0xd0]
xorps xmm0, xmmword [rbp + 0x1f0]
mov qword [rbp + 0x208], rax
movdqa xmm1, xmmword [rbp + 0x200]
xorps xmm1, xmmword [rbp + 0xe0]
movdqa xmmword [rbp + 0xe0], xmm1
movdqa xmmword [rbp + 0xd0], xmm0
call fcn.180078350
movsxd rcx, dword [rax + 1]
add rax, 5
add rax, rcx
lea rcx, [0x18017d6e4]
mov qword [0x18017d6d8], rax
call fcn.1800db9b4
movss xmm11, dword [rsp + 0x70]
movss xmm10, dword [rsp + 0x6c]
movss xmm9, dword [rsp + 0x68]
lea rax, [rbp - 0x40]
mov rcx, rbx
mov qword [rsp + 0x28], rax
lea r9, [rbp - 0x70]
lea rax, [rbp + 0x120]
lea r8, [rsp + 0x50]
mov qword [rsp + 0x20], rax
lea rdx, [rbp + 0x1b0]
call qword [0x18017d6d8]
cmp qword [rbp - 0x38], r14
jne 0x180051e56
movss xmm0, dword [rbp + 0x6c]
comiss xmm0, dword [0x180163070]
jbe 0x180051e56
lea rdx, [rsp + 0x60]
mov qword [rsp + 0x60], 0
lea rcx, [rsp + 0x68]
call fcn.180076290
test al, al
je 0x180051e56
xorps xmm0, xmm0
lea rdx, [rbp + 0x160]
xor eax, eax
mov qword [rbp + 0x1a0], rax
mov rax, qword [0x18017d6d0]
movups xmmword [rbp + 0x160], xmm0
movups xmmword [rbp + 0x170], xmm0
movups xmmword [rbp + 0x180], xmm0
movups xmmword [rbp + 0x190], xmm0
mov rcx, qword [rax + 0x170]
mov rax, qword [rcx]
call qword [rax + 0x60]
mov eax, dword [rbp + 0x160]
xorps xmm0, xmm0
movss xmm1, dword [rsp + 0x60]
movss xmm2, dword [rsp + 0x64]
shr eax, 1
cvtps2pd xmm2, xmm2
cvtsi2sd xmm0, rax
mov eax, dword [rbp + 0x164]
shr eax, 1
cvtps2pd xmm1, xmm1
subsd xmm1, xmm0
xorps xmm0, xmm0
cvtsi2sd xmm0, rax
mulsd xmm1, xmm1
subsd xmm2, xmm0
xorps xmm0, xmm0
mulsd xmm2, xmm2
addsd xmm2, xmm1
ucomisd xmm0, xmm2
ja 0x180051df6
sqrtpd xmm0, xmm2
jmp 0x180051dfe
movaps xmm0, xmm2
call fcn.1800fec90
mov rax, qword [0x18017ddf0]
shl rax, 5
add rax, qword [0x18017c078]
cvtsd2ss xmm0, xmm0
cmp qword [rax + 0x10], 8
lea rcx, [rax + 0x18]
jbe 0x180051e22
mov rcx, qword [rcx]
comiss xmm0, dword [rcx]
ja 0x180051e56
comiss xmm0, xmm13
mov esi, dword [0x18017c784]
mov r14, qword gs:[0x58]
ja 0x180051e65
mov rbx, r15
movaps xmm13, xmm0
mov qword [rsp + 0x48], rbx
movaps xmm12, xmm9
movaps xmm14, xmm10
movaps xmm15, xmm11
jmp 0x180051e6a
mov r14, qword gs:[0x58]
mov esi, dword [0x18017c784]
mov rbx, qword [rsp + 0x48]
inc r13d
cmp r13d, dword [rsp + 0x78]
jle 0x1800515f0
movaps xmm11, xmmword [rsp + 0x370]
movaps xmm10, xmmword [rsp + 0x380]
movaps xmm9, xmmword [rsp + 0x390]
movaps xmm8, xmmword [rsp + 0x3a0]
movaps xmm7, xmmword [rsp + 0x3b0]
movaps xmm6, xmmword [rsp + 0x3c0]
mov r15, qword [rsp + 0x3d0]
test rbx, rbx
je 0x18005200a
mov rax, qword [rbp - 0x50]
lea r8, [rsp + 0x50]
movaps xmm0, xmm12
movss dword [rsp + 0x58], xmm15
unpcklps xmm0, xmm14
lea rcx, [rbp - 0x70]
mov r9, r12
movsd qword [rsp + 0x50], xmm0
mov rbx, qword [rax + 0x40]
mov rdx, rax
call fcn.1800512c0
mov rax, qword [r14 + rsi*8]
mov ecx, 4
mov ecx, dword [rcx + rax]
cmp dword [0x18017d6a0], ecx
jle 0x180051f38
lea rcx, [0x18017d6a0]
call fcn.1800dba20
cmp dword [0x18017d6a0], 0xffffffff
jne 0x180051f38
movabs rcx, 0xc00b6117fa3186e9
call fcn.18006c250
lea rcx, [0x18017d6a0]
mov dword [0x18017d6e8], eax
call fcn.1800db9b4
mov eax, dword [0x18017d6e8]
xor r11d, r11d
mov r9, qword [0x18017d6c0]
movss xmm3, dword [rbp - 0x70]
addss xmm3, dword [rbx + 0x18]
movsd xmm2, qword [rax + r12]
mov eax, 0x1b4e81b5
mov ecx, dword [r9 + 0x5c1c]
movaps xmm0, xmm2
mulss xmm0, dword [0x1801630d0]
movss xmm4, dword [rbp - 0x6c]
addss xmm4, dword [rbx + 0x1c]
imul ecx
subss xmm3, xmm0
movaps xmm0, xmm2
shufps xmm0, xmm0, 0x55
mulss xmm0, dword [0x1801630d0]
sar edx, 4
mov eax, edx
subss xmm4, xmm0
shr eax, 0x1f
add edx, eax
imul eax, edx, 0x96
sub ecx, eax
movsxd rax, ecx
imul r10, rax, 0x98
mov eax, r11d
mov rdx, qword [r10 + r9 + 0x288]
mov ecx, dword [rdx]
test ecx, ecx
jle 0x18005200a
mov r8d, r11d
cmp eax, ecx
jge 0x180051ff6
cmp eax, dword [r10 + r9 + 0x280]
jge 0x180051ff6
mov rcx, qword [rdx + r8 + 8]
test rcx, rcx
je 0x180051ff6
mov rdx, qword [rcx + 0x18]
test rdx, rdx
je 0x180051ff6
movss dword [rdx + 0x18], xmm3
movss dword [rdx + 0x1c], xmm4
mov dword [rdx + 0x20], r11d
or qword [rcx + 0x10], 1
mov rdx, qword [r10 + r9 + 0x288]
inc eax
add r8, 8
mov ecx, dword [rdx]
cmp eax, ecx
jl 0x180051fc6
mov r14, qword [rsp + 0x3d8]
mov rsi, qword [rsp + 0x3e8]
movaps xmm12, xmmword [rsp + 0x360]
movaps xmm13, xmmword [rsp + 0x350]
mov r13, qword [rsp + 0x3e0]
movaps xmm14, xmmword [rsp + 0x340]
mov rbx, qword [rsp + 0x420]
movaps xmm15, xmmword [rsp + 0x330]
mov rcx, qword [rbp + 0x220]
xor rcx, rsp
call fcn.1800db810
add rsp, 0x3f0
pop r12
pop rdi
pop rbp
ret