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

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
push rdi
sub rsp, 0xb0
movaps xmmword [rax - 0x18], xmm6
movaps xmmword [rax - 0x28], xmm7
movaps xmmword [rax - 0x38], xmm8
movaps xmmword [rax - 0x48], xmm9
mov rax, qword [0x180066240]
xor rax, rsp
mov qword [rsp + 0x60], rax
mov rbx, qword [0x1800ad1a0]
mov rax, qword [0x1800ad150]
lea rcx, str.WeaponCamera
call rax
mov rcx, rax
call rbx
mov rdi, rax
test rax, rax
je 0x18004b3e0
mov rbx, qword [0x1800ad1b0]
mov rdx, qword [0x1800ad150]
lea rcx, str.WeaponManager
call rdx
mov rdx, rax
mov rcx, rdi
call rbx
mov rbx, rax
test rax, rax
je 0x18004b3e0
mov r8, qword [0x1800ad0f8]
lea rdx, str.GIGKIOBACJH
mov rcx, qword [rax]
call r8
xor edi, edi
test rax, rax
je 0x18004af70
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b3e0
mov rbx, qword [rax + rbx]
jmp 0x18004afa1
mov rax, qword [0x1800ad110]
lea rdx, str.GIGKIOBACJH
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004af9e
mov rax, qword [rax + 0x10]
test rax, rax
je 0x18004af9e
mov rax, qword [rax]
mov rcx, rbx
call rax
mov rbx, rax
jmp 0x18004afa1
mov rbx, rdi
test rbx, rbx
je 0x18004b3e0
mov rax, qword [0x1800ad1f8]
mov rcx, rbx
call rax
lea rdx, [rsp + 0x40]
mov rcx, rax
call fcn.18004a630
nop
lea rdx, [rsp + 0x40]
cmp qword [rsp + 0x58], 0xf
cmova rdx, qword [rsp + 0x40]
movabs r9, 0xcbf29ce484222325
mov rcx, rdi
mov r8, qword [rsp + 0x50]
test r8, r8
je 0x18004b013
movabs r10, 0x100000001b3
nop word [rax + rax]
movzx eax, byte [rdx + rcx]
xor r9, rax
imul r9, r10
inc rcx
cmp rcx, r8
jb 0x18004b000
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0x20]
call fcn.180051430
mov rcx, qword [rax + 8]
test rcx, rcx
je 0x18004b038
cmp rcx, qword [0x1800ad4f8]
jne 0x18004b169
mov rax, qword [0x1800ad0f8]
lea rdx, str.recoilX
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b060
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b08f
movss xmm9, dword [rax + rbx]
jmp 0x18004b093
mov rax, qword [0x1800ad110]
lea rdx, str.recoilX
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b08f
mov rax, qword [rax + 0x10]
test rax, rax
je 0x18004b08f
mov rax, qword [rax]
mov rcx, rbx
call rax
movaps xmm9, xmm0
jmp 0x18004b093
xorps xmm9, xmm9
mov rax, qword [0x1800ad0f8]
lea rdx, str.recoilY
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b0bb
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b0ea
movss xmm8, dword [rax + rbx]
jmp 0x18004b0ee
mov rax, qword [0x1800ad110]
lea rdx, str.recoilY
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b0ea
mov rax, qword [rax + 0x10]
test rax, rax
je 0x18004b0ea
mov rax, qword [rax]
mov rcx, rbx
call rax
movaps xmm8, xmm0
jmp 0x18004b0ee
xorps xmm8, xmm8
mov rax, qword [0x1800ad0f8]
lea rdx, str.recoilZ
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b115
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b143
movss xmm7, dword [rax + rbx]
jmp 0x18004b146
mov rax, qword [0x1800ad110]
lea rdx, str.recoilZ
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b143
mov rax, qword [rax + 0x10]
test rax, rax
je 0x18004b143
mov rax, qword [rax]
mov rcx, rbx
call rax
movaps xmm7, xmm0
jmp 0x18004b146
xorps xmm7, xmm7
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0x20]
call fcn.180050870
mov rcx, qword [rax]
movss dword [rcx + 0x30], xmm9
movss dword [rcx + 0x34], xmm8
movss dword [rcx + 0x38], xmm7
cmp byte [0x1800ad177], 0
je 0x18004b275
mov rax, qword [0x1800ad0f8]
lea rdx, str.recoilX
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b19b
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b1c7
mov dword [rax + rbx], edi
jmp 0x18004b1c7
mov rax, qword [0x1800ad110]
lea rdx, str.recoilX
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b1c7
mov rax, qword [rax + 0x18]
test rax, rax
je 0x18004b1c7
mov rax, qword [rax]
xorps xmm1, xmm1
mov rcx, rbx
call rax
mov rax, qword [0x1800ad0f8]
lea rdx, str.recoilY
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b1ec
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b218
mov dword [rax + rbx], edi
jmp 0x18004b218
mov rax, qword [0x1800ad110]
lea rdx, str.recoilY
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b218
mov rax, qword [rax + 0x18]
test rax, rax
je 0x18004b218
mov rax, qword [rax]
xorps xmm1, xmm1
mov rcx, rbx
call rax
mov rax, qword [0x1800ad0f8]
lea rdx, str.recoilZ
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b244
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b3a0
mov dword [rax + rbx], edi
jmp 0x18004b3a0
mov rax, qword [0x1800ad110]
lea rdx, str.recoilZ
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b3a0
mov rax, qword [rax + 0x18]
test rax, rax
je 0x18004b3a0
xorps xmm1, xmm1
jmp 0x18004b397
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0x30]
call fcn.180050870
mov rcx, qword [rax]
movsd xmm0, qword [rcx + 0x30]
movsd qword [rsp + 0x20], xmm0
mov edi, dword [rcx + 0x38]
mov rax, qword [0x1800ad0f8]
lea rdx, str.recoilX
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b2c2
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b2f1
movss xmm0, dword [rsp + 0x20]
movss dword [rax + rbx], xmm0
jmp 0x18004b2f1
mov rax, qword [0x1800ad110]
lea rdx, str.recoilX
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b2f1
mov rax, qword [rax + 0x18]
test rax, rax
je 0x18004b2f1
mov rax, qword [rax]
movss xmm1, dword [rsp + 0x20]
mov rcx, rbx
call rax
mov rax, qword [0x1800ad0f8]
lea rdx, str.recoilY
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b31e
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b34d
movss xmm0, dword [rsp + 0x24]
movss dword [rax + rbx], xmm0
jmp 0x18004b34d
mov rax, qword [0x1800ad110]
lea rdx, str.recoilY
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b34d
mov rax, qword [rax + 0x18]
test rax, rax
je 0x18004b34d
mov rax, qword [rax]
movss xmm1, dword [rsp + 0x24]
mov rcx, rbx
call rax
mov rax, qword [0x1800ad0f8]
lea rdx, str.recoilZ
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b372
movsxd rax, dword [rax + 0x18]
test eax, eax
js 0x18004b3a0
mov dword [rax + rbx], edi
jmp 0x18004b3a0
mov rax, qword [0x1800ad110]
lea rdx, str.recoilZ
mov rcx, qword [rbx]
call rax
test rax, rax
je 0x18004b3a0
mov rax, qword [rax + 0x18]
test rax, rax
je 0x18004b3a0
movd xmm1, edi
mov rcx, rbx
mov rax, qword [rax]
call rax
nop
mov rdx, qword [rsp + 0x58]
cmp rdx, 0xf
jbe 0x18004b3e0
inc rdx
mov rcx, qword [rsp + 0x40]
mov rax, rcx
cmp rdx, 0x1000
jb 0x18004b3db
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x18004b3db
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.18005338c
mov rcx, qword [rsp + 0x60]
xor rcx, rsp
call fcn.1800531f0
lea r11, [rsp + 0xb0]
mov rbx, qword [r11 + 0x10]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
movaps xmm9, xmmword [r11 - 0x40]
mov rsp, r11
pop rdi
ret