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

Disassembly:
mov eax, dword fs:[0x2c]
sub esp, 0x5c
mov edx, dword [0x1010160c]
push ebx
push ebp
push esi
mov esi, dword [eax + edx*4]
mov ebx, ecx
mov eax, dword [0x10105aa8]
push edi
cmp eax, dword [esi + 4]
jle 0x1004e4d1
push 0x10105aa8
call fcn.1009aac1
add esp, 4
cmp dword [0x10105aa8], 0xffffffff
jne 0x1004e4d1
push 2
push 0x10105a50
call fcn.100997e0
push 0x100db280
call fcn.1009a986
add esp, 0xc
push 0x10105aa8
call fcn.1009aa77
add esp, 4
push 0x10105a50
call fcn.10099801
add esp, 4
test eax, eax
jne 0x1004edb8
mov eax, dword [0x10105ad4]
cmp eax, dword [esi + 4]
jle 0x1004e5a6
push 0x10105ad4
call fcn.1009aac1
add esp, 4
cmp dword [0x10105ad4], 0xffffffff
jne 0x1004e5a6
push 0x30
mov dword [0x10105aac], 0
mov dword [0x10105ab0], 0
mov dword [0x10105ab4], 0
call fcn.1009a685
add esp, 4
mov ecx, 0x10105ab8
mov dword [eax], eax
mov dword [eax + 4], eax
push eax
push 0x10
mov dword [0x10105ab0], eax
mov dword [0x10105ab8], 0
mov dword [0x10105abc], 0
mov dword [0x10105ac0], 0
mov dword [0x10105ac4], 7
mov dword [0x10105ac8], 8
mov dword [0x10105aac], 0x3f800000
call fcn.10051650
push 0x100db270
call fcn.1009a986
add esp, 4
push 0x10105ad4
call fcn.1009aa77
add esp, 4
mov eax, dword [0x10105afc]
cmp eax, dword [esi + 4]
jle 0x1004e5ed
push 0x10105afc
call fcn.1009aac1
add esp, 4
cmp dword [0x10105afc], 0xffffffff
jne 0x1004e5ed
mov ecx, 0x10105b00
call fcn.1004f670
push 0x100db260
call fcn.1009a986
add esp, 4
push 0x10105afc
call fcn.1009aa77
add esp, 4
test ebx, ebx
je 0x1004e833
mov eax, dword [ebx]
mov ecx, ebx
mov eax, dword [eax + 4]
call eax
mov ecx, eax
mov edx, 0x811c9dc5
mov al, byte [ecx]
test al, al
je 0x1004ed9f
nop
movsx eax, al
lea ecx, [ecx + 1]
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x1004e610
cmp edx, 0x4400fb1c
je 0x1004e686
cmp edx, 0xafcd8f60
je 0x1004e659
cmp edx, 0xd704819d
jne 0x1004ed9f
mov eax, dword [0x100ffbfc]
mov eax, dword [eax + 0x10]
movss xmm0, dword [eax]
movss dword [0x1010239c], xmm0
jmp 0x1004ed9f
mov ecx, 0x10105aac
mov dword [0x1010239c], 0
call fcn.1004f590
mov ecx, 0x10105b00
call fcn.1004f6e0
mov dword [0x10105af0], 0
jmp 0x1004ed9f
mov eax, dword [0x100ffc00]
mov ecx, ebx
push 0
push str.userid
mov edi, dword [eax + 0x10]
mov esi, dword [eax + 8]
mov eax, dword [ebx]
mov eax, dword [eax + 0x18]
call eax
mov edx, dword [esi]
mov ecx, esi
push eax
mov edx, dword [edx + 0x24]
call edx
mov edx, dword [edi]
mov ecx, edi
push eax
mov edx, dword [edx + 0xc]
call edx
mov edi, eax
test edi, edi
je 0x1004ed9f
mov ecx, dword [0x1010230c]
mov edx, dword [ecx]
test edx, edx
je 0x1004ed9f
mov ecx, dword [0x100ffbfc]
push edx
mov eax, dword [ecx + 0x38]
mov ecx, edi
call eax
test al, al
je 0x1004ed9f
mov eax, dword [0x100ffbfc]
mov eax, dword [eax + 0x48]
call eax
mov ecx, dword [eax]
mov edx, dword [ecx]
mov ecx, eax
call edx
mov ecx, dword [ebx]
mov esi, eax
push 0x100e9dfb
push str.weapon
mov edx, dword [ecx + 0x24]
mov ecx, ebx
call edx
mov ecx, dword [esi]
push eax
mov edx, dword [ecx + 0xa8]
mov ecx, esi
call edx
mov ebx, eax
test ebx, ebx
je 0x1004ed9f
mov ecx, dword [edi]
mov edx, dword [ecx + 8]
mov ecx, edi
call edx
push eax
lea eax, [esp + 0x1c]
push eax
call fcn.10051db0
mov ecx, ebx
mov edi, dword [eax]
mov eax, dword [0x100ffbfc]
mov esi, dword [eax + 0x90]
mov eax, dword [ebx]
mov eax, dword [eax]
call eax
movzx edx, ax
mov ecx, esi
mov eax, dword [esi]
push edx
mov eax, dword [eax + 8]
call eax
test eax, eax
je 0x1004e772
mov ecx, dword [eax + 0xd0]
add dword [edi + 0xc], ecx
mov eax, dword [eax + 0xd0]
add dword [0x10105af0], eax
mov eax, dword [0x100ffc00]
mov ecx, ebx
mov esi, dword [eax + 0x24]
mov eax, dword [ebx]
mov eax, dword [eax + 8]
call eax
mov edx, dword [esi]
mov ecx, esi
push eax
mov edx, dword [edx + 0xbc]
call edx
mov edx, eax
mov dword [esp + 0x30], 0
mov ecx, edx
mov dword [esp + 0x34], 0xf
mov byte [esp + 0x20], 0
lea esi, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x1004e7b0
sub ecx, esi
push ecx
push edx
lea ecx, [esp + 0x28]
call fcn.10013840
lea eax, [esp + 0x20]
mov ecx, 0x10105b00
push eax
lea eax, [esp + 0x14]
push eax
call fcn.10051f90
lea ecx, [edi + 0x10]
mov eax, dword [eax]
inc dword [eax + 0x20]
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x14]
push eax
call fcn.10051f90
mov eax, dword [eax]
inc dword [eax + 0x20]
mov edx, dword [esp + 0x34]
cmp edx, 0x10
jb 0x1004ed9f
mov ecx, dword [esp + 0x20]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x1004e824
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004edbe
push edx
push ecx
call fcn.1009a99b
add esp, 8
jmp 0x1004ed9f
mov eax, dword [0x100ffbf8]
cmp byte [eax + 0x2960], 0
je 0x1004ed9f
mov eax, dword [0x10105ae4]
cmp eax, dword [esi + 4]
jle 0x1004e88e
push 0x10105ae4
call fcn.1009aac1
add esp, 4
cmp dword [0x10105ae4], 0xffffffff
jne 0x1004e88e
mov eax, dword [0x100ffc00]
push str.mp_buytime
mov ecx, dword [eax + 4]
mov eax, dword [ecx]
mov eax, dword [eax + 0x3c]
call eax
push 0x10105ae4
mov dword [0x10105b3c], eax
call fcn.1009aa77
add esp, 4
mov eax, dword [0x100ffc00]
mov ecx, dword [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x68]
call eax
test al, al
je 0x1004e90f
movss xmm0, dword [0x1010239c]
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x1004e8fd
mov eax, dword [0x100ffbf8]
cmp byte [eax + 0x2961], 0
jne 0x1004e8e8
mov ecx, dword [0x10105b3c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x30]
mov dword [esp + 0x10], eax
call dword [esp + 0x10]
movss xmm0, dword [0x1010239c]
fstp dword [esp + 0x10]
movss xmm1, dword [esp + 0x10]
mov eax, dword [0x100ffbfc]
addss xmm1, xmm0
mov eax, dword [eax + 0x10]
movss xmm0, dword [eax]
comiss xmm0, xmm1
ja 0x1004e90f
cmp dword [0x10105ab4], 0
je 0x1004e90f
cmp dword [0x10105b08], 0
jne 0x1004e91d
mov eax, dword [0x100ffc10]
cmp byte [eax], 0
je 0x1004ed9f
mov eax, dword [0x101023d4]
lea edx, [esp + 0x18]
mov ecx, 0x20
mov dword [esp + 0x18], 0x3f000000
mov esi, 0xc0220
mov dword [esp + 0x1c], 0x3f000000
or dword [eax + 0x1af0], 2
mov dword [eax + 0x1b10], 0x43480000
mov dword [eax + 0x1b14], 0x43480000
mov dword [eax + 0x1af8], 2
mov eax, dword [0x100ffc10]
cmp byte [eax], 0
mov eax, dword [0x100ffbf8]
cmovne esi, ecx
mov ecx, 5
mov bl, byte [eax + 0x2963]
call fcn.10059770
mov eax, esi
mov ecx, str.Purchases
or eax, 1
test bl, bl
cmove eax, esi
xor edx, edx
push eax
call fcn.10061270
mov ecx, 1
call fcn.100597f0
mov eax, dword [0x100ffbf8]
mov ecx, dword [eax + 0x2964]
test ecx, ecx
jne 0x1004ed10
push 0x10104b34
call fcn.10099801
add esp, 4
test eax, eax
jne 0x1004edc3
mov eax, dword [0x10105ab0]
mov dword [esp + 0x18], eax
mov esi, dword [eax]
mov dword [esp + 0x10], esi
cmp esi, eax
je 0x1004ecf6
mov ebp, dword [esp + 0x18]
mov ebx, 0x16
nop
mov ecx, dword [esi + 0x14]
xor edi, edi
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0xf
mov byte [esp + 0x20], 0
mov eax, dword [ecx]
cmp eax, ecx
je 0x1004eaaa
add edi, 2
add edi, dword [eax + 0x18]
mov eax, dword [eax]
cmp eax, ecx
jne 0x1004ea14
cmp edi, 0xf
jbe 0x1004eaaa
cmp edi, 0x7fffffff
ja 0x1004edd9
or edi, 0xf
cmp edi, 0x7fffffff
jbe 0x1004ea4a
mov edi, 0x7fffffff
lea ecx, [edi + 0x24]
jmp 0x1004ea65
cmp edi, 0x16
cmovb edi, ebx
lea eax, [edi + 1]
cmp eax, 0x1000
jb 0x1004ea81
lea ecx, [eax + 0x23]
cmp ecx, eax
jbe 0x1004edcf
push ecx
call fcn.1009a685
add esp, 4
test eax, eax
je 0x1004edbe
lea ecx, [eax + 0x23]
and ecx, 0xffffffe0
mov dword [ecx - 4], eax
jmp 0x1004ea94
test eax, eax
je 0x1004ea92
push eax
call fcn.1009a685
add esp, 4
mov ecx, eax
jmp 0x1004ea94
xor ecx, ecx
mov al, byte [esp + 0x20]
mov dword [esp + 0x34], edi
mov byte [ecx], al
mov dword [esp + 0x20], ecx
mov dword [esp + 0x30], 0
mov edi, dword [esi + 0x14]
mov esi, dword [edi]
cmp esi, edi
je 0x1004ec25
mov edx, dword [esi + 0x20]
lea ebx, [esi + 8]
cmp edx, 1
jle 0x1004eb79
lea ecx, [esp + 0x50]
call fcn.10001de0
push 0x100efc74
mov ecx, eax
call fcn.10011a90
lea ecx, [esp + 0x20]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x38], xmm0
movq xmm0, qword [eax + 0x10]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [esp + 0x38]
push eax
movq qword [esp + 0x4c], xmm0
call fcn.10011b00
mov edx, dword [esp + 0x4c]
cmp edx, 0x10
jb 0x1004eb43
mov ecx, dword [esp + 0x38]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x1004eb39
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004edbe
push edx
push ecx
call fcn.1009a99b
add esp, 8
mov edx, dword [esp + 0x64]
cmp edx, 0x10
jb 0x1004eb79
mov ecx, dword [esp + 0x50]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x1004eb6f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004edbe
push edx
push ecx
call fcn.1009a99b
add esp, 8
mov ecx, dword [ebx + 0x10]
mov eax, 0x7fffffff
sub eax, ecx
cmp eax, 2
jb 0x1004edd9
cmp dword [ebx + 0x14], 0x10
jb 0x1004eb94
mov ebx, dword [ebx]
push 2
push 0x100eabdc
push ecx
push ebx
push ecx
push ebp
lea ecx, [esp + 0x68]
call fcn.10019900
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x24]
call fcn.10011b00
mov edx, dword [esp + 0x64]
cmp edx, 0x10
jb 0x1004ebec
mov ecx, dword [esp + 0x50]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x1004ebe2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004edbe
push edx
push ecx
call fcn.1009a99b
add esp, 8
mov esi, dword [esi]
cmp esi, edi
jne 0x1004eab7
mov eax, dword [esp + 0x30]
cmp eax, 2
jb 0x1004ec20
lea ecx, [eax - 2]
cmp eax, ecx
jb 0x1004edd4
cmp dword [esp + 0x34], 0x10
lea eax, [esp + 0x20]
mov dword [esp + 0x30], ecx
cmovae eax, dword [esp + 0x20]
mov byte [eax + ecx], 0
mov ebx, 0x16
mov esi, dword [esp + 0x10]
mov ecx, dword [0x10104b88]
mov eax, dword [esi + 8]
cmp ecx, dword [0x10104b8c]
je 0x1004ecb0
nop word [eax + eax]
cmp dword [ecx + 0x5c], eax
je 0x1004ec55
add ecx, 0x128
cmp ecx, dword [0x10104b8c]
jne 0x1004ec40
jmp 0x1004ecb0
cmp ecx, dword [0x10104b8c]
je 0x1004ecb0
test ecx, ecx
je 0x1004ecb0
mov eax, dword [0x100ffbf8]
cmp byte [eax + 0x2962], 0
lea eax, [esp + 0x20]
je 0x1004ec94
cmp dword [esp + 0x34], 0x10
cmovae eax, dword [esp + 0x20]
push eax
push dword [esi + 0xc]
lea eax, [ecx + 0x60]
push eax
push str._s___d:__s
call fcn.1007bcc0
add esp, 0x10
jmp 0x1004ecb0
cmp dword [esp + 0x34], 0x10
cmovae eax, dword [esp + 0x20]
push eax
lea eax, [ecx + 0x60]
push eax
push str._s:__s
call fcn.1007bcc0
add esp, 0xc
mov edx, dword [esp + 0x34]
cmp edx, 0x10
jb 0x1004ece6
mov ecx, dword [esp + 0x20]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x1004ecdc
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x1004edbe
push edx
push ecx
call fcn.1009a99b
add esp, 8
mov esi, dword [esi]
mov dword [esp + 0x10], esi
cmp esi, dword [esp + 0x18]
jne 0x1004e9f0
push 0x10104b34
call fcn.10099826
add esp, 4
test eax, eax
jne 0x1004edc9
jmp 0x1004ed9a
cmp ecx, 1
jne 0x1004ed9a
mov edi, dword [0x10105b04]
mov esi, dword [edi]
cmp esi, edi
je 0x1004ed4d
cmp dword [esi + 0x1c], 0x10
lea ecx, [esi + 8]
jb 0x1004ed31
mov ecx, dword [esi + 8]
push ecx
push dword [esi + 0x20]
push str._d_x__s
call fcn.1007bcc0
mov esi, dword [esi]
add esp, 0xc
cmp esi, edi
jne 0x1004ed25
mov eax, dword [0x100ffbf8]
cmp byte [eax + 0x2962], 0
je 0x1004ed9a
mov ecx, dword [0x10105af0]
test ecx, ecx
jle 0x1004ed9a
mov eax, dword [0x101023d4]
mov eax, dword [eax + 0x1a6c]
cmp byte [eax + 0x87], 0
jne 0x1004ed8c
mov ecx, dword [eax + 0x19c]
neg ecx
sbb ecx, ecx
add ecx, 6
call fcn.1007e100
mov ecx, dword [0x10105af0]
push ecx
push str.Total:___d
call fcn.1007bcc0
add esp, 8
call fcn.100634d0
push 0x10105a50
call fcn.10099826
add esp, 4
test eax, eax
jne 0x1004edde
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret
push eax
call fcn.100998eb
call fcn.100b8d8b
push eax
call fcn.100998eb
push eax
call fcn.100998eb
call fcn.10001470
call fcn.100144c0
call fcn.10001490
push eax
call fcn.100998eb
int3