Function at 0x496320
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x53eb00
mov eax, dword fs:[0]
push eax
sub esp, 0x78
mov eax, dword [0x582904]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x7c], edi
call fcn.0041df70
cmp byte [edi + 0xbd], 0
je 0x4963d1
push 0xf
xor eax, eax
mov byte [edi + 0xbd], 0
push str.purchase_failed
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
call fcn.00403520
mov ecx, dword [0x584e54]
lea eax, [ebp - 0x40]
push eax
mov dword [ebp - 4], 0
call fcn.00448b70
push eax
call fcn.00417400
add esp, 4
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x40]
mov esi, eax
call fcn.004034a0
push 0
push esi
mov ecx, 0x591188
call fcn.0041e360
mov edx, dword [esi]
mov ecx, esi
push dword [0x545964]
call dword [edx + 0x40]
mov eax, dword [0x584e60]
movss xmm0, dword [eax + 0x20]
mov eax, dword [edi + 0x94]
movss dword [ebp - 0x78], xmm0
test eax, eax
je 0x49648c
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mov dword [edi + 0x9c], 0
push 0
mulss xmm1, xmm0
movss xmm0, dword [edi + 0x98]
mulss xmm1, dword [0x54159c]
addss xmm0, xmm1
movss dword [ebp - 0x80], xmm1
movss dword [edi + 0x98], xmm0
mov ecx, dword [0x584e48]
call fcn.0043b540
movss xmm1, dword [edi + 0xa8]
xorps xmm1, xmmword [0x542190]
movss xmm3, dword [edi + 0x98]
fstp dword [ebp - 0x84]
subss xmm1, dword [ebp - 0x84]
movss xmm2, dword [ebp - 0x84]
subss xmm2, dword [edi + 0xac]
comiss xmm3, xmm1
ja 0x496472
maxss xmm2, xmm3
movaps xmm1, xmm2
movss xmm0, dword [ebp - 0x80]
movss dword [edi + 0xb0], xmm0
movss xmm0, dword [ebp - 0x78]
movss dword [edi + 0x98], xmm1
push ecx
lea ecx, [edi + 0x44]
movss dword [esp], xmm0
call fcn.0041d4c0
movss xmm0, dword [ebp - 0x78]
mov ecx, 0x590630
cvttss2si eax, xmm0
mulss xmm0, dword [0x5420d8]
add dword [0x59088c], eax
addss xmm0, dword [0x588f2c]
movss dword [0x588f2c], xmm0
call fcn.004699c0
mov ecx, 0x590630
call fcn.004699e0
mov eax, dword [0x584e60]
movss xmm2, dword [edi + 0xc4]
movss dword [ebp - 0x74], xmm2
movaps xmm0, xmm2
cmp dword [eax + 0x3c], 0
jne 0x4964fd
addss xmm0, dword [ebp - 0x78]
movss dword [edi + 0xc4], xmm0
comiss xmm0, dword [0x544420]
jb 0x49677b
mov eax, dword [edi + 0x88]
mov dword [ebp - 0x78], eax
test eax, eax
je 0x49677b
mov dword [edi + 0x88], 0
imul esi, dword [eax + 0x84], 0x380
mov edx, dword [0x584e68]
cmp byte [esi + edx - 0x348], 3
sbb eax, eax
inc eax
cmp byte [esi + edx - 0x338], 3
lea ecx, [eax + 1]
cmovb ecx, eax
cmp byte [esi + edx - 0x328], 3
lea eax, [ecx + 1]
cmovb eax, ecx
cmp byte [esi + edx - 0x318], 3
lea ecx, [eax + 1]
cmovb ecx, eax
cmp byte [esi + edx - 0x308], 3
lea eax, [ecx + 1]
cmovb eax, ecx
cmp byte [esi + edx - 0x2f8], 3
lea ecx, [eax + 1]
cmovb ecx, eax
cmp byte [esi + edx - 0x2e8], 3
lea eax, [ecx + 1]
cmovb eax, ecx
cmp byte [esi + edx - 0x2d8], 3
lea ecx, [eax + 1]
cmovb ecx, eax
cmp byte [esi + edx - 0x2c8], 3
lea eax, [ecx + 1]
cmovb eax, ecx
cmp byte [esi + edx - 0x2b8], 3
mov esi, dword [ebp - 0x78]
push esi
lea ecx, [eax + 1]
cmovb ecx, eax
mov dword [ebp - 0x84], ecx
lea ecx, [ebp - 0x28]
call fcn.004054f0
mov eax, dword [ebp - 0x18]
mov dword [ebp - 4], 1
lea edx, [eax - 2]
cmp eax, edx
jb 0x496ee8
cmp dword [ebp - 0x14], 0x10
lea ecx, [ebp - 0x28]
push 1
cmovae ecx, dword [ebp - 0x28]
add ecx, edx
mov dword [ebp - 0x18], edx
lea eax, [ecx + 2]
push eax
push ecx
call fcn.0050e4a0
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
push dword [ebp - 0x84]
cmovae eax, dword [ebp - 0x28]
push eax
lea eax, [ebp - 0x40]
push str._s_02d
push eax
call fcn.00444380
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x80], eax
add esp, 0x1c
cmp ecx, eax
je 0x496699
mov edx, dword [ebp - 0x14]
cmp edx, 0x10
jb 0x496665
mov ecx, dword [ebp - 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x496658
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x496eed
push edx
push ecx
call fcn.0050b532
mov eax, dword [ebp - 0x80]
add esp, 8
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x18], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
mov edx, dword [ebp - 0x2c]
cmp edx, 0x10
jb 0x4966cd
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4966c3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x496ef2
push edx
push ecx
call fcn.0050b532
add esp, 8
lea eax, [ebp - 0x28]
mov ecx, esi
push eax
call fcn.0045cdd0
push 1
mov ecx, esi
call fcn.0045e850
mov ecx, dword [0x590710]
xor esi, esi
mov eax, dword [0x59070c]
sub ecx, eax
sar ecx, 2
test ecx, ecx
jle 0x496733
mov edx, dword [ebp - 0x78]
mov edi, ecx
nop dword [eax]
mov ecx, dword [eax + esi*4]
cmp dword [ecx + 0xd0], edx
jne 0x49672b
mov eax, dword [ebp - 0x84]
cmp dword [ecx + 0x84], eax
setle al
movzx eax, al
push eax
call fcn.0045e850
mov eax, dword [0x59070c]
mov edx, dword [ebp - 0x78]
inc esi
cmp esi, edi
jl 0x496700
mov edi, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
cmp edx, 0x10
jb 0x49676e
mov ecx, dword [ebp - 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x496764
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x496ef7
push edx
push ecx
call fcn.0050b532
add esp, 8
movss xmm0, dword [edi + 0xc4]
movss xmm2, dword [ebp - 0x74]
movss xmm1, dword [0x542694]
comiss xmm0, xmm1
jb 0x496799
comiss xmm1, xmm2
jbe 0x496799
mov ecx, dword [edi + 0x78]
test ecx, ecx
je 0x496799
call fcn.0048bbe0
mov eax, dword [edi + 0xc0]
test eax, eax
je 0x496886
movss xmm3, dword [0x5415b4]
test al, 1
je 0x49680d
mov ecx, dword [edi + 0xc8]
test ecx, ecx
je 0x49680d
movss xmm0, dword [edi + 0xc4]
movss xmm1, dword [0x547a50]
comiss xmm1, xmm0
jbe 0x4967ed
mulss xmm0, xmm3
divss xmm0, xmm1
cvttss2si eax, xmm0
mov byte [ecx + 0x5f], al
mov eax, dword [edi + 0xc8]
and dword [eax + 0x18], 0xfffffffe
jmp 0x49680d
mov byte [ecx + 0x5f], 0xff
mov eax, dword [edi + 0xc8]
cmp eax, dword [edi + 0x84]
jne 0x496803
or dword [eax + 0x18], 1
mov dword [edi + 0xc8], 0
mov edx, dword [edi + 0xc0]
mov eax, edx
shr eax, 1
test al, 1
je 0x496886
mov ecx, dword [edi + 0xcc]
test ecx, ecx
je 0x496886
movss xmm1, dword [edi + 0xc4]
and dl, 1
movzx eax, dl
neg eax
sbb eax, eax
and eax, 0x7d0
movd xmm2, eax
cvtdq2ps xmm2, xmm2
comiss xmm2, xmm1
jbe 0x49684e
mov byte [ecx + 0x5f], 0
jmp 0x496886
add eax, 0x3e8
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm0, xmm1
jbe 0x496878
subss xmm1, xmm2
mulss xmm1, xmm3
divss xmm1, dword [0x5415b8]
cvttss2si eax, xmm1
mov byte [ecx + 0x5f], al
jmp 0x496886
mov byte [ecx + 0x5f], 0xff
mov dword [edi + 0xcc], 0
lea ecx, [edi + 0x10]
call fcn.0041d330
mov dword [ebp - 0x74], eax
test eax, eax
je 0x4969a7
mov esi, dword [eax + 0xac]
test esi, esi
je 0x4969a7
mov ecx, dword [edi + 0x7c]
test ecx, ecx
je 0x49693e
cmp byte [ecx + 0x11], 0
je 0x49693e
add esi, 0xffffffd7
mov dword [ecx + 0xac], 0
cmp esi, 8
ja 0x49691e
test esi, esi
js 0x496ecd
mov eax, dword [edi + 0x7c]
mov ecx, dword [eax + 0xb4]
mov edi, dword [eax + 0xb0]
sub ecx, edi
mov eax, 0x4bda12f7
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp esi, eax
jge 0x496ecd
imul eax, esi, 0x6c
add eax, 0x48
add eax, edi
cmp dword [eax + 0x14], 0x10
jb 0x496910
mov eax, dword [eax]
push eax
call fcn.004502d0
add esp, 4
jmp 0x496ecd
mov ecx, dword [0x584e74]
push 0
push dword [0x5820e4]
call fcn.0043fd60
mov ecx, dword [edi + 0x7c]
mov eax, dword [ecx]
call dword [eax + 0x44]
jmp 0x496ecd
mov ecx, dword [0x584e74]
push 0
push dword [0x5820e4]
call fcn.0043fd60
push dword [ebp - 0x74]
lea ecx, [edi + 0x10]
call fcn.0041cc40
lea ecx, [edi + 0x10]
call fcn.0041d3e0
cmp dword [edi + 0x38], 0
je 0x4969a7
mov dword [edi + 0x38], 0
cmp esi, 0xc
jne 0x49698b
mov eax, dword [0x584e68]
push 0
or dword [eax + 0x10], 0x10
call fcn.0044fdf0
add esp, 4
jmp 0x496999
cmp esi, 0xd
jne 0x496999
mov eax, dword [0x584e68]
or dword [eax + 0x10], 0x20
mov ecx, dword [0x584e68]
lea ecx, [ecx + 4]
call fcn.0043df30
lea ecx, [edi + 0x44]
call fcn.0041d330
mov esi, eax
test esi, esi
je 0x4969d8
cmp dword [esi + 0xac], 0
je 0x4969d8
mov ecx, dword [0x584e74]
push 0
push dword [0x5820e4]
call fcn.0043fd60
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x44]
mov esi, dword [edi + 0x24]
test esi, esi
je 0x496cb9
mov ecx, dword [edi + 0x8c]
mov dword [edi + 0x80], 0
call fcn.0040ec30
mov eax, dword [esi + 4]
push eax
mov dword [ebp - 0x74], eax
lea eax, [ebp - 0x40]
push str.map_control_03d
push eax
call fcn.00444380
add esp, 0xc
mov ecx, dword [0x584e54]
push eax
mov dword [ebp - 4], 2
call fcn.00448c80
mov edx, dword [ebp - 0x2c]
mov esi, eax
mov dword [ebp - 4], 0xffffffff
cmp edx, 0x10
jb 0x496a60
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x496a56
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x496efc
push edx
push ecx
call fcn.0050b532
add esp, 8
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 0x40], 0
test esi, esi
je 0x496cb9
cmp word [esi], 0
je 0x496cb9
push dword [ebp - 0x74]
lea eax, [ebp - 0x70]
push str.if_mp_control_03d_y
push eax
call fcn.00444380
mov ecx, dword [0x584e58]
add esp, 8
mov dword [ebp - 4], 3
mov dword [esp], 0
push eax
call fcn.004491f0
mov edx, dword [ebp - 0x5c]
mov dword [ebp - 4], 0xffffffff
fstp dword [ebp - 0x74]
cmp edx, 0x10
jb 0x496af0
mov ecx, dword [ebp - 0x70]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x496ae6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x496f01
push edx
push ecx
call fcn.0050b532
add esp, 8
mov eax, dword [0x584e60]
mov ecx, dword [edi + 0x8c]
movss xmm0, dword [eax + 0x14]
subss xmm0, dword [0x54172c]
movss xmm1, dword [eax + 0x18]
mov eax, dword [ecx]
movss dword [ebp - 0x7c], xmm0
movss xmm0, dword [ebp - 0x74]
subss xmm0, dword [0x542128]
mov eax, dword [eax + 0x30]
subss xmm1, xmm0
movss dword [ebp - 0x74], xmm1
call eax
movss xmm5, dword [0x54159c]
mov ecx, esi
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x44], 7
movups xmm3, xmmword [eax]
xor eax, eax
lea edx, [ecx + 2]
mov word [ebp - 0x58], ax
movaps xmm4, xmm3
movaps xmm2, xmm3
shufps xmm4, xmm3, 0x55
movaps xmm1, xmm3
movaps xmm0, xmm4
shufps xmm2, xmm3, 0xff
subss xmm0, xmm2
shufps xmm1, xmm3, 0xaa
addss xmm2, xmm4
cvtss2sd xmm0, xmm0
mulss xmm2, xmm5
andps xmm0, xmmword [0x542180]
cvtpd2ps xmm6, xmm0
movaps xmm0, xmm3
subss xmm0, xmm1
mulss xmm6, xmm5
addss xmm1, xmm3
addss xmm6, dword [ebp - 0x74]
cvtss2sd xmm0, xmm0
mulss xmm1, xmm5
subss xmm6, xmm2
andps xmm0, xmmword [0x542180]
cvtpd2ps xmm0, xmm0
addss xmm6, xmm4
mulss xmm0, xmm5
addss xmm0, dword [ebp - 0x7c]
movss dword [ebp - 0x74], xmm6
addss xmm0, dword [0x5415ac]
subss xmm0, xmm1
addss xmm0, xmm3
movss dword [ebp - 0x7c], xmm0
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x496be0
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x58]
call fcn.00403520
movss xmm0, dword [ebp - 0x74]
lea eax, [ebp - 0x58]
push 0xffffffffffffffff
push ecx
mov ecx, dword [edi + 0x8c]
mov dword [esp], 0x42c80000
push eax
sub esp, 0x10
mov dword [ebp - 4], 4
mov dword [esp + 0xc], 0x41c80000
mov dword [esp + 8], 0x41f00000
movss dword [esp + 4], xmm0
movss xmm0, dword [ebp - 0x7c]
movss dword [esp], xmm0
call fcn.0040e9c0
mov edx, dword [ebp - 0x44]
mov dword [ebp - 4], 0xffffffff
cmp edx, 8
jb 0x496c82
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x496c78
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x496f06
push edx
push ecx
call fcn.0050b532
add esp, 8
xor eax, eax
mov dword [ebp - 0x48], 0
mov word [ebp - 0x58], ax
mov eax, dword [edi + 0x8c]
mov dword [ebp - 0x44], 7
mov dword [eax + 0xc0], 0x44400000
mov ecx, dword [edi + 0x8c]
push ecx
mov dword [esp], 0x43800000
mov eax, dword [ecx]
call dword [eax + 8]
movss xmm1, dword [edi + 0xb0]
cvtps2pd xmm0, xmm1
andps xmm0, xmmword [0x542180]
cvtpd2ps xmm0, xmm0
comiss xmm0, dword [0x541730]
jbe 0x496ddf
cmp byte [edi + 0x91], 0
jne 0x496ddf
cmp byte [edi + 0x90], 0
jne 0x496ddf
mulss xmm1, dword [0x547a48]
mov dword [edi + 0x9c], 0
movss xmm0, dword [edi + 0x98]
push 0
addss xmm0, xmm1
movss dword [ebp - 0x7c], xmm1
movss dword [edi + 0x98], xmm0
mov ecx, dword [0x584e48]
call fcn.0043b540
movss xmm0, dword [edi + 0xa8]
xorps xmm0, xmmword [0x542190]
movss xmm2, dword [edi + 0x98]
fstp dword [ebp - 0x74]
movss xmm1, dword [ebp - 0x74]
subss xmm0, xmm1
comiss xmm2, xmm0
ja 0x496d65
subss xmm1, dword [edi + 0xac]
maxss xmm1, xmm2
movaps xmm0, xmm1
movss dword [edi + 0x98], xmm0
movss xmm0, dword [ebp - 0x7c]
movss dword [edi + 0xb0], xmm0
mov ecx, dword [0x584e48]
push 0
call fcn.0043b540
movss xmm2, dword [edi + 0x98]
fstp dword [ebp - 0x74]
movss xmm1, dword [ebp - 0x74]
movaps xmm0, xmm1
subss xmm0, dword [edi + 0xac]
ucomiss xmm2, xmm0
lahf
test ah, 0x44
jnp 0x496dc7
movss xmm0, dword [edi + 0xa8]
xorps xmm0, xmmword [0x542190]
subss xmm0, xmm1
ucomiss xmm2, xmm0
lahf
test ah, 0x44
jp 0x496ddf
movss xmm0, dword [edi + 0xb0]
mulss xmm0, dword [0x544424]
movss dword [edi + 0xb0], xmm0
lea ecx, [edi + 0x10]
call fcn.0041d330
test eax, eax
jne 0x496ecd
lea ecx, [edi + 0x44]
call fcn.0041d330
test eax, eax
jne 0x496ecd
cmp byte [edi + 0x90], al
jne 0x496ecd
mov esi, dword [0x584e60]
mov ecx, dword [0x584e48]
push eax
movss xmm0, dword [esi + 0x18]
cvtps2pd xmm0, xmm0
andps xmm0, xmmword [0x542180]
cvtpd2ps xmm0, xmm0
movss dword [ebp - 0x74], xmm0
call fcn.0043b590
fsub dword [ebp - 0x74]
movss xmm0, dword [0x542cd8]
fstp dword [ebp - 0x74]
comiss xmm0, dword [ebp - 0x74]
ja 0x496ecd
movss xmm0, dword [esi + 0x14]
mov ecx, dword [0x584e48]
cvtps2pd xmm0, xmm0
push 0
andps xmm0, xmmword [0x542180]
cvtpd2ps xmm0, xmm0
movss dword [ebp - 0x74], xmm0
call fcn.0043b540
fsub dword [ebp - 0x74]
fstp dword [ebp - 0x74]
movss xmm0, dword [ebp - 0x74]
comiss xmm0, dword [0x547a4c]
ja 0x496ecd
mov eax, dword [0x584e60]
xorps xmm2, xmm2
movss xmm0, dword [esi + 0x14]
comiss xmm0, xmm2
movss xmm1, dword [eax + 0x20]
jbe 0x496ea4
mov eax, 1
jmp 0x496ead
xor eax, eax
comiss xmm2, xmm0
setbe al
dec eax
mulss xmm1, dword [0x547a54]
push ecx
movd xmm0, eax
mov ecx, edi
cvtdq2ps xmm0, xmm0
mulss xmm1, xmm0
movss dword [esp], xmm1
call fcn.004991b0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0050b540
mov esp, ebp
pop ebp
ret
call fcn.00405610
call fcn.00511c7b
call fcn.00511c7b
call fcn.00511c7b
call fcn.00511c7b
call fcn.00511c7b
call fcn.00511c7b
int3