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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push r14
sub rsp, 0xb0
movaps xmmword [rax - 0x18], xmm6
movaps xmmword [rax - 0x28], xmm7
movaps xmmword [rax - 0x38], xmm8
movaps xmmword [rax - 0x48], xmm10
movaps xmmword [rax - 0x58], xmm11
mov rbx, rdx
cmp byte [rdx + 0x1e8], 0
jne 0x180158b0f
mov rcx, qword [rdx]
test rcx, rcx
je 0x180158b0f
add rcx, 0x10
mov rax, qword [rcx]
call qword [rax + 0x10]
test rax, rax
je 0x180158b0f
cmp dword [rax + 0x28], 0xf7
jne 0x180158b0f
lea rcx, [rbx + 0x1c0]
lea rdi, [rbx + 0xa4]
mov rdx, rdi
call fcn.1800cc6d0
mov rax, qword [0x1802577b0]
mov byte [rax + 0xc], 1
mov rax, qword [0x1802577b0]
mov byte [rax + 0xd], 0
mov rcx, qword [0x180257790]
xorps xmm7, xmm7
mov rax, qword [0x1802577b0]
cmp byte [rax + 0xf], 0
je 0x180158727
xorps xmm0, xmm0
jmp 0x18015872c
movss xmm0, dword [rcx + 0x1c]
movss dword [rcx + 0x10], xmm0
xorps xmm11, xmm11
lea rsi, [rbx + 0x1a0]
movss xmm8, dword [rsi]
mov rcx, qword [rbx]
ucomiss xmm8, xmm7
jp 0x180158767
jne 0x180158767
call fcn.1800b8c00
test byte [rax], 1
jne 0x180158979
xor ebp, ebp
mov dword [rbx + 0x3c], ebp
mov dword [rbx + 0x34], ebp
jmp 0x180158979
call fcn.1800b8c00
test byte [rax], 1
jne 0x180158968
movss xmm0, dword [rsi]
xor ebp, ebp
mov ecx, ebp
comiss xmm0, xmm7
seta cl
mov eax, ebp
comiss xmm7, xmm0
seta al
sub ecx, eax
movd xmm11, ecx
cvtdq2ps xmm11, xmm11
mulss xmm11, dword [0x18022cce4]
mov rdi, qword [rbx]
mov ecx, dword [0x180255e0c]
mov rax, qword gs:[0x58]
mov r14d, 4
mov rsi, qword [rax + rcx*8]
mov eax, dword [rsi + r14]
cmp dword [0x1802689a4], eax
jle 0x1801587fb
lea rcx, [0x1802689a4]
call fcn.1801a548c
cmp dword [0x1802689a4], 0xffffffff
jne 0x1801587fb
lea rdx, str.sv_gravity
call fcn.1801a1e90
mov qword [0x1802689a8], rax
lea rcx, [0x1802689a4]
call fcn.1801a5420
mov rcx, rdi
call fcn.180155480
movss xmm0, dword [rax]
ucomiss xmm0, xmm7
jp 0x180158819
jne 0x180158819
movss xmm10, dword [0x18022cb38]
jmp 0x180158826
mov rcx, rdi
call fcn.180155480
movss xmm10, dword [rax]
mov rcx, qword [0x180251b78]
movsxd rax, dword [rcx + 3]
mov rdi, qword [rax + rcx + 7]
mov rax, qword [0x1802689a8]
mov rcx, qword [rax + 0x38]
movss xmm6, dword [rcx + 0x54]
test rdi, rdi
je 0x18015891b
mov eax, dword [rsi + r14]
cmp dword [0x180257c48], eax
jle 0x18015890f
lea rcx, [0x180257c48]
call fcn.1801a548c
cmp dword [0x180257c48], 0xffffffff
jne 0x18015890f
mov rcx, qword [0x180257700]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x1801588fd
nop dword [rax]
mov r8, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r9d, 0x811c9dc5
inc rcx
cmp byte [r8 + rcx], 0
jne 0x1801588a1
mov rdx, rbp
test rcx, rcx
je 0x1801588e0
nop dword [rax]
nop word [rax + rax]
movsx eax, byte [r8 + rdx]
xor eax, r9d
imul r9d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x1801588c0
cmp r9d, 0xf1c5030f
je 0x1801588eb
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x180158890
jmp 0x1801588fd
lea r8, str.m_flGravityMultiplier
mov rdx, qword [r10 + 0x18]
call fcn.1801a5020
mov ebp, eax
mov dword [0x180257ca8], ebp
lea rcx, [0x180257c48]
call fcn.1801a5420
movsxd rax, dword [0x180257ca8]
mulss xmm6, dword [rax + rdi]
mulss xmm6, xmm10
mov rax, qword [0x180257790]
mulss xmm6, dword [rax + 0x1c]
addss xmm6, dword [rbx + 0x54]
comiss xmm6, xmm7
jbe 0x18015894d
movss xmm0, dword [0x18022cd30]
comiss xmm0, xmm6
jb 0x18015894d
movss xmm0, dword [0x18022cabc]
jmp 0x180158955
movss xmm0, dword [0x18022cb38]
mulss xmm8, xmm0
lea rdi, [rbx + 0xa4]
lea rsi, [rbx + 0x1a0]
addss xmm8, xmm11
addss xmm8, dword [rbx + 0x18]
movss dword [rbx + 0x18], xmm8
mov rcx, qword [0x180257778]
mov rax, qword [rcx]
lea r8, [rbx + 8]
mov rdx, qword [rbx]
call qword [rax + 8]
mov rax, qword [0x180257790]
movss xmm0, dword [rax + 0x1c]
addss xmm0, dword [rbx + 0x1a4]
movss dword [rbx + 0x1a4], xmm0
movss xmm1, dword [rbx + 0x1ac]
comiss xmm0, xmm1
setae al
mov byte [rbx + 0x1b0], al
test al, al
je 0x1801589eb
mov eax, dword [rdi]
mov dword [rbx + 0x1b4], eax
mov eax, dword [rdi + 4]
mov dword [rbx + 0x1b8], eax
mov eax, dword [rdi + 8]
mov dword [rbx + 0x1bc], eax
addss xmm1, dword [rbx + 0x1a8]
movss dword [rbx + 0x1ac], xmm1
movss xmm0, dword [rsi]
ucomiss xmm0, xmm7
jp 0x180158b00
jne 0x180158b00
mov rcx, qword [rbx]
call fcn.1800b8c00
test byte [rax], 1
je 0x180158b0f
movss xmm0, dword [rbx + 0x34]
ucomiss xmm0, xmm7
jp 0x180158b0f
jne 0x180158b0f
movss xmm0, dword [rbx + 0x3c]
ucomiss xmm0, xmm7
jp 0x180158b0f
jne 0x180158b0f
movss xmm3, dword [rbx + 0x4c]
movaps xmm0, xmm3
movdqa xmm1, xmmword [0x18022d5e0]
andps xmm0, xmm1
movss xmm2, dword [0x18022c99c]
comiss xmm2, xmm0
jbe 0x180158a75
movss xmm0, dword [rbx + 0x50]
andps xmm0, xmm1
comiss xmm2, xmm0
jbe 0x180158a75
movss xmm0, dword [rbx + 0x54]
andps xmm0, xmm1
comiss xmm2, xmm0
ja 0x180158b0f
mov dword [rsp + 0x20], 0
movss xmm0, dword [rbx + 0x18]
xorps xmm0, xmmword [0x18022d600]
movss dword [rsp + 0x24], xmm0
mov dword [rsp + 0x28], 0
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x38], 0
movss dword [rsp + 0x40], xmm3
movss xmm0, dword [rbx + 0x50]
movss dword [rsp + 0x44], xmm0
movss xmm1, dword [rbx + 0x54]
mulss xmm1, xmm7
movss dword [rsp + 0x48], xmm1
lea r9, [rsp + 0x20]
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x50]
call fcn.180142d10
movss xmm0, dword [rsp + 0x50]
movss dword [rbx + 0x34], xmm0
movss xmm1, dword [rsp + 0x54]
xorps xmm1, xmmword [0x18022d600]
movss dword [rbx + 0x3c], xmm1
jmp 0x180158b0f
movss xmm0, dword [rbx + 0x18]
subss xmm0, xmm11
movss dword [rbx + 0x18], xmm0
lea r11, [rsp + 0xb0]
mov rbx, qword [r11 + 0x10]
mov rbp, qword [r11 + 0x18]
mov rsi, qword [r11 + 0x20]
mov rdi, qword [r11 + 0x28]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm10, xmmword [r11 - 0x40]
movaps xmm11, xmmword [r11 - 0x50]
mov rsp, r11
pop r14
ret