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

Disassembly:
sub esp, 0x58
mov eax, dword fs:[0x2c]
mov edx, dword [0x1015856c]
push ebx
push ebp
push esi
mov esi, dword [eax + edx*4]
mov eax, dword [0x1015eef0]
push edi
mov edi, ecx
mov dword [esp + 0x14], edi
cmp eax, dword [esi + 4]
jle 0x100f4b35
push 0x1015eef0
call fcn.100fdcb4
add esp, 4
cmp dword [0x1015eef0], 0xffffffff
jne 0x100f4b35
push 2
push 0x1015eef4
call fcn.101002f1
push 0x1012a160
call fcn.100fe05d
add esp, 0xc
push 0x1015eef0
call fcn.100fdc6a
add esp, 4
push 0x1015eef4
call fcn.10100310
add esp, 4
test eax, eax
jne 0x100f550d
mov eax, dword [0x1015ef24]
cmp eax, dword [esi + 4]
jle 0x100f4c0a
push 0x1015ef24
call fcn.100fdcb4
add esp, 4
cmp dword [0x1015ef24], 0xffffffff
jne 0x100f4c0a
push 0x30
mov dword [0x1015ef28], 0
mov dword [0x1015ef2c], 0
mov dword [0x1015ef30], 0
call fcn.100fe077
add esp, 4
mov ecx, 0x1015ef34
mov dword [eax], eax
mov dword [eax + 4], eax
push eax
push 0x10
mov dword [0x1015ef2c], eax
mov dword [0x1015ef34], 0
mov dword [0x1015ef38], 0
mov dword [0x1015ef3c], 0
mov dword [0x1015ef40], 7
mov dword [0x1015ef44], 8
mov dword [0x1015ef28], 0x3f800000
call fcn.100fb820
push 0x1012a130
call fcn.100fe05d
add esp, 4
push 0x1015ef24
call fcn.100fdc6a
add esp, 4
mov eax, dword [0x1015ef48]
cmp eax, dword [esi + 4]
jle 0x100f4c51
push 0x1015ef48
call fcn.100fdcb4
add esp, 4
cmp dword [0x1015ef48], 0xffffffff
jne 0x100f4c51
mov ecx, 0x1015ef4c
call fcn.100fb270
push 0x1012a100
call fcn.100fe05d
add esp, 4
push 0x1015ef48
call fcn.100fdc6a
add esp, 4
mov edx, dword [esp + 0x6c]
test edx, edx
je 0x100f4fc3
mov ecx, dword [edx + 4]
push dword [edx]
xor edx, edx
mov eax, dword [ecx]
push dword [eax + 4]
lea eax, [esp + 0x34]
push eax
call fcn.100a0f40
mov ecx, eax
mov edx, 0x811c9dc5
mov al, byte [ecx]
test al, al
je 0x100f54f6
movsx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x100f4c84
cmp edx, 0x4400fb1c
je 0x100f4d6a
cmp edx, 0xafcd8f60
je 0x100f4ccf
cmp edx, 0xd704819d
jne 0x100f54f6
mov eax, dword [edi + 0x5c]
mov eax, dword [eax + 0x1c]
movss xmm0, dword [eax]
movss dword [0x1015ba8c], xmm0
jmp 0x100f54f6
mov ecx, dword [0x1015ef30]
mov dword [0x1015ba8c], 0
test ecx, ecx
je 0x100f4d51
mov eax, dword [0x1015ef44]
shr eax, 3
cmp eax, ecx
jbe 0x100f4d03
mov eax, dword [0x1015ef2c]
mov ecx, 0x1015ef28
push eax
push dword [eax]
call fcn.100fb460
jmp 0x100f4d51
mov edx, dword [0x1015ef2c]
call fcn.100fc050
mov eax, dword [0x1015ef2c]
xor edx, edx
mov dword [eax], eax
mov eax, dword [0x1015ef2c]
mov dword [eax + 4], eax
mov ecx, dword [0x1015ef38]
mov edi, dword [0x1015ef34]
sub ecx, edi
add ecx, 3
mov dword [0x1015ef30], 0
shr ecx, 2
cmp edi, dword [0x1015ef38]
cmova ecx, edx
test ecx, ecx
je 0x100f4d51
mov eax, dword [0x1015ef2c]
rep stosd dword es:[edi], eax
mov ecx, 0x1015ef4c
call fcn.100fb2e0
mov dword [0x1015ef6c], 0
jmp 0x100f54f6
mov edx, dword [esp + 0x6c]
mov ebx, dword [edi]
mov ebp, dword [edi + 8]
mov esi, dword [edi + 0x14]
mov ecx, dword [edx + 4]
mov edi, dword [edi + 0x18]
push 0
push str.userid
mov eax, dword [ecx]
push dword [edx]
xor edx, edx
push dword [eax + 0x18]
lea eax, [esp + 0x3c]
push eax
call fcn.100a0f40
mov edx, dword [edi]
mov ecx, edi
push eax
push esi
lea eax, [esp + 0x34]
push dword [edx + 0x24]
xor edx, edx
push eax
call fcn.100a0f40
mov edx, dword [ebp]
mov ecx, ebp
push eax
push ebx
lea eax, [esp + 0x34]
push dword [edx + 0xc]
xor edx, edx
push eax
call fcn.100a0f40
mov ebp, eax
mov eax, dword [0x1015e7fc]
mov dword [esp + 0x2c], eax
test ebp, ebp
je 0x100f54f6
mov ecx, dword [0x1015b9d4]
mov ecx, dword [ecx]
test ecx, ecx
je 0x100f54f6
mov ebx, dword [esp + 0x14]
push ebp
mov eax, dword [ebx + 0x5c]
mov eax, dword [eax + 0x30]
call eax
test al, al
je 0x100f54f6
mov eax, dword [ebx + 0x5c]
mov eax, dword [eax + 0xc0]
call eax
push dword [0x1015e7fc]
xor edx, edx
mov ecx, dword [eax]
push dword [ecx]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, eax
call fcn.100a0f40
mov esi, dword [0x1015e7fc]
mov edi, eax
mov eax, dword [esp + 0x6c]
push 0x10136c92
push str.weapon
mov ecx, dword [eax + 4]
push dword [eax]
lea eax, [esp + 0x20]
mov edx, dword [ecx]
push dword [edx + 0x24]
xor edx, edx
push eax
call fcn.100a0f40
mov ecx, dword [edi]
xor edx, edx
push eax
push esi
lea eax, [esp + 0x40]
push dword [ecx + 0xa8]
mov ecx, edi
push eax
call fcn.100a0f40
mov edi, eax
mov eax, dword [0x1015e7fc]
mov dword [esp + 0x14], edi
mov dword [esp + 0x6c], eax
test edi, edi
je 0x100f54f6
mov ecx, dword [ebp]
lea eax, [esp + 0x38]
push dword [esp + 0x2c]
xor edx, edx
push dword [ecx + 8]
mov ecx, ebp
push eax
call fcn.100a0f40
push eax
lea eax, [esp + 0x30]
push eax
call fcn.100fbcc0
push dword [esp + 0x6c]
mov esi, dword [ebx + 0x5c]
xor edx, edx
mov ecx, edi
mov ebp, dword [eax]
mov eax, dword [edi]
push dword [eax]
lea eax, [esp + 0x40]
push eax
call fcn.100a0f40
mov ecx, dword [esi + 0x74]
movzx edx, ax
push edx
push dword [esi + 0x70]
mov eax, dword [ecx]
xor edx, edx
push dword [eax + 8]
lea eax, [esp + 0x44]
push eax
call fcn.100a0f40
test eax, eax
je 0x100f4ee9
mov ecx, dword [eax + 0xd0]
add dword [ebp + 0xc], ecx
mov eax, dword [eax + 0xd0]
add dword [0x1015ef6c], eax
mov ecx, dword [esp + 0x14]
xor edx, edx
push dword [esp + 0x6c]
mov esi, dword [ebx + 0x30]
mov edi, dword [ebx + 0x40]
mov eax, dword [ecx]
push dword [eax + 8]
lea eax, [esp + 0x40]
push eax
call fcn.100a0f40
mov edx, dword [edi]
mov ecx, edi
push eax
push esi
lea eax, [esp + 0x1c]
push dword [edx + 0xbc]
xor edx, edx
push eax
call fcn.100a0f40
mov edx, eax
mov dword [esp + 0x60], 0
mov ecx, edx
mov dword [esp + 0x64], 0
xorps xmm0, xmm0
movups xmmword [esp + 0x50], xmm0
lea esi, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100f4f40
sub ecx, esi
push ecx
push edx
lea ecx, [esp + 0x58]
call fcn.1009d160
lea eax, [esp + 0x50]
mov ecx, 0x1015ef4c
push eax
lea eax, [esp + 0x18]
push eax
call fcn.100fbea0
lea ecx, [ebp + 0x10]
mov eax, dword [eax]
inc dword [eax + 0x20]
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x18]
push eax
call fcn.100fbea0
mov eax, dword [eax]
inc dword [eax + 0x20]
mov ecx, dword [esp + 0x64]
cmp ecx, 0x10
jb 0x100f54f6
mov edx, dword [esp + 0x50]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100f4fb4
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100f5513
push ecx
push edx
call fcn.100fdb97
add esp, 8
jmp 0x100f54f6
cmp byte [0x1015e700], 0
je 0x100f54f6
mov eax, dword [0x1015ef70]
cmp eax, dword [esi + 4]
jle 0x100f5021
push 0x1015ef70
call fcn.100fdcb4
add esp, 4
cmp dword [0x1015ef70], 0xffffffff
jne 0x100f5021
mov ecx, dword [edi + 0x38]
xor edx, edx
push str.mp_buytime
push dword [edi + 0x30]
mov eax, dword [ecx]
push dword [eax + 0x3c]
lea eax, [esp + 0x44]
push eax
call fcn.100a0f40
push 0x1015ef70
mov dword [0x1015ef74], eax
call fcn.100fdc6a
add esp, 4
mov ecx, dword [edi + 0x18]
xor edx, edx
push dword [edi + 0x14]
mov eax, dword [ecx]
push dword [eax + 0x68]
lea eax, [esp + 0x40]
push eax
call fcn.100a0f40
test al, al
je 0x100f50ad
movss xmm0, dword [0x1015ba8c]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x100f509b
cmp byte [0x1015e701], 0
jne 0x100f5088
mov ecx, dword [0x1015ef74]
xor edx, edx
push dword [0x1015e7fc]
mov eax, dword [ecx]
push dword [eax + 0x30]
lea eax, [esp + 0x34]
push eax
call fcn.100a0f40
movss xmm0, dword [0x1015ba8c]
fstp dword [esp + 0x6c]
movss xmm1, dword [esp + 0x6c]
mov eax, dword [edi + 0x5c]
addss xmm1, xmm0
mov eax, dword [eax + 0x1c]
movss xmm0, dword [eax]
comiss xmm0, xmm1
ja 0x100f50ad
cmp dword [0x1015ef30], 0
je 0x100f50ad
cmp dword [0x1015ef54], 0
jne 0x100f50ba
cmp byte [0x1015e84c], 0
je 0x100f54f6
mov eax, dword [0x10159260]
mov esi, 0x20
or dword [eax + 0x1c18], 2
mov dword [eax + 0x1c38], 0x43480000
mov dword [eax + 0x1c3c], 0x43480000
mov dword [eax + 0x1c20], 2
mov eax, 0xc0220
cmp byte [0x1015e84c], 0
cmove esi, eax
cmp byte [0x1015e703], 0
je 0x100f5104
or esi, 1
lea edx, [esp + 0x2c]
mov dword [esp + 0x2c], 0x3f000000
mov ecx, 5
mov dword [esp + 0x30], 0x3f000000
call fcn.10041740
push esi
xor edx, edx
mov ecx, str.Purchases
call fcn.100499d0
mov ecx, 1
call fcn.100417c0
mov eax, dword [0x1015e704]
test eax, eax
jne 0x100f5470
push 0x1015e81c
call fcn.10100310
add esp, 4
test eax, eax
jne 0x100f5518
mov eax, dword [0x1015ef2c]
mov dword [esp + 0x2c], eax
mov esi, dword [eax]
mov dword [esp + 0x6c], esi
cmp esi, eax
je 0x100f545e
mov ebx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x6c]
nop word [eax + eax]
mov ecx, dword [esi + 0x14]
xorps xmm0, xmm0
movups xmmword [esp + 0x38], xmm0
mov dword [esp + 0x48], 0
xor edi, edi
mov dword [esp + 0x4c], 0xf
mov byte [esp + 0x38], 0
mov eax, dword [ecx]
cmp eax, ecx
je 0x100f51cc
add edi, 2
add edi, dword [eax + 0x18]
mov eax, dword [eax]
cmp eax, ecx
jne 0x100f51a8
cmp edi, 0xf
jbe 0x100f51cc
push ebx
push edi
lea ecx, [esp + 0x40]
call fcn.1009aad0
mov dword [esp + 0x48], 0
mov edi, dword [esi + 0x14]
mov esi, dword [edi]
cmp esi, edi
je 0x100f5389
nop dword [eax]
mov edx, dword [esi + 0x20]
lea ebx, [esi + 8]
cmp edx, 1
jle 0x100f52de
lea ecx, [esp + 0x14]
call fcn.1009ad00
mov ecx, eax
mov ebp, dword [ecx + 0x14]
mov eax, ebp
mov edx, dword [ecx + 0x10]
sub eax, edx
cmp eax, 2
jb 0x100f5228
lea eax, [edx + 2]
mov dword [ecx + 0x10], eax
mov eax, ecx
cmp ebp, 0x10
jb 0x100f5218
mov eax, dword [ecx]
mov ebp, 0x2078
mov word [eax + edx], bp
mov byte [eax + edx + 2], 0
jmp 0x100f523c
push 2
push 0x101502b0
push dword [esp + 0x74]
push 2
call fcn.1009d270
mov ecx, eax
movups xmm0, xmmword [ecx]
lea eax, [esp + 0x50]
push eax
movups xmmword [esp + 0x54], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [esp + 0x64], xmm0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
mov byte [ecx], 0
lea ecx, [esp + 0x3c]
call fcn.1009b6b0
mov ecx, dword [esp + 0x64]
cmp ecx, 0x10
jb 0x100f52a4
mov edx, dword [esp + 0x50]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100f529a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100f5513
push ecx
push edx
call fcn.100fdb97
add esp, 8
mov ecx, dword [esp + 0x28]
cmp ecx, 0x10
jb 0x100f52da
mov edx, dword [esp + 0x14]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100f52d0
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100f5513
push ecx
push edx
call fcn.100fdb97
add esp, 8
mov ebp, dword [esp + 0x6c]
mov ecx, dword [ebx + 0x10]
mov eax, 0x7fffffff
sub eax, ecx
cmp eax, 2
jb 0x100f5523
cmp dword [ebx + 0x14], 0x10
jb 0x100f52f9
mov ebx, dword [ebx]
push 2
push 0x10143f5c
push ecx
push ebx
push ecx
push ebp
lea ecx, [esp + 0x68]
call fcn.100fc510
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x3c]
call fcn.1009b6b0
mov ecx, dword [esp + 0x64]
cmp ecx, 0x10
jb 0x100f5351
mov edx, dword [esp + 0x50]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100f5347
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100f5513
push ecx
push edx
call fcn.100fdb97
add esp, 8
mov esi, dword [esi]
cmp esi, edi
jne 0x100f51e0
mov eax, dword [esp + 0x48]
cmp eax, 2
jb 0x100f5385
lea ecx, [eax - 2]
cmp eax, ecx
jb 0x100f551e
cmp dword [esp + 0x4c], 0x10
lea eax, [esp + 0x38]
mov dword [esp + 0x48], ecx
cmovae eax, dword [esp + 0x38]
mov byte [eax + ecx], 0
mov ebx, dword [esp + 0x6c]
mov esi, dword [esp + 0x6c]
mov eax, dword [0x1015e998]
mov ecx, dword [esi + 8]
cmp eax, dword [0x1015e99c]
je 0x100f5418
nop dword [eax]
cmp dword [eax + 0x60], ecx
je 0x100f53b2
add eax, 0xc8
cmp eax, dword [0x1015e99c]
jne 0x100f53a0
cmp eax, dword [0x1015e99c]
je 0x100f5418
test eax, eax
je 0x100f5418
cmp byte [0x1015e702], 0
lea ecx, [esp + 0x38]
je 0x100f53f4
cmp dword [esp + 0x4c], 0x10
cmovae ecx, dword [esp + 0x38]
add eax, 0x68
cmp dword [eax + 0x14], 0x10
jb 0x100f53e0
mov eax, dword [eax]
push ecx
push dword [esi + 0xc]
push eax
push str._s___d:__s
call fcn.10062570
add esp, 0x10
jmp 0x100f5418
cmp dword [esp + 0x4c], 0x10
cmovae ecx, dword [esp + 0x38]
add eax, 0x68
cmp dword [eax + 0x14], 0x10
jb 0x100f5409
mov eax, dword [eax]
push ecx
push eax
push str._s:__s
call fcn.10062570
add esp, 0xc
mov ecx, dword [esp + 0x4c]
cmp ecx, 0x10
jb 0x100f544e
mov edx, dword [esp + 0x38]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100f5444
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100f5513
push ecx
push edx
call fcn.100fdb97
add esp, 8
mov esi, dword [esi]
mov dword [esp + 0x6c], esi
cmp esi, dword [esp + 0x2c]
jne 0x100f5180
push 0x1015e81c
call fcn.10100321
add esp, 4
jmp 0x100f54f1
cmp eax, 1
jne 0x100f54f1
mov edi, dword [0x1015ef50]
mov esi, dword [edi]
cmp esi, edi
je 0x100f54a4
cmp dword [esi + 0x1c], 0x10
lea ecx, [esi + 8]
jb 0x100f548d
mov ecx, dword [esi + 8]
push ecx
push dword [esi + 0x20]
push str._d_x__s
call fcn.10062570
mov esi, dword [esi]
add esp, 0xc
cmp esi, edi
jne 0x100f5481
cmp byte [0x1015e702], 0
je 0x100f54f1
mov ecx, dword [0x1015ef6c]
test ecx, ecx
jle 0x100f54f1
mov eax, dword [0x10159260]
mov eax, dword [eax + 0x1b94]
cmp byte [eax + 0x8f], 0
jne 0x100f54e3
mov ecx, dword [eax + 0x1a0]
neg ecx
sbb ecx, ecx
add ecx, 6
call fcn.10064da0
mov ecx, dword [0x1015ef6c]
push ecx
push str.Total:___d
call fcn.10062570
add esp, 8
call fcn.1004bc10
push 0x1015eef4
call fcn.10100321
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x58
ret 4
push eax
call fcn.101003de
call fcn.1010e5c5
push eax
call fcn.101003de
call fcn.1009bab0
call fcn.1005f840
int3