Function at 0x1016a9a0
Capabilities:
Access peb ldr_data
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x1d8
mov ecx, dword [0x1029a48c]
push esi
push edi
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov ecx, dword fs:[0x2c]
mov esi, dword [0x1029a48c]
mov dword [esp + 0x48], eax
mov eax, dword [0x102999e4]
mov eax, dword [ecx + eax*4]
mov ecx, dword [0x102b62b8]
mov dword [esp + 0x30], eax
cmp ecx, dword [eax + 4]
jle 0x1016aa2f
push 0x102b62b8
call fcn.101e23b9
add esp, 4
cmp dword [0x102b62b8], 0xffffffff
jne 0x1016aa2f
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], str.ItemSchemaAttributeCount
push eax
lea eax, [esp + 0x74]
mov ecx, 0x102a57b4
push eax
call fcn.10006340
push 0x102b62b8
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [0x102b62b0], eax
call fcn.101e236f
add esp, 4
mov eax, dword [0x102b62b0]
mov ecx, dword [esp + 0x30]
mov edi, dword [0x1029a48c]
mov eax, dword [esi + eax]
mov dword [esp + 0x58], eax
mov eax, dword [0x102b62b4]
cmp eax, dword [ecx + 4]
jle 0x1016aa9e
push 0x102b62b4
call fcn.101e23b9
add esp, 4
cmp dword [0x102b62b4], 0xffffffff
jne 0x1016aa9e
lea eax, [esp + 0x4c]
mov dword [esp + 0x4c], str.ItemSchemaAttributeList
push eax
lea eax, [esp + 0x17c]
mov ecx, 0x102a57b4
push eax
call fcn.10006340
push 0x102b62b4
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [0x102b62ac], eax
call fcn.101e236f
add esp, 4
mov esi, dword [0x102b62ac]
mov esi, dword [edi + esi]
xor edi, edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x38], edi
cmp dword [esp + 0x48], edi
jbe 0x1016b5ab
nop dword [eax + eax]
mov ecx, dword [0x1029a48c]
test edi, edi
js 0x1016b59c
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
cmp edi, eax
jge 0x1016b59c
mov eax, dword [0x102a5814]
lea ecx, [edi + edi*2]
lea eax, [eax + ecx*4]
add eax, 4
je 0x1016b59c
mov eax, dword [eax]
mov dword [esp + 0x20], eax
test eax, eax
je 0x1016b59c
mov eax, dword [0x102999e4]
mov ecx, dword fs:[0x2c]
mov edi, dword [ecx + eax*4]
mov eax, dword [0x102bb9bc]
cmp eax, dword [edi + 4]
jle 0x1016ab67
push 0x102bb9bc
call fcn.101e23b9
add esp, 4
cmp dword [0x102bb9bc], 0xffffffff
jne 0x1016ab67
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], str.StaticData
push eax
lea eax, [esp + 0x184]
mov ecx, 0x102a57b4
push eax
call fcn.10006340
push 0x102bb9bc
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [0x102bb9c0], eax
call fcn.101e236f
add esp, 4
mov eax, dword [0x102bb9c4]
cmp eax, dword [edi + 4]
jle 0x1016abc0
push 0x102bb9c4
call fcn.101e23b9
add esp, 4
cmp dword [0x102bb9c4], 0xffffffff
jne 0x1016abc0
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], str.WeaponTypeString
push eax
lea eax, [esp + 0x18c]
mov ecx, 0x102a57b4
push eax
call fcn.10006340
push 0x102bb9c4
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [0x102bb9c8], eax
call fcn.101e236f
add esp, 4
mov eax, dword [0x102bb9c0]
add eax, dword [esp + 0x20]
je 0x1016abcd
mov eax, dword [eax]
test eax, eax
je 0x1016b598
add eax, dword [0x102bb9c8]
je 0x1016abdf
mov eax, dword [eax]
test eax, eax
je 0x1016b598
mov edx, eax
mov dword [esp + 0x14], 0x811c9dc5
lea edi, [edx + 1]
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x1016abf4
sub edx, edi
mov edi, 0
je 0x1016ac21
mov esi, dword [esp + 0x14]
movsx ecx, byte [edi + eax]
inc edi
xor ecx, esi
imul esi, ecx, 0x1000193
cmp edi, edx
jb 0x1016ac08
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
mov ecx, 0x102a5870
mov dword [esp + 0x50], eax
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x194]
push eax
call fcn.10071370
mov eax, dword [eax]
mov ecx, dword [eax + 0xc]
cmp ecx, 0xffffffff
je 0x1016b598
mov edi, dword [esp + 0x20]
xorps xmm0, xmm0
movlpd qword [esp + 0xa4], xmm0
movlpd qword [esp + 0xac], xmm0
movlpd qword [esp + 0xb4], xmm0
mov eax, dword [edi + 8]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x34]
push eax
movlpd qword [esp + 0xc0], xmm0
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xc8], 0x102985c4
call fcn.1016c090
lea ecx, [esp + 0x54]
mov dword [esp + 0x54], 0xafb15f89
push ecx
lea ecx, [esp + 0x19c]
push ecx
mov ecx, eax
call fcn.1016c8d0
lea ecx, [esp + 0xa0]
push ecx
mov ecx, dword [eax]
add ecx, 0x10
call fcn.10166930
mov eax, dword [esp + 0xc4]
and eax, 3
sub eax, 1
je 0x1016ace8
sub eax, 1
jne 0x1016acfd
lea eax, [esp + 0xa0]
push eax
jmp 0x1016acef
push dword [esp + 0xbc]
mov eax, dword [esp + 0xc4]
mov eax, dword [eax]
call eax
add esp, 4
mov ecx, dword [esp + 0x30]
mov eax, dword [0x102bb9cc]
mov dword [esp + 0xc4], 0
cmp eax, dword [ecx + 4]
jle 0x1016ad69
push 0x102bb9cc
call fcn.101e23b9
add esp, 4
cmp dword [0x102bb9cc], 0xffffffff
jne 0x1016ad65
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], str.ItemAttributeCount
push eax
lea eax, [esp + 0x1a4]
mov ecx, 0x102a57b4
push eax
call fcn.10006340
push 0x102bb9cc
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [0x102bb9d0], eax
call fcn.101e236f
add esp, 4
mov ecx, dword [esp + 0x30]
mov eax, dword [0x102bb9d4]
cmp eax, dword [ecx + 4]
jle 0x1016adc6
push 0x102bb9d4
call fcn.101e23b9
add esp, 4
cmp dword [0x102bb9d4], 0xffffffff
jne 0x1016adc2
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], str.ItemAttributeList
push eax
lea eax, [esp + 0x1ac]
mov ecx, 0x102a57b4
push eax
call fcn.10006340
push 0x102bb9d4
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [0x102bb9d8], eax
call fcn.101e236f
add esp, 4
mov ecx, dword [esp + 0x30]
mov eax, dword [0x102bb9dc]
cmp eax, dword [ecx + 4]
jle 0x1016ae1f
push 0x102bb9dc
call fcn.101e23b9
add esp, 4
cmp dword [0x102bb9dc], 0xffffffff
jne 0x1016ae1f
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], str.ItemAttributeSize
push eax
lea eax, [esp + 0x1b4]
mov ecx, 0x102a57b4
push eax
call fcn.10006340
push 0x102bb9dc
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
mov dword [0x102bb9e0], eax
call fcn.101e236f
add esp, 4
mov eax, dword [0x102bb9d0]
add eax, edi
mov dword [esp + 0x1c], eax
je 0x1016ae32
mov eax, dword [eax]
mov dword [esp + 0x1c], eax
test eax, eax
jle 0x1016b598
add edi, dword [0x102bb9d8]
je 0x1016ae44
mov edi, dword [edi]
xor ecx, ecx
mov dword [esp + 0x44], ecx
nop word [eax + eax]
lea eax, [ecx + edi]
add ecx, dword [0x102bb9e0]
mov dword [esp + 0x70], ecx
lea ecx, [eax + 8]
mov dword [esp + 0x20], eax
test ecx, ecx
je 0x1016ae71
cmp dword [ecx], 0
jne 0x1016b581
mov ecx, eax
test eax, eax
je 0x1016ae79
mov ecx, dword [eax]
movsx eax, cx
cmp eax, dword [esp + 0x58]
jge 0x1016b581
lea eax, [esi + eax*4]
test eax, eax
je 0x1016b581
mov eax, dword [eax]
test eax, eax
je 0x1016b581
lea esi, [eax + 0x34]
mov dword [esp + 0x24], esi
test esi, esi
je 0x1016aeac
mov esi, dword [esi]
mov dword [esp + 0x24], esi
add eax, 0xc
mov ecx, 2
dec ecx
test eax, eax
je 0x1016aebb
mov eax, dword [eax]
mov edx, edi
mov dword [esp + 0x40], edx
test ecx, ecx
jne 0x1016aeb4
lea edi, [eax - 4]
mov eax, edi
test edi, edi
je 0x1016aed0
mov eax, dword [edi]
sub esp, 0xc
mov dword [esp + 0x20], eax
mov eax, esp
mov dword [esp + 0x48], 0
mov ecx, eax
mov dword [esp + 0x38], eax
push 4
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
call fcn.1012ca90
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x38], 0
mov ecx, dword [edx]
mov dword [ecx], eax
lea eax, [ecx + 4]
lea ecx, [esp + 0x38]
mov dword [edx + 4], eax
call fcn.1012ca30
lea ecx, [esp + 0x20]
call fcn.10166580
mov edx, dword [esp + 0x40]
mov dword [esp + 0x28], edx
test al, al
je 0x1016b579
mov dword [esp + 0x28], edx
test edi, edi
je 0x1016b579
mov eax, dword [edi]
mov edi, edx
test eax, eax
je 0x1016b57d
mov eax, dword [eax + 0xc]
test eax, eax
je 0x1016b57d
add eax, 8
mov dword [esp + 0x2c], eax
je 0x1016b57d
mov ecx, eax
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1016af73
sub ecx, edi
mov edi, edx
je 0x1016b57d
mov ecx, dword [esp + 0x2c]
mov eax, 0x811c9dc5
mov dword [esp + 0x14], eax
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1016af94
mov eax, dword [esp + 0x40]
sub ecx, edx
mov edx, 0
mov edi, eax
je 0x1016b57d
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
nop word [eax + eax]
movsx eax, byte [edx + edi]
inc edx
xor eax, esi
imul esi, eax, 0x1000193
cmp edx, ecx
jb 0x1016afc0
mov edi, dword [esp + 0x28]
cmp esi, 0xa2f3d849
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x14]
ja 0x1016b352
cmp eax, 0xa2f3d849
je 0x1016b24c
cmp eax, 0x3470904a
je 0x1016b13e
cmp eax, 0x55f8c611
jne 0x1016b57d
mov eax, dword [esp + 0x20]
add eax, 4
je 0x1016b019
mov eax, dword [eax]
add eax, 8
mov ecx, 2
dec ecx
test eax, eax
je 0x1016b028
mov eax, dword [eax]
mov edx, edi
mov dword [esp + 0x24], edx
test ecx, ecx
jne 0x1016b021
xorps xmm0, xmm0
mov dword [esp + 0xc8], eax
lea eax, [esp + 0x34]
movlpd qword [esp + 0xcc], xmm0
push eax
movlpd qword [esp + 0xd8], xmm0
movlpd qword [esp + 0xe0], xmm0
movlpd qword [esp + 0xe8], xmm0
mov dword [esp + 0xf0], 0x10298e18
call fcn.1016c090
mov dword [esp + 0x2c], eax
mov dword [esp + 0x20], 0x811c9dc5
test esi, esi
jne 0x1016b08f
mov dword [esp + 0x20], 0x811c9dc5
jmp 0x1016b0cb
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1016b094
mov eax, dword [esp + 0x24]
sub ecx, edx
mov edx, 0
mov edi, eax
je 0x1016b0cb
mov edi, dword [esp + 0x20]
mov dword [esp + 0x28], eax
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x1016b0b2
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x1dc]
push eax
call fcn.1016c8d0
lea ecx, [esp + 0xc8]
push ecx
mov ecx, dword [eax]
add ecx, 0x10
call fcn.10166930
mov eax, dword [esp + 0xec]
and eax, 3
sub eax, 1
je 0x1016b119
sub eax, 1
jne 0x1016b12e
lea eax, [esp + 0xc8]
push eax
jmp 0x1016b120
push dword [esp + 0xe4]
mov eax, dword [esp + 0xec]
mov eax, dword [eax]
call eax
add esp, 4
mov dword [esp + 0xec], 0
jmp 0x1016b57d
mov eax, dword [esp + 0x20]
xorps xmm0, xmm0
movlpd qword [esp + 0xf4], xmm0
movlpd qword [esp + 0xfc], xmm0
movlpd qword [esp + 0x104], xmm0
movss xmm1, dword [eax + 4]
lea eax, [esp + 0x34]
push eax
movlpd qword [esp + 0x110], xmm0
movss dword [esp + 0xf4], xmm1
mov dword [esp + vtable.type_info.0], 0x102985d0
call fcn.1016c090
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 0x811c9dc5
test esi, esi
jne 0x1016b1a3
mov eax, 0x811c9dc5
jmp 0x1016b1dd
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1016b1a8
sub ecx, edx
mov edx, 0
je 0x1016b1d9
mov edi, dword [esp + 0x14]
nop dword [eax]
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x1016b1c0
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x1bc]
push eax
call fcn.1016c8d0
lea ecx, [esp + 0xf0]
push ecx
mov ecx, dword [eax]
add ecx, 0x10
call fcn.10166930
mov eax, dword [esp + 0x114]
and eax, 3
sub eax, 1
je 0x1016b227
sub eax, 1
jne 0x1016b23c
lea eax, [esp + 0xf0]
push eax
jmp 0x1016b22e
push dword [esp + 0x10c]
mov eax, dword [esp + 0x114]
mov eax, dword [eax]
call eax
add esp, 4
mov dword [esp + 0x114], 0
jmp 0x1016b57d
mov eax, dword [esp + 0x20]
xorps xmm0, xmm0
movlpd qword [esp + 0x11c], xmm0
movlpd qword [esp + 0x124], xmm0
movlpd qword [esp + 0x12c], xmm0
mov eax, dword [eax + 4]
mov dword [esp + 0x118], eax
lea eax, [esp + 0x34]
push eax
movlpd qword [esp + 0x138], xmm0
mov dword [esp + vtable.type_info.0], 0x10298cf4
call fcn.1016c090
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 0x811c9dc5
test esi, esi
jne 0x1016b2ad
mov eax, 0x811c9dc5
jmp 0x1016b2e3
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1016b2b2
sub ecx, edx
mov edx, 0
je 0x1016b2df
mov edi, dword [esp + 0x14]
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x1016b2c6
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x64], eax
lea eax, [esp + 0x64]
push eax
lea eax, [esp + 0x1c4]
push eax
call fcn.1016c8d0
lea ecx, [esp + 0x118]
push ecx
mov ecx, dword [eax]
add ecx, 0x10
call fcn.10166930
mov eax, dword [esp + 0x13c]
and eax, 3
sub eax, 1
je 0x1016b32d
sub eax, 1
jne 0x1016b342
lea eax, [esp + 0x118]
push eax
jmp 0x1016b334
push dword [esp + 0x134]
mov eax, dword [esp + 0x13c]
mov eax, dword [eax]
call eax
add esp, 4
mov dword [esp + 0x13c], 0
jmp 0x1016b57d
cmp eax, 0xc38cc1e5
je 0x1016b47b
cmp eax, 0xfbedee47
jne 0x1016b57d
mov eax, dword [esp + 0x20]
xorps xmm0, xmm0
movlpd qword [esp + 0x84], xmm0
movlpd qword [esp + 0x8c], xmm0
mov dword [esp + 0x94], 0
movq xmm0, qword [eax + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x80], eax
mov eax, 0x10298e28
or eax, 2
movq qword [esp + 0x78], xmm0
mov dword [esp + 0x9c], eax
lea eax, [esp + 0x34]
push eax
mov dword [esp + 0x9c], 0x10238464
call fcn.1016c090
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 0x811c9dc5
test esi, esi
jne 0x1016b3dc
mov eax, 0x811c9dc5
jmp 0x1016b412
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1016b3e1
sub ecx, edx
mov edx, 0
je 0x1016b40e
mov edi, dword [esp + 0x14]
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x1016b3f5
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x68], eax
lea eax, [esp + 0x68]
push eax
lea eax, [esp + 0x1cc]
push eax
call fcn.1016c8d0
lea ecx, [esp + 0x78]
push ecx
mov ecx, dword [eax]
add ecx, 0x10
call fcn.10166930
mov eax, dword [esp + 0x9c]
and eax, 3
sub eax, 1
je 0x1016b456
sub eax, 1
jne 0x1016b46b
lea eax, [esp + 0x78]
push eax
jmp 0x1016b45d
push dword [esp + 0x94]
mov eax, dword [esp + 0x9c]
mov eax, dword [eax]
call eax
add esp, 4
mov dword [esp + 0x9c], 0
jmp 0x1016b57d
mov eax, dword [esp + 0x20]
xorps xmm0, xmm0
movaps xmmword [esp + 0x140], xmm0
movq qword [esp + 0x160], xmm0
movaps xmmword [esp + 0x150], xmm0
mov al, byte [eax + 4]
mov byte [esp + 0x140], al
lea eax, [esp + 0x34]
push eax
mov dword [esp + vtable.type_info.0], 0x102985b8
call fcn.1016c090
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], 0x811c9dc5
test esi, esi
jne 0x1016b4d1
mov eax, 0x811c9dc5
jmp 0x1016b50d
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1016b4d6
sub ecx, edx
mov edx, 0
je 0x1016b509
mov edi, dword [esp + 0x14]
nop word [eax + eax]
movsx eax, byte [edx + esi]
inc edx
xor eax, edi
imul edi, eax, 0x1000193
cmp edx, ecx
jb 0x1016b4f0
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x6c], eax
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0x1d4]
push eax
call fcn.1016c8d0
lea ecx, [esp + 0x140]
push ecx
mov ecx, dword [eax]
add ecx, 0x10
call fcn.10166930
mov eax, dword [esp + 0x164]
and eax, 3
sub eax, 1
je 0x1016b557
sub eax, 1
jne 0x1016b56c
lea eax, [esp + 0x140]
push eax
jmp 0x1016b55e
push dword [esp + 0x15c]
mov eax, dword [esp + 0x164]
mov eax, dword [eax]
call eax
add esp, 4
mov dword [esp + 0x164], 0
jmp 0x1016b57d
mov edi, dword [esp + 0x28]
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x70]
inc eax
mov dword [esp + 0x44], eax
cmp eax, dword [esp + 0x1c]
jl 0x1016ae50
mov edi, dword [esp + 0x38]
inc edi
mov dword [esp + 0x38], edi
cmp edi, dword [esp + 0x48]
jb 0x1016aac0
pop edi
pop esi
mov esp, ebp
pop ebp
ret