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

Disassembly:
mov rax, rsp
mov qword [rax + 0x18], r8
mov qword [rax + 0x10], rdx
mov qword [rax + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x68]
sub rsp, 0x128
movaps xmmword [rax - 0x58], xmm6
movaps xmmword [rax - 0x68], xmm7
movaps xmmword [rax - 0x78], xmm8
movaps xmmword [rax - 0x88], xmm9
movaps xmmword [rax - 0x98], xmm10
movaps xmmword [rax - 0xa8], xmm11
movaps xmmword [rax - 0xb8], xmm12
movaps xmmword [rax - 0xc8], xmm13
movaps xmmword [rax - 0xd8], xmm14
movaps xmmword [rax - 0xe8], xmm15
mov rbx, r8
mov rax, qword [r8]
mov rdx, qword [rax + 0xa50]
mov rcx, r8
call rdx
mov dword [rbp + 0x78], eax
mov ecx, dword [0x18029475c]
mov rax, qword gs:[0x58]
mov r15, qword [rax + rcx*8]
mov r12d, 4
xor edi, edi
mov eax, dword [r12 + r15]
cmp dword [0x180297488], eax
jle 0x180111bf6
lea rcx, [0x180297488]
call fcn.180199ce8
cmp dword [0x180297488], 0xffffffff
jne 0x180111bf6
mov rcx, qword [0x180297128]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x180111bdd
nop dword [rax]
mov r9, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r8d, 0x811c9dc5
inc rcx
cmp byte [r9 + rcx], 0
jne 0x180111b91
mov rdx, rdi
test rcx, rcx
je 0x180111bd4
nop dword [rax]
nop word [rax + rax]
movsx eax, byte [rdx + r9]
xor eax, r8d
imul r8d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x180111bb0
cmp r8d, 0x24615a25
je 0x180111df4
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x180111b80
mov eax, edi
add eax, 0xffffff0c
mov dword [0x1802974d4], eax
lea rcx, [0x180297488]
call fcn.180199c7c
movsxd rax, dword [0x1802974d4]
movss xmm15, dword [rax + rbx]
mov rax, qword [rbx]
mov rdx, qword [rax + 0xbe8]
mov rcx, rbx
call rdx
mov r14d, eax
mov ecx, dword [r12 + r15]
cmp dword [0x1802974d8], ecx
jle 0x180111cc6
lea rcx, [0x1802974d8]
call fcn.180199ce8
cmp dword [0x1802974d8], 0xffffffff
jne 0x180111cc6
mov rcx, qword [0x180297128]
mov rdx, qword [rcx]
call qword [rdx + 0x40]
mov r10, rax
test rax, rax
je 0x180111cad
mov r9, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r8d, 0x811c9dc5
inc rcx
cmp byte [r9 + rcx], 0
jne 0x180111c64
mov rdx, rdi
test rcx, rcx
je 0x180111ca4
nop word [rax + rax]
movsx eax, byte [rdx + r9]
xor eax, r8d
imul r8d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x180111c80
cmp r8d, 0x24615a25
je 0x180111e09
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x180111c53
mov eax, edi
add eax, 0xffffff10
mov dword [0x1802974b8], eax
lea rcx, [0x1802974d8]
call fcn.180199c7c
movsxd rax, dword [0x1802974b8]
mov esi, dword [rax + rbx]
mov dword [rbp + 0x70], esi
mov eax, dword [r12 + r15]
cmp dword [0x180297478], eax
jle 0x180111d86
lea rcx, [0x180297478]
call fcn.180199ce8
cmp dword [0x180297478], 0xffffffff
jne 0x180111d86
mov rcx, qword [0x180297128]
mov rax, qword [rcx]
call qword [rax + 0x40]
mov r10, rax
test rax, rax
je 0x180111d6d
mov r9, qword [r10 + 0x10]
mov rcx, 0xffffffffffffffff
mov r8d, 0x811c9dc5
inc rcx
cmp byte [r9 + rcx], 0
jne 0x180111d22
mov rdx, rdi
test rcx, rcx
je 0x180111d64
nop dword [rax]
nop dword [rax + rax]
movsx eax, byte [rdx + r9]
xor eax, r8d
imul r8d, eax, 0x1000193
inc rdx
cmp rdx, rcx
jb 0x180111d40
cmp r8d, 0x24615a25
je 0x180111e1e
mov r10, qword [r10 + 0x20]
test r10, r10
jne 0x180111d11
mov eax, edi
add eax, 0xffffff14
mov dword [0x180297494], eax
lea rcx, [0x180297478]
call fcn.180199c7c
movsxd rax, dword [0x180297494]
mov r12d, dword [rax + rbx]
mov dword [rsp + 0x44], r12d
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x68]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rcx, qword [rax]
movss xmm0, dword [rcx + 0x18]
xorps xmm12, xmm12
comiss xmm0, xmm12
jbe 0x180111e33
movss xmm0, dword [0x180297484]
ucomiss xmm0, xmm15
jp 0x180111e33
jne 0x180111e33
cmp dword [0x1802974a4], r14d
jne 0x180111e33
cmp dword [0x18029747c], esi
jne 0x180111e33
cmp dword [0x180297498], r12d
jne 0x180111e33
mov rcx, rbx
call fcn.1800c3fd0
jmp 0x180112335
lea r8, str.m_iReloadMode
mov rdx, qword [r10 + 0x18]
call fcn.180199880
jmp 0x180111bdf
lea r8, str.m_iReloadMode
mov rdx, qword [r10 + 0x18]
call fcn.180199880
jmp 0x180111caf
lea r8, str.m_iReloadMode
mov rdx, qword [r10 + 0x18]
call fcn.180199880
jmp 0x180111d6f
mov rcx, rbx
call fcn.1800c3fd0
mov r13, qword [rax]
test r13, r13
je 0x180112335
movss dword [0x180297484], xmm15
mov dword [0x1802974a4], r14d
mov dword [0x18029747c], esi
mov dword [0x180297498], r12d
mov eax, 4
mov eax, dword [rax + r15]
cmp dword [0x1802a6e8c], eax
jle 0x180111ea9
lea rcx, [0x1802a6e8c]
call fcn.180199ce8
cmp dword [0x1802a6e8c], 0xffffffff
jne 0x180111ea9
lea rdx, str.tf_weapon_criticals_bucket_cap
call fcn.1801977e0
mov qword [0x1802a6f50], rax
lea rcx, [0x1802a6e8c]
call fcn.180199c7c
mov rax, qword [0x1802a6f50]
test rax, rax
je 0x180111ec1
mov rax, qword [rax + 0x38]
movss xmm9, dword [rax + 0x54]
jmp 0x180111eca
movss xmm9, dword [0x180263454]
movd xmm0, dword [r13 + 0x728]
cvtdq2ps xmm0, xmm0
mov rax, qword [0x18028e610]
mov byte [rsp + 0x20], 1
xor r9d, r9d
mov r8, rbx
lea rdx, str.mult_dmg
call rax
movaps xmm8, xmm0
mov ecx, dword [r13 + 0x72c]
cmp ecx, 1
jl 0x180111f29
mov rax, qword [0x18028e610]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mov byte [rsp + 0x20], 1
xor r9d, r9d
mov r8, rbx
lea rdx, str.mult_bullets_per_shot
call rax
cvttss2si eax, xmm0
jmp 0x180111f2e
mov eax, 1
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm8, xmm0
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x68]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rcx, qword [rax]
movss dword [rcx + 0x18], xmm8
mov rcx, rbx
call fcn.1800c3fd0
mov rcx, qword [rax]
movss xmm2, dword [0x18026327c]
test rcx, rcx
je 0x180111fa6
cmp byte [rcx + 0x764], 0
je 0x180111fa6
movss xmm0, dword [0x180263240]
divss xmm0, dword [r13 + 0x73c]
mulss xmm8, xmm0
movaps xmm0, xmm8
mulss xmm0, xmm2
comiss xmm0, xmm9
jbe 0x180111fa6
movaps xmm8, xmm9
divss xmm8, xmm2
movss xmm13, dword [0x18026314c]
movss xmm14, dword [0x1802631e8]
movss xmm11, dword [0x180263200]
movss xmm10, dword [0x1802631ac]
cmp dword [rbp + 0x78], 2
jne 0x180111fd6
movaps xmm6, xmm10
jmp 0x180112040
lea eax, [r12 + 1]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
lea eax, [rsi + 1]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
subss xmm1, xmm13
divss xmm1, xmm14
movss dword [rsp + 0x30], xmm1
mov dword [rsp + 0x34], 0x3f800000
mov dword [rbp + 0x88], 0
lea rcx, [rbp + 0x88]
lea rax, [rsp + 0x30]
comiss xmm12, xmm1
cmovbe rcx, rax
lea rax, [rsp + 0x34]
comiss xmm1, xmm11
cmovbe rax, rcx
movss xmm6, dword [rax]
addss xmm6, xmm6
addss xmm6, xmm11
mulss xmm8, xmm2
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x68]
lea rcx, [0x1802a6ef8]
call fcn.180114980
movaps xmm0, xmm8
mulss xmm0, xmm6
mov rax, qword [rax]
movss dword [rax + 0x1c], xmm0
ucomiss xmm9, xmm12
jp 0x180112072
je 0x1801120ed
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x68]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rbx, qword [rax]
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x58]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rcx, qword [rax]
movaps xmm2, xmm9
subss xmm2, dword [rcx + 0x18]
mov eax, edi
cmp dword [rbp + 0x78], 2
sete al
inc eax
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movaps xmm1, xmm8
divss xmm1, xmm0
subss xmm1, dword [rbx + 0x18]
divss xmm2, xmm1
cvttss2si ebx, xmm2
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x58]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rcx, qword [rax]
mov dword [rcx + 0x24], ebx
mov ebx, edi
mov r14d, esi
movaps xmm7, xmm15
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x58]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rcx, qword [rax]
mov r15d, dword [rcx + 0x24]
inc r15d
mov eax, 0x64
cmp r15d, eax
cmovg r15d, eax
mov esi, edi
test r15d, r15d
jle 0x1801121f6
sub r12d, r14d
nop
inc r14d
cmp dword [rbp + 0x78], 2
jne 0x18011213f
movaps xmm6, xmm10
jmp 0x1801121a2
lea eax, [r12 + r14]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
movd xmm0, r14d
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
subss xmm1, xmm13
divss xmm1, xmm14
movss dword [rsp + 0x3c], xmm1
mov dword [rsp + 0x40], 0x3f800000
mov dword [rsp + 0x38], 0
lea rcx, [rsp + 0x38]
lea rax, [rsp + 0x3c]
comiss xmm12, xmm1
cmovbe rcx, rax
lea rax, [rsp + 0x40]
comiss xmm1, xmm11
cmovbe rax, rcx
movss xmm6, dword [rax]
addss xmm6, xmm6
addss xmm6, xmm11
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x58]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rcx, qword [rax]
addss xmm7, dword [rcx + 0x18]
movaps xmm0, xmm7
movaps xmm7, xmm9
minss xmm7, xmm0
movaps xmm1, xmm8
mulss xmm1, xmm6
subss xmm7, xmm1
comiss xmm12, xmm7
ja 0x1801121e9
inc ebx
inc esi
cmp esi, r15d
jl 0x180112130
test ebx, ebx
jne 0x18011231a
mov r12d, dword [rsp + 0x44]
mov esi, dword [rbp + 0x70]
inc esi
inc r12d
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x58]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rcx, qword [rax]
addss xmm15, dword [rcx + 0x18]
movaps xmm7, xmm9
minss xmm7, xmm15
mov r14, qword [rbp + 0x80]
nop dword [rax]
dec ebx
mov rcx, r14
call fcn.1800c3fd0
mov rcx, qword [rax]
test rcx, rcx
je 0x18011226d
cmp byte [rcx + 0x764], 0
je 0x18011226d
movss xmm0, dword [r13 + 0x73c]
mov rax, qword [0x1802971a8]
divss xmm0, dword [rax + 0x1c]
cvttss2si ecx, xmm0
mov eax, edi
cdq
idiv ecx
test edx, edx
jne 0x18011226f
inc esi
cmp dword [rbp + 0x78], 2
jne 0x18011227b
movaps xmm6, xmm10
jmp 0x1801122da
movd xmm1, r12d
cvtdq2ps xmm1, xmm1
movd xmm0, esi
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
subss xmm1, xmm13
divss xmm1, xmm14
movss dword [rsp + 0x4c], xmm1
mov dword [rsp + 0x50], 0x3f800000
mov dword [rsp + 0x48], 0
lea rcx, [rsp + 0x48]
lea rax, [rsp + 0x4c]
comiss xmm12, xmm1
cmovbe rcx, rax
lea rax, [rsp + 0x50]
comiss xmm1, xmm11
cmovbe rax, rcx
movss xmm6, dword [rax]
addss xmm6, xmm6
addss xmm6, xmm11
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x58]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rcx, qword [rax]
addss xmm7, dword [rcx + 0x18]
movaps xmm0, xmm7
movaps xmm7, xmm9
minss xmm7, xmm0
movaps xmm1, xmm8
mulss xmm1, xmm6
comiss xmm7, xmm1
jae 0x18011231a
inc edi
cmp edi, 0x64
jl 0x180112230
lea r8, [rbp + 0x78]
lea rdx, [rsp + 0x58]
lea rcx, [0x1802a6ef8]
call fcn.180114980
mov rcx, qword [rax]
mov dword [rcx + 0x20], ebx
lea r11, [rsp + 0x128]
movaps xmm6, xmmword [r11 - 0x18]
movaps xmm7, xmmword [r11 - 0x28]
movaps xmm8, xmmword [r11 - 0x38]
movaps xmm9, xmmword [r11 - 0x48]
movaps xmm10, xmmword [r11 - 0x58]
movaps xmm11, xmmword [r11 - 0x68]
movaps xmm12, xmmword [r11 - 0x78]
movaps xmm13, xmmword [r11 - 0x88]
movaps xmm14, xmmword [r11 - 0x98]
movaps xmm15, xmmword [r11 - 0xa8]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret