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

Disassembly:
sub esp, 0x248
mov eax, dword fs:[0x2c]
mov edx, dword [0x10153418]
push ebx
push ebp
push esi
mov esi, dword [eax + edx*4]
mov eax, dword [0x1015d084]
push edi
mov edi, ecx
mov dword [esp + 0x18], edi
cmp eax, dword [esi + 4]
jle 0x100f2c38
push 0x1015d084
call fcn.100faae4
add esp, 4
cmp dword [0x1015d084], 0xffffffff
jne 0x100f2c38
push 2
push 0x1015d088
call fcn.100fcbf5
push 0x10124ac0
call fcn.100fae8b
add esp, 0xc
push 0x1015d084
call fcn.100faa9a
add esp, 4
push 0x1015d088
call fcn.100fcc16
add esp, 4
test eax, eax
jne 0x100f3431
mov eax, dword [0x1015d0b8]
cmp eax, dword [esi + 4]
jle 0x100f2d0d
push 0x1015d0b8
call fcn.100faae4
add esp, 4
cmp dword [0x1015d0b8], 0xffffffff
jne 0x100f2d0d
push 0x30
mov dword [0x1015d044], 0
mov dword [0x1015d048], 0
mov dword [0x1015d04c], 0
call fcn.100faea5
add esp, 4
mov ecx, 0x1015d050
mov dword [eax], eax
mov dword [eax + 4], eax
push eax
push 0x10
mov dword [0x1015d048], eax
mov dword [0x1015d050], 0
mov dword [0x1015d054], 0
mov dword [0x1015d058], 0
mov dword [0x1015d05c], 7
mov dword [0x1015d060], 8
mov dword [0x1015d044], 0x3f800000
call fcn.100f9280
push 0x10124ab0
call fcn.100fae8b
add esp, 4
push 0x1015d0b8
call fcn.100faa9a
add esp, 4
mov eax, dword [0x1015d0bc]
cmp eax, dword [esi + 4]
jle 0x100f2d54
push 0x1015d0bc
call fcn.100faae4
add esp, 4
cmp dword [0x1015d0bc], 0xffffffff
jne 0x100f2d54
mov ecx, 0x1015d064
call fcn.100f8cb0
push 0x10124aa0
call fcn.100fae8b
add esp, 4
push 0x1015d0bc
call fcn.100faa9a
add esp, 4
mov edx, dword [esp + 0x25c]
test edx, edx
je 0x100f3063
mov ecx, dword [edx + 4]
push dword [edx]
xor edx, edx
mov eax, dword [ecx]
push dword [eax + 4]
lea eax, [esp + 0x2c]
push eax
call fcn.1009e0f0
mov ecx, eax
mov edx, 0x811c9dc5
mov al, byte [ecx]
test al, al
je 0x100f3417
nop word [eax + eax]
movsx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x100f2d90
cmp edx, 0x4400fb1c
je 0x100f2e04
cmp edx, 0xafcd8f60
je 0x100f2dd7
cmp edx, 0xd704819d
jne 0x100f3417
mov eax, dword [edi + 0x60]
mov eax, dword [eax + 0x1c]
movss xmm0, dword [eax]
movss dword [0x101569e4], xmm0
jmp 0x100f3417
mov ecx, 0x1015d044
mov dword [0x101569e4], 0
call fcn.100f8bd0
mov ecx, 0x1015d064
call fcn.100f8d20
mov dword [0x1015d0c0], 0
jmp 0x100f3417
mov edx, dword [esp + 0x25c]
mov ebx, dword [edi + 4]
mov ebp, dword [edi + 0x10]
mov esi, dword [edi + 0x18]
mov ecx, dword [edx + 4]
mov edi, dword [edi + 0x30]
push 0
push str.userid
mov eax, dword [ecx]
push dword [edx]
xor edx, edx
push dword [eax + 0x18]
lea eax, [esp + 0x34]
push eax
call fcn.1009e0f0
mov edx, dword [edi]
mov ecx, edi
push eax
push esi
lea eax, [esp + 0x2c]
push dword [edx + 0x24]
xor edx, edx
push eax
call fcn.1009e0f0
mov edx, dword [ebp]
mov ecx, ebp
push eax
push ebx
lea eax, [esp + 0x2c]
push dword [edx + 0xc]
xor edx, edx
push eax
call fcn.1009e0f0
mov ebp, eax
mov eax, dword [0x1015c940]
mov dword [esp + 0x24], eax
test ebp, ebp
je 0x100f3417
mov ecx, dword [0x1015692c]
mov ecx, dword [ecx]
test ecx, ecx
je 0x100f3417
mov ebx, dword [esp + 0x18]
push ebp
mov eax, dword [ebx + 0x60]
mov eax, dword [eax + 0x30]
call eax
test al, al
je 0x100f3417
mov eax, dword [ebx + 0x60]
mov eax, dword [eax + 0xb4]
call eax
push dword [0x1015c940]
xor edx, edx
mov ecx, dword [eax]
push dword [ecx]
lea ecx, [esp + 0x20]
push ecx
mov ecx, eax
call fcn.1009e0f0
mov esi, dword [0x1015c940]
mov edi, eax
mov eax, dword [esp + 0x25c]
push 0x101314de
push str.weapon
mov ecx, dword [eax + 4]
push dword [eax]
lea eax, [esp + 0x24]
mov edx, dword [ecx]
push dword [edx + 0x24]
xor edx, edx
push eax
call fcn.1009e0f0
mov ecx, dword [edi]
xor edx, edx
push eax
push esi
lea eax, [esp + 0x5c]
push dword [ecx + 0xa8]
mov ecx, edi
push eax
call fcn.1009e0f0
mov edi, eax
mov eax, dword [0x1015c940]
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], eax
test edi, edi
je 0x100f3417
mov ecx, dword [ebp]
lea eax, [esp + 0x54]
push dword [esp + 0x24]
xor edx, edx
push dword [ecx + 8]
mov ecx, ebp
push eax
call fcn.1009e0f0
push eax
lea eax, [esp + 0x28]
push eax
call fcn.100f9b40
push dword [esp + 0x14]
mov esi, dword [ebx + 0x60]
xor edx, edx
mov ecx, edi
mov ebp, dword [eax]
mov eax, dword [edi]
push dword [eax]
lea eax, [esp + 0x38]
push eax
call fcn.1009e0f0
mov ecx, dword [esi + 0x68]
movzx edx, ax
push edx
push dword [esi + 0x64]
mov eax, dword [ecx]
xor edx, edx
push dword [eax + 8]
lea eax, [esp + 0x3c]
push eax
call fcn.1009e0f0
test eax, eax
je 0x100f2f8a
mov ecx, dword [eax + 0xd0]
add dword [ebp + 0xc], ecx
mov eax, dword [eax + 0xd0]
add dword [0x1015d0c0], eax
mov ecx, dword [esp + 0x18]
xor edx, edx
push dword [esp + 0x14]
mov esi, dword [ebx + 0x34]
mov edi, dword [ebx + 0x44]
mov eax, dword [ecx]
push dword [eax + 8]
lea eax, [esp + 0x38]
push eax
call fcn.1009e0f0
mov edx, dword [edi]
mov ecx, edi
push eax
push esi
lea eax, [esp + 0x20]
push dword [edx + 0xbc]
xor edx, edx
push eax
call fcn.1009e0f0
mov edx, eax
mov dword [esp + 0x3c], 0
mov ecx, edx
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0xf
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100f2fe0
sub ecx, esi
push ecx
push edx
lea ecx, [esp + 0x44]
call fcn.10099e70
lea eax, [esp + 0x3c]
mov ecx, 0x1015d064
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.100f9d20
lea ecx, [ebp + 0x10]
mov eax, dword [eax]
inc dword [eax + 0x20]
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.100f9d20
mov eax, dword [eax]
inc dword [eax + 0x20]
mov edx, dword [esp + 0x50]
cmp edx, 0x10
jb 0x100f3417
mov ecx, dword [esp + 0x3c]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100f3054
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100f3437
push edx
push ecx
call fcn.100fa9c7
add esp, 8
jmp 0x100f3417
cmp byte [0x1015c878], 0
je 0x100f3417
mov eax, dword [0x1015d0c4]
cmp eax, dword [esi + 4]
jle 0x100f30c1
push 0x1015d0c4
call fcn.100faae4
add esp, 4
cmp dword [0x1015d0c4], 0xffffffff
jne 0x100f30c1
mov ecx, dword [edi + 0x3c]
xor edx, edx
push str.mp_buytime
push dword [edi + 0x34]
mov eax, dword [ecx]
push dword [eax + 0x3c]
lea eax, [esp + 0x3c]
push eax
call fcn.1009e0f0
push 0x1015d0c4
mov dword [0x1015d0c8], eax
call fcn.100faa9a
add esp, 4
mov ecx, dword [edi + 0x30]
xor edx, edx
push dword [edi + 0x18]
mov eax, dword [ecx]
push dword [eax + 0x68]
lea eax, [esp + 0x38]
push eax
call fcn.1009e0f0
test al, al
je 0x100f314d
movss xmm0, dword [0x101569e4]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x100f313b
cmp byte [0x1015c879], 0
jne 0x100f3128
mov ecx, dword [0x1015d0c8]
xor edx, edx
push dword [0x1015c940]
mov eax, dword [ecx]
push dword [eax + 0x30]
lea eax, [esp + 0x5c]
push eax
call fcn.1009e0f0
movss xmm0, dword [0x101569e4]
fstp dword [esp + 0x18]
movss xmm1, dword [esp + 0x18]
mov eax, dword [edi + 0x60]
addss xmm1, xmm0
mov eax, dword [eax + 0x1c]
movss xmm0, dword [eax]
comiss xmm0, xmm1
ja 0x100f314d
cmp dword [0x1015d04c], 0
je 0x100f314d
cmp dword [0x1015d06c], 0
jne 0x100f315a
cmp byte [0x1015ca2c], 0
je 0x100f3417
mov eax, dword [0x101541b4]
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 [0x1015ca2c], 0
cmove esi, eax
cmp byte [0x1015c87b], 0
je 0x100f31a4
or esi, 1
lea edx, [esp + 0x18]
mov dword [esp + 0x18], 0x3f000000
mov ecx, 5
mov dword [esp + 0x1c], 0x3f000000
call fcn.1003e7c0
push esi
xor edx, edx
mov ecx, str.Purchases
call fcn.10046970
mov ecx, 1
call fcn.1003e840
mov eax, dword [0x1015c87c]
test eax, eax
jne 0x100f338d
push 0x1015c960
call fcn.100fcc16
add esp, 4
test eax, eax
jne 0x100f343c
mov eax, dword [0x1015d048]
mov dword [esp + 0x14], eax
mov esi, dword [eax]
mov dword [esp + 0x18], esi
cmp esi, eax
je 0x100f337b
mov edx, dword [0x1015c9c4]
nop dword [eax + eax]
mov edi, dword [esi + 0x14]
lea ebx, [esp + 0x60]
xor cl, cl
mov esi, dword [edi]
cmp esi, edi
je 0x100f32ee
lea edx, [esi + 8]
mov dword [esp + 0x24], edx
test cl, cl
je 0x100f3265
lea eax, [esp + 0x253]
cmp ebx, eax
je 0x100f3265
mov ecx, 0x1013fc78
sub ecx, ebx
mov al, byte [ebx + ecx]
test al, al
je 0x100f3265
mov byte [ebx], al
inc ebx
lea eax, [esp + 0x253]
cmp ebx, eax
jne 0x100f3250
mov eax, dword [edx + 0x18]
cmp eax, 1
jle 0x100f32ae
push 0xa
push eax
lea edx, [esp + 0x25b]
mov ecx, ebx
call fcn.100f94a0
test edx, edx
cmove ebx, eax
lea eax, [esp + 0x253]
cmp ebx, eax
je 0x100f32aa
mov ecx, 0x1014a92c
sub ecx, ebx
mov al, byte [ebx + ecx]
test al, al
je 0x100f32aa
mov byte [ebx], al
inc ebx
lea eax, [esp + 0x253]
cmp ebx, eax
jne 0x100f3295
mov edx, dword [esp + 0x24]
cmp dword [edx + 0x14], 0x10
mov ebp, dword [edx + 0x10]
jb 0x100f32b9
mov edx, dword [edx]
lea eax, [esp + 0x253]
sub eax, ebx
cmp eax, ebp
cmovb ebp, eax
test ebp, ebp
je 0x100f32d8
push ebp
push edx
push ebx
call fcn.100fe460
add esp, 0xc
add ebx, ebp
mov esi, dword [esi]
mov cl, 1
cmp esi, edi
jne 0x100f3233
mov edx, dword [0x1015c9c4]
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [0x1015c9c0]
mov edi, dword [esi + 8]
cmp ecx, edx
je 0x100f336d
nop
cmp dword [ecx + 0x60], edi
je 0x100f3311
add ecx, 0xc8
cmp ecx, edx
jne 0x100f3300
jmp 0x100f336d
cmp ecx, edx
je 0x100f336d
test ecx, ecx
je 0x100f336d
add ecx, 0x68
cmp byte [0x1015c87a], 0
mov byte [ebx], 0
je 0x100f3348
cmp dword [ecx + 0x14], 0x10
jb 0x100f3330
mov ecx, dword [ecx]
lea eax, [esp + 0x60]
push eax
push dword [esi + 0xc]
push ecx
push str._s___d:__s
call fcn.1005fab0
add esp, 0x10
jmp 0x100f3363
cmp dword [ecx + 0x14], 0x10
jb 0x100f3350
mov ecx, dword [ecx]
lea eax, [esp + 0x60]
push eax
push ecx
push str._s:__s
call fcn.1005fab0
add esp, 0xc
mov eax, dword [esp + 0x14]
mov edx, dword [0x1015c9c4]
mov esi, dword [esi]
mov dword [esp + 0x18], esi
cmp esi, eax
jne 0x100f3220
push 0x1015c960
call fcn.100fcc27
add esp, 4
jmp 0x100f3412
cmp eax, 1
jne 0x100f3412
mov edi, dword [0x1015d068]
mov esi, dword [edi]
cmp esi, edi
je 0x100f33c5
cmp dword [esi + 0x1c], 0x10
lea ecx, [esi + 8]
jb 0x100f33ae
mov ecx, dword [esi + 8]
push ecx
push dword [esi + 0x20]
push str._d_x__s
call fcn.1005fab0
mov esi, dword [esi]
add esp, 0xc
cmp esi, edi
jne 0x100f33a2
cmp byte [0x1015c87a], 0
je 0x100f3412
mov ecx, dword [0x1015d0c0]
test ecx, ecx
jle 0x100f3412
mov eax, dword [0x101541b4]
mov eax, dword [eax + 0x1b94]
cmp byte [eax + 0x8f], 0
jne 0x100f3404
mov ecx, dword [eax + 0x1a0]
neg ecx
sbb ecx, ecx
add ecx, 6
call fcn.10062380
mov ecx, dword [0x1015d0c0]
push ecx
push str.Total:___d
call fcn.1005fab0
add esp, 8
call fcn.10048bd0
push 0x1015d088
call fcn.100fcc27
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x248
ret 4
push eax
call fcn.100fcce4
call fcn.10109b42
push eax
call fcn.100fcce4
int3