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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x38
push esi
push edi
push 0xb5f94dc6
lea eax, [ebp - 8]
mov dword [ebp - 8], 0x6c5a4374
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.101700c0
mov eax, dword [eax + 4]
test eax, eax
je 0x101694ce
cmp eax, dword [0x102b2594]
je 0x101694ce
lea eax, [ebp - 8]
push eax
call fcn.1016fcd0
jmp 0x101694d0
xor eax, eax
push 0
push 1
push str.weapon__d
lea ecx, [ebp - 0x1c]
push ecx
mov ecx, eax
call fcn.1016ee60
push 1
push 0x190
push 0
sub esp, 0xc
mov word [ebp - 4], 0x439
mov edi, esp
mov byte [ebp - 2], 0xcd
mov ecx, edi
mov dword [ebp - 8], eax
push 3
mov dword [edi], 0
mov dword [edi + 4], 0
mov dword [edi + 8], 0
call fcn.1012ca90
mov esi, dword [edi]
lea eax, [ebp - 4]
push 3
push eax
push esi
call fcn.101e3770
add esp, 0xc
mov dword [ebp - 0xc], 0
lea eax, [esi + 3]
lea ecx, [ebp - 0xc]
mov dword [edi + 4], eax
call fcn.1012ca30
mov ecx, dword [ebp - 8]
lea eax, [ebp - 0x20]
push eax
call fcn.101367e0
add dword [eax], 3
mov eax, dword [eax]
mov ecx, eax
mov dword [ebp - 0xc], eax
je 0x1016955f
mov ecx, dword [eax]
mov dword [ebp - 0xc], ecx
movsx edx, byte [eax + 9]
xor eax, eax
mov dword [ebp - 0x18], edx
mov dword [ebp - 8], eax
test edx, edx
jle 0x10169668
mov edi, dword [ecx + eax*8 + 4]
mov esi, 0x811c9dc5
mov edx, dword [ecx + eax*8]
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x24], edi
test edi, edi
je 0x101695b5
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10169591
sub ecx, edx
mov edx, 0
je 0x101695b2
movsx eax, byte [edi + edx]
inc edx
xor eax, esi
imul esi, eax, 0x1000193
cmp edx, ecx
jb 0x101695a1
mov edx, dword [ebp - 0x10]
movzx eax, dl
xor eax, 0x811c9dc5
mov edi, dword [0x102a5894]
imul ecx, eax, 0x1000193
movzx eax, dh
mov dword [ebp - 0x14], esi
xor ecx, eax
movzx eax, byte [ebp - 0x26]
imul ecx, ecx, 0x1000193
xor ecx, eax
movzx eax, byte [ebp - 0x25]
imul ecx, ecx, 0x1000193
xor ecx, eax
mov eax, dword [0x102a589c]
imul ecx, ecx, 0x1000193
and ecx, dword [0x102a58a8]
lea ecx, [eax + ecx*8]
mov eax, dword [ecx + 4]
cmp eax, edi
je 0x10169624
mov ecx, dword [ecx]
cmp edx, dword [eax + 8]
je 0x1016961c
nop dword [eax + eax]
cmp eax, ecx
je 0x10169624
mov eax, dword [eax + 4]
cmp edx, dword [eax + 8]
jne 0x10169610
test eax, eax
je 0x10169624
cmp eax, edi
jne 0x1016963b
lea eax, [ebp - 0x28]
mov ecx, 0x102a5890
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.10071370
mov eax, dword [eax]
mov dword [eax + 0xc], esi
lea eax, [ebp - 0x14]
mov ecx, 0x102a5870
push eax
lea eax, [ebp - 0x38]
push eax
call fcn.10071370
mov ecx, dword [eax]
mov eax, dword [ebp - 0x28]
mov dword [ecx + 0xc], eax
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
inc eax
mov dword [ebp - 8], eax
cmp eax, dword [ebp - 0x18]
jl 0x10169573
mov ecx, dword [0x102a5894]
mov eax, dword [ecx]
cmp eax, ecx
je 0x10169686
cmp dword [eax + 0xc], 0x437e797a
mov edx, dword [eax + 8]
je 0x10169688
mov eax, dword [eax]
cmp eax, ecx
jne 0x10169674
xor edx, edx
mov dword [0x102a58b0], edx
mov eax, dword [ecx]
cmp eax, ecx
je 0x101696a6
cmp dword [eax + 0xc], 0x2b9d7f76
mov edx, dword [eax + 8]
je 0x101696a8
mov eax, dword [eax]
cmp eax, ecx
jne 0x10169694
xor edx, edx
mov dword [0x102a58b4], edx
mov eax, dword [ecx]
cmp eax, ecx
je 0x101696c6
cmp dword [eax + 0xc], 0xd8eea1c8
mov esi, dword [eax + 8]
je 0x101696c8
mov eax, dword [eax]
cmp eax, ecx
jne 0x101696b4
xor esi, esi
lea eax, [ebp - 0x18]
mov dword [0x102a58b8], esi
push eax
lea eax, [ebp - 0x38]
mov dword [ebp - 0x18], 0x79c702ac
push eax
mov ecx, 0x102a5870
call fcn.10071370
mov eax, dword [eax]
mov dword [eax + 0xc], esi
mov eax, dword [0x102a5894]
mov ecx, dword [eax]
cmp ecx, eax
je 0x10169712
nop word [eax + eax]
cmp dword [ecx + 0xc], 0xb1751b11
mov edx, dword [ecx + 8]
je 0x10169714
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x10169700
xor edx, edx
mov dword [0x102a58bc], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x10169732
cmp dword [ecx + 0xc], 0x2552fa75
mov edx, dword [ecx + 8]
je 0x10169734
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x10169720
xor edx, edx
mov dword [0x102a58c0], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x10169752
cmp dword [ecx + 0xc], 0x9710f790
mov edx, dword [ecx + 8]
je 0x10169754
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x10169740
xor edx, edx
mov dword [0x102a58c4], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x10169772
cmp dword [ecx + 0xc], 0x423b7cb8
mov esi, dword [ecx + 8]
je 0x10169774
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x10169760
xor esi, esi
lea eax, [ebp - 0x18]
mov dword [0x102a58c8], esi
push eax
lea eax, [ebp - 0x38]
mov dword [ebp - 0x18], 0x2de88a1c
push eax
mov ecx, 0x102a5870
call fcn.10071370
mov eax, dword [eax]
mov dword [eax + 0xc], esi
mov eax, dword [0x102a5894]
mov ecx, dword [eax]
cmp ecx, eax
je 0x101697b5
cmp dword [ecx + 0xc], 0x8ada32b2
mov edx, dword [ecx + 8]
je 0x101697b7
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x101697a3
xor edx, edx
mov dword [0x102a58cc], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x101697d5
cmp dword [ecx + 0xc], 0x3670c59d
mov edx, dword [ecx + 8]
je 0x101697d7
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x101697c3
xor edx, edx
mov dword [0x102a58d0], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x101697f5
cmp dword [ecx + 0xc], 0x96148bec
mov edx, dword [ecx + 8]
je 0x101697f7
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x101697e3
xor edx, edx
mov dword [0x102a58d4], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x10169815
cmp dword [ecx + 0xc], 0x4be1480c
mov edx, dword [ecx + 8]
je 0x10169817
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x10169803
xor edx, edx
mov dword [0x102a58d8], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x10169835
cmp dword [ecx + 0xc], 0xb08b0b44
mov edx, dword [ecx + 8]
je 0x10169837
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x10169823
xor edx, edx
mov dword [0x102a58dc], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x10169855
cmp dword [ecx + 0xc], 0x51384b64
mov edx, dword [ecx + 8]
je 0x10169857
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x10169843
xor edx, edx
mov dword [0x102a58e0], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x10169875
cmp dword [ecx + 0xc], 0x94560251
mov edx, dword [ecx + 8]
je 0x10169877
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x10169863
xor edx, edx
mov dword [0x102a58e4], edx
mov ecx, dword [eax]
cmp ecx, eax
je 0x10169895
cmp dword [ecx + 0xc], 0x4bc4e61b
mov edx, dword [ecx + 8]
je 0x101698a8
mov ecx, dword [ecx]
cmp ecx, eax
jne 0x10169883
mov dword [0x102a58e8], 0
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
pop edi
mov dword [0x102a58e8], edx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret