Function at 0x403090
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x43ee14
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xdc
mov eax, dword [0x44b6d0]
push esi
mov esi, ecx
mov ecx, dword [esp + 0xf0]
push edi
mov dword [esp + 0xe0], eax
mov dword [esp + 0x30], esi
call fcn.0042b070
mov edi, eax
push 0x108
mov dword [esp + 0x10], edi
call fcn.00430d06
add esp, 4
mov dword [esp + 0x10], eax
test eax, eax
mov dword [esp + 0xec], 0
je 0x4030fc
mov ecx, eax
call fcn.0041eb20
mov ecx, eax
jmp 0x4030fe
xor ecx, ecx
test edi, edi
mov eax, dword [esi + 0x90]
mov dword [esp + 8], ecx
mov dword [esp + 0xec], 0xffffffff
mov dword [ecx + 0x5c], eax
je 0x403862
push ebx
push ebp
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x403130
mov ecx, dword [eax + 0x20]
jmp 0x403135
mov ecx, 0x4411cc
mov eax, ecx
mov dword [esp + 0x58], 0xf
mov dword [esp + 0x54], 0
mov byte [esp + 0x44], 0
lea esi, [eax + 1]
nop
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x403150
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x48]
call fcn.00401c50
mov eax, dword [esp + 0x54]
test eax, eax
mov ebx, dword [esp + 0x44]
mov ebp, dword [esp + 0x58]
mov dword [esp + 0xf4], 1
je 0x40342f
cmp eax, 4
mov ecx, eax
jb 0x40318f
mov ecx, 4
cmp ebp, 0x10
mov esi, ebx
jae 0x40319a
lea esi, [esp + 0x44]
mov edi, str.name
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x4031aa
sbb edx, edx
sbb edx, 0xffffffff
test edx, edx
jne 0x403207
cmp eax, 4
jb 0x403207
cmp eax, 4
setne dl
test edx, edx
jne 0x403207
mov eax, dword [esp + 0x14]
mov eax, dword [eax + 0x18]
test eax, eax
je 0x4031ce
cmp dword [eax + 0x14], 4
je 0x4031d0
xor eax, eax
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x4031dc
mov edx, dword [eax + 0x20]
jmp 0x4031e1
mov edx, 0x4411cc
mov eax, edx
lea esi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4031e6
mov ecx, dword [esp + 0x10]
sub eax, esi
push eax
push edx
add ecx, 0xa4
call fcn.00401c50
xor ebx, ebx
jmp 0x403818
test eax, eax
je 0x40342f
cmp eax, 0xa
mov ecx, eax
jb 0x40321b
mov ecx, 0xa
cmp ebp, 0x10
mov esi, ebx
jae 0x403226
lea esi, [esp + 0x44]
mov edi, str.polypoints
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x403236
sbb edx, edx
sbb edx, 0xffffffff
xor ebx, ebx
cmp edx, ebx
jne 0x40342f
cmp eax, 0xa
jb 0x40342f
xor edx, edx
cmp eax, 0xa
setne dl
cmp edx, ebx
jne 0x40342f
mov ecx, dword [esp + 0x14]
call fcn.0042b070
mov esi, eax
cmp esi, ebx
je 0x403818
mov ebp, 0xf
cmp dword [esi + 0x24], ebx
je 0x40327b
mov ecx, dword [esi + 0x20]
jmp 0x403280
mov ecx, 0x4411cc
mov eax, ecx
mov dword [esp + 0xe4], ebp
mov dword [esp + 0xe0], ebx
mov byte [esp + 0xd0], 0
lea edi, [eax + 1]
jmp 0x4032a0
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4032a0
sub eax, edi
push eax
push ecx
lea ecx, [esp + 0xd4]
call fcn.00401c50
push 0x441244
mov ecx, esi
mov byte [esp + 0xf8], 2
call fcn.0042c860
mov ecx, eax
mov dword [esp + 0x90], ebp
mov dword [esp + 0x8c], ebx
mov byte [esp + 0x7c], 0
lea edi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x4032e3
sub ecx, edi
push ecx
push eax
lea ecx, [esp + 0x80]
call fcn.00401c50
push 0x441240
mov ecx, esi
mov byte [esp + 0xf8], 3
call fcn.0042c860
mov ecx, eax
mov dword [esp + 0xc8], ebp
mov dword [esp + 0xc4], ebx
mov byte [esp + 0xb4], 0
lea edi, [ecx + 1]
lea esp, [esp]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x403330
sub ecx, edi
push ecx
push eax
lea ecx, [esp + 0xb8]
call fcn.00401c50
cmp dword [esp + 0xc8], 0x10
mov ecx, dword [esp + 0xb4]
mov byte [esp + 0xf4], 4
jae 0x403367
lea ecx, [esp + 0xb4]
mov eax, dword [esp + 0x90]
mov edi, 0x10
cmp eax, edi
mov eax, dword [esp + 0x7c]
jae 0x40337f
lea eax, [esp + 0x7c]
push ecx
mov ecx, dword [esp + 0x14]
push eax
call fcn.00407740
mov ecx, esi
call fcn.0042b0a0
mov esi, eax
cmp dword [esp + 0xc8], edi
jb 0x4033ac
mov ecx, dword [esp + 0xb4]
push ecx
call fcn.0043134d
add esp, 4
cmp dword [esp + 0x90], edi
mov dword [esp + 0xc8], ebp
mov dword [esp + 0xc4], ebx
mov byte [esp + 0xb4], 0
jb 0x4033d8
mov edx, dword [esp + 0x7c]
push edx
call fcn.0043134d
add esp, 4
cmp dword [esp + 0xe4], edi
mov dword [esp + 0x90], ebp
mov dword [esp + 0x8c], ebx
mov byte [esp + 0x7c], 0
mov byte [esp + 0xf4], 1
jb 0x40340c
mov eax, dword [esp + 0xd0]
push eax
call fcn.0043134d
add esp, 4
cmp esi, ebx
mov dword [esp + 0xe4], ebp
mov dword [esp + 0xe0], ebx
mov byte [esp + 0xd0], 0
jne 0x403271
jmp 0x40381d
push 6
push str.sprite
push eax
xor ebx, ebx
push ebx
lea ecx, [esp + 0x50]
call fcn.004010f0
test eax, eax
jne 0x40372a
mov ecx, dword [esp + 0x14]
call fcn.0042b070
mov ebp, eax
cmp ebp, ebx
je 0x4036fc
mov edi, edi
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x40346c
mov ecx, dword [ebp + 0x20]
jmp 0x403471
mov ecx, 0x4411cc
mov eax, ecx
mov dword [esp + 0x74], 0xf
mov dword [esp + 0x70], 0
mov byte [esp + 0x60], 0
lea esi, [eax + 1]
jmp 0x403490
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x403490
sub eax, esi
push eax
push ecx
lea ecx, [esp + 0x64]
call fcn.00401c50
mov eax, dword [esp + 0x70]
test eax, eax
mov byte [esp + 0xf4], 5
je 0x403671
cmp eax, 7
mov ecx, eax
jb 0x4034c4
mov ecx, 7
cmp dword [esp + 0x74], 0x10
mov esi, dword [esp + 0x60]
jae 0x4034d3
lea esi, [esp + 0x60]
mov edi, str.texture
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x4034e3
sbb edx, edx
sbb edx, 0xffffffff
xor ebx, ebx
cmp edx, ebx
jne 0x4035c8
cmp eax, 7
jb 0x4035c8
xor edx, edx
cmp eax, 7
setne dl
cmp edx, ebx
jne 0x4035c8
push str.fname
mov ecx, ebp
call fcn.0042c860
mov edi, 0xf
mov ecx, eax
mov dword [esp + 0xac], edi
mov dword [esp + 0xa8], ebx
mov byte [esp + 0x98], bl
lea esi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x403531
sub ecx, esi
push ecx
push eax
lea ecx, [esp + 0x9c]
call fcn.00401c50
mov eax, dword [esp + 0xac]
mov esi, 0x10
cmp eax, esi
mov eax, dword [esp + 0x98]
mov byte [esp + 0xf4], 6
jae 0x40356e
lea eax, [esp + 0x98]
push eax
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0x90]
push ecx
lea ecx, [eax + 0x7c]
call fcn.0042a9a0
mov edx, dword [esp + 0x10]
mov dword [edx + 0xc8], eax
cmp dword [esp + 0xac], esi
mov byte [esp + 0xf4], 5
jb 0x4035ad
mov eax, dword [esp + 0x98]
push eax
call fcn.0043134d
add esp, 4
mov dword [esp + 0xac], edi
mov dword [esp + 0xa8], ebx
mov byte [esp + 0x98], 0
jmp 0x4036ba
test eax, eax
je 0x403671
cmp eax, 9
mov ecx, eax
jb 0x4035dc
mov ecx, 9
cmp dword [esp + 0x74], 0x10
mov esi, dword [esp + 0x60]
jae 0x4035eb
lea esi, [esp + 0x60]
mov edi, str.dimension
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x4035fb
sbb edx, edx
sbb edx, 0xffffffff
test edx, edx
jne 0x403671
cmp eax, 9
jb 0x403671
cmp eax, 9
setne dl
test edx, edx
jne 0x403671
push 0x441244
mov ecx, ebp
call fcn.0042c860
push eax
call fcn.00431e91
add esp, 4
push 0x441240
mov ecx, ebp
mov dword [esp + 0x20], eax
call fcn.0042c860
push eax
call fcn.00431e91
add esp, 4
push 0x44129c
mov ecx, ebp
mov dword [esp + 0x34], eax
call fcn.0042c860
push eax
call fcn.00431e91
add esp, 4
push 0x441298
mov ecx, ebp
mov dword [esp + 0x40], eax
call fcn.0042c860
push eax
call fcn.00431e91
mov dword [esp + 0x2c], eax
jmp 0x4036b7
push 7
push str.hotspot
push eax
push 0
lea ecx, [esp + 0x6c]
call fcn.004010f0
test eax, eax
jne 0x4036ba
push 0x441244
mov ecx, ebp
call fcn.0042c860
push eax
call fcn.00431e91
add esp, 4
push 0x441240
mov ecx, ebp
mov dword [esp + 0x38], eax
call fcn.0042c860
push eax
call fcn.00431e91
mov dword [esp + 0x28], eax
add esp, 4
mov ecx, ebp
call fcn.0042b0a0
mov ebp, eax
cmp dword [esp + 0x74], 0x10
mov byte [esp + 0xf4], 1
jb 0x4036df
mov ecx, dword [esp + 0x60]
push ecx
call fcn.0043134d
add esp, 4
test ebp, ebp
mov dword [esp + 0x74], 0xf
mov dword [esp + 0x70], 0
mov byte [esp + 0x60], 0
jne 0x403460
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x28]
push edx
mov edx, dword [esp + 0x40]
push eax
mov eax, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x28]
push edx
push eax
push ecx
mov ecx, dword [esp + 0x28]
call fcn.0041eb40
xor ebx, ebx
jmp 0x403818
mov edx, dword [esp + 0x54]
push 8
push str.position
push edx
push ebx
lea ecx, [esp + 0x50]
call fcn.004010f0
test eax, eax
jne 0x4037c3
mov esi, dword [esp + 0x14]
push 0x441244
mov ecx, esi
call fcn.0042c860
push eax
call fcn.00431ed5
fstp dword [esp + 0x1c]
add esp, 4
push 0x441240
mov ecx, esi
call fcn.0042c860
push eax
call fcn.00431ed5
fstp dword [esp + 0x24]
add esp, 4
push str.rotangle
mov ecx, esi
call fcn.0042c860
push eax
call fcn.00431ed5
fstp dword [esp + 0x30]
add esp, 4
push str.flip
mov ecx, esi
call fcn.0042c860
push eax
call fcn.00431e91
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x1c]
add esp, 4
push eax
mov eax, dword [esp + 0x30]
push eax
push ecx
mov ecx, dword [esp + 0x1c]
push edx
call fcn.0041ebf0
jmp 0x403818
mov eax, dword [esp + 0x54]
push 4
push str.meta
push eax
push ebx
lea ecx, [esp + 0x50]
call fcn.004010f0
test eax, eax
jne 0x403818
mov edi, dword [esp + 0x14]
push str.depth
mov ecx, edi
call fcn.0042c860
push eax
call fcn.00431e91
add esp, 4
push str.obstacles
mov ecx, edi
mov esi, eax
call fcn.0042c860
push eax
call fcn.00431e91
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
add esp, 4
push eax
push esi
call dword [edx + 0x18]
mov ebp, 0xf
mov ecx, dword [esp + 0x14]
call fcn.0042b0a0
mov esi, eax
cmp dword [esp + 0x58], 0x10
mov dword [esp + 0x14], esi
mov dword [esp + 0xf4], 0xffffffff
jb 0x40384b
mov eax, dword [esp + 0x44]
push eax
call fcn.0043134d
add esp, 4
cmp esi, ebx
mov dword [esp + 0x58], ebp
mov dword [esp + 0x54], ebx
mov byte [esp + 0x44], 0
jne 0x403120
pop ebp
pop ebx
mov esi, dword [esp + 8]
mov ecx, esi
call fcn.0041ec50
mov ecx, dword [esp + 0xe4]
pop edi
mov dword fs:[0], ecx
mov ecx, dword [esp + 0xdc]
mov eax, esi
pop esi
call fcn.00431ec7
add esp, 0xe8
ret 4