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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x40
mov esi, dword [ebp + 8]
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x1000ed80
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
test esi, esi
je 0x10008544
mov eax, dword [0x1012d47c]
test al, 1
je 0x1000855a
mov edi, dword [0x1012d478]
mov edi, dword [edi + 4]
movzx ebx, word [edi + esi]
mov edx, dword [0x1012d320]
mov ecx, dword [edx + 0x40]
mov edx, dword [ecx]
mov edx, dword [edx + 8]
test al, 1
je 0x100085ad
add edi, esi
movzx eax, word [edi]
mov dword [ebp - 0x10], 0xffffffff
push eax
call edx
lea ecx, [ebx - 0x31]
cmp cx, 0xfff9
ja 0x10008540
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 0x30]
test cl, 1
jne 0x10008540
test ecx, 0x800
je 0x10008544
mov ecx, dword [0x1012d484]
test cl, 1
je 0x100087d4
mov edi, dword [0x1012d480]
mov ecx, dword [edi + 4]
vmovss xmm0, dword [ecx + esi]
mov ecx, dword [0x1012d364]
vucomiss xmm0, dword [ecx + 0x10]
jae 0x10008544
cmp bx, 0x40
je 0x10008540
test eax, eax
je 0x10008544
cmp dword [eax + 0xcc], 1
jne 0x10008544
mov al, 1
jmp 0x10008546
xor eax, eax
mov ecx, dword [ebp - 0x18]
mov dword fs:[0], ecx
add esp, 0x40
pop esi
pop edi
pop ebx
pop ebp
ret 8
or eax, 1
mov dword [0x1012d47c], eax
mov eax, dword [0x1012d324]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x10], 0
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x20], ecx
push str.CBaseAttributableItem__m_iItemDefinitionIndex
call fcn.100083b0
mov esi, dword [ebp - 0x38]
cmp dword [ebp - 0x34], 0x10
jb 0x10008590
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x20], eax
test esi, esi
je 0x1000860d
mov eax, esi
and eax, 3
mov dword [ebp - 0x24], eax
cmp esi, 4
jae 0x1000861e
mov ecx, 0x811c9dc5
xor edx, edx
jmp 0x10008667
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x28], ebx
or eax, 1
mov dword [0x1012d47c], eax
mov eax, dword [0x1012d324]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x10], 2
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x20], ecx
push str.CBaseAttributableItem__m_iItemDefinitionIndex
call fcn.100083b0
mov esi, dword [ebp - 0x38]
cmp dword [ebp - 0x34], 0x10
jb 0x100085ec
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x20], eax
test esi, esi
je 0x10008614
mov eax, esi
and eax, 3
mov dword [ebp - 0x24], eax
cmp esi, 4
jae 0x100086f1
mov ecx, 0x811c9dc5
xor edx, edx
jmp 0x1000873a
mov ecx, 0x811c9dc5
jmp 0x10008684
mov ecx, 0x811c9dc5
jmp 0x10008757
mov edi, esi
and edi, 0xfffffffc
mov ecx, 0x811c9dc5
xor edx, edx
mov eax, dword [ebp - 0x20]
movzx ebx, byte [eax + edx]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 1]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 2]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 3]
xor ebx, ecx
imul ecx, ebx, 0x1000193
add edx, 4
cmp edi, edx
jne 0x1000862d
cmp dword [ebp - 0x24], 0
je 0x10008684
add edx, dword [ebp - 0x20]
xor edi, edi
movzx ebx, byte [edx + edi]
xor ebx, ecx
imul ecx, ebx, 0x1000193
inc edi
cmp dword [ebp - 0x24], edi
jne 0x10008672
mov edx, dword [ebp - 0x28]
and ecx, dword [edx + 0x18]
mov eax, dword [edx + 0xc]
mov edi, dword [eax + ecx*8 + 4]
cmp edi, dword [edx + 4]
je 0x100088fe
add ecx, ecx
mov ebx, dword [eax + ecx*4]
cmp esi, dword [edi + 0x18]
je 0x100086b4
cmp edi, ebx
je 0x100088fe
mov edi, dword [edi + 4]
cmp esi, dword [edi + 0x18]
jne 0x100086a4
cmp dword [edi + 0x1c], 0x10
jb 0x100086bf
mov eax, dword [edi + 8]
jmp 0x100086c2
lea eax, [edi + 8]
push esi
push eax
push dword [ebp - 0x20]
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
jne 0x100086a4
add edi, 0x20
lea ecx, [ebp - 0x48]
call fcn.100029d0
mov dword [0x1012d478], edi
mov eax, dword [0x1012d47c]
mov esi, dword [ebp + 8]
jmp 0x100084bb
mov edi, esi
and edi, 0xfffffffc
mov ecx, 0x811c9dc5
xor edx, edx
mov eax, dword [ebp - 0x20]
movzx ebx, byte [eax + edx]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 1]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 2]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 3]
xor ebx, ecx
imul ecx, ebx, 0x1000193
add edx, 4
cmp edi, edx
jne 0x10008700
cmp dword [ebp - 0x24], 0
je 0x10008757
add edx, dword [ebp - 0x20]
xor edi, edi
movzx ebx, byte [edx + edi]
xor ebx, ecx
imul ecx, ebx, 0x1000193
inc edi
cmp dword [ebp - 0x24], edi
jne 0x10008745
mov edx, dword [ebp - 0x30]
and ecx, dword [edx + 0x18]
mov eax, dword [edx + 0xc]
mov edi, dword [eax + ecx*8 + 4]
cmp edi, dword [edx + 4]
je 0x10008912
add ecx, ecx
mov ebx, dword [eax + ecx*4]
cmp esi, dword [edi + 0x18]
je 0x10008787
cmp edi, ebx
je 0x10008912
mov edi, dword [edi + 4]
cmp esi, dword [edi + 0x18]
jne 0x10008777
cmp dword [edi + 0x1c], 0x10
jb 0x10008792
mov eax, dword [edi + 8]
jmp 0x10008795
lea eax, [edi + 8]
push esi
push eax
push dword [ebp - 0x20]
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
jne 0x10008777
lea esi, [edi + 0x20]
lea ecx, [ebp - 0x48]
call fcn.100029d0
mov dword [0x1012d478], esi
mov edi, dword [edi + 0x24]
mov esi, dword [ebp + 8]
add edi, esi
mov dword [ebp - 0x10], 0xffffffff
mov ebx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x4c]
jmp 0x100084da
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], ebx
or ecx, 1
mov dword [0x1012d484], ecx
mov eax, dword [0x1012d324]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x10], 4
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x20], ecx
push str.CBaseCombatWeapon__m_flNextSecondaryAttack
call fcn.100083b0
mov esi, dword [ebp - 0x38]
cmp dword [ebp - 0x34], 0x10
jb 0x10008811
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x20], eax
test esi, esi
je 0x1000882b
mov eax, esi
and eax, 3
mov dword [ebp - 0x24], eax
cmp esi, 4
jae 0x10008832
mov ecx, 0x811c9dc5
xor edx, edx
jmp 0x1000887b
mov ecx, 0x811c9dc5
jmp 0x10008898
mov edi, esi
and edi, 0xfffffffc
mov ecx, 0x811c9dc5
xor edx, edx
mov eax, dword [ebp - 0x20]
movzx ebx, byte [eax + edx]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 1]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 2]
xor ebx, ecx
imul ecx, ebx, 0x1000193
movzx ebx, byte [eax + edx + 3]
xor ebx, ecx
imul ecx, ebx, 0x1000193
add edx, 4
cmp edi, edx
jne 0x10008841
cmp dword [ebp - 0x24], 0
je 0x10008898
add edx, dword [ebp - 0x20]
xor edi, edi
movzx ebx, byte [edx + edi]
xor ebx, ecx
imul ecx, ebx, 0x1000193
inc edi
cmp dword [ebp - 0x24], edi
jne 0x10008886
mov edx, dword [ebp - 0x30]
and ecx, dword [edx + 0x18]
mov eax, dword [edx + 0xc]
mov edi, dword [eax + ecx*8 + 4]
cmp edi, dword [edx + 4]
je 0x10008926
add ecx, ecx
mov ebx, dword [eax + ecx*4]
cmp esi, dword [edi + 0x18]
je 0x100088c0
cmp edi, ebx
je 0x10008926
mov edi, dword [edi + 4]
cmp esi, dword [edi + 0x18]
jne 0x100088b4
cmp dword [edi + 0x1c], 0x10
jb 0x100088cb
mov eax, dword [edi + 8]
jmp 0x100088ce
lea eax, [edi + 8]
push esi
push eax
push dword [ebp - 0x20]
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
jne 0x100088b4
add edi, 0x20
lea ecx, [ebp - 0x48]
call fcn.100029d0
mov dword [0x1012d480], edi
mov esi, dword [ebp + 8]
mov ebx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x2c]
jmp 0x10008518
mov dword [ebp - 0x10], 1
push 0x1011ed9d
call sub.MSVCP140.dll_void___cdecl_std::_Xout_of_range_char_const__
add esp, 4
mov dword [ebp - 0x10], 3
push 0x1011ed9d
call sub.MSVCP140.dll_void___cdecl_std::_Xout_of_range_char_const__
add esp, 4
mov dword [ebp - 0x10], 5
push 0x1011ed9d
call sub.MSVCP140.dll_void___cdecl_std::_Xout_of_range_char_const__
add esp, 4
nop word [eax + eax]
push ebp
sub esp, 0xc
add ebp, 0xc
lea ecx, [ebp - 0x48]
call fcn.100029d0
add esp, 0xc
pop ebp
ret