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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4efa94
push eax
mov dword fs:[0], esp
mov eax, dword [0x821094]
sub esp, 0x6f4
push ebx
push ebp
push esi
push edi
xor edi, edi
mov esi, ecx
cmp eax, edi
je 0x4d22a8
lea eax, [esp + 0x3f8]
push 0x104
push eax
push str.D:DevProjectsJMain1SourceVWorld.cpp
mov dword [0x8210d4], 1
call fcn.004e6240
lea ecx, [esp + 0x3f8]
push 0x710
push ecx
push str.Program_runs_to__s__d.
push esi
call fcn.004331c0
add esp, 0x10
mov al, byte [0x941eec]
mov dword [esp + 0x14], edi
test al, al
mov dword [esp + 0x1c], edi
mov dword [esp + 0x34], edi
je 0x4d381e
mov ebp, dword [esp + 0x714]
mov ebx, dword [0x4f0138]
cmp ebp, edi
lea edi, [esi + 0x50e7]
je 0x4d22de
push ebp
push edi
call ebx
jmp 0x4d22e7
mov ebp, edi
mov dword [esp + 0x714], ebp
push str.Save
push edi
call dword [0x4f021c]
add esp, 8
cmp eax, edi
jne 0x4d2333
mov eax, dword [esi + 0x5f2f]
lea edx, [esp + 0x3f8]
add eax, 0x373
push eax
push edx
call ebx
mov edi, dword [0x4f01fc]
lea eax, [esp + 0x3f8]
push ebp
push eax
lea ecx, [esp + 0x504]
push str._sSaveGame_s
push ecx
call edi
add esp, 0x10
jmp 0x4d234c
mov edi, dword [0x4f01fc]
push ebp
lea edx, [esp + 0x500]
push str.Data_s
push edx
call edi
add esp, 0xc
push 0
push 0x80
push 3
push 0
push 1
lea eax, [esp + 0x510]
push DirectSoundCreate
push eax
call dword [0x4f0108]
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x34], ebp
je 0x4d3d44
push 0
push ebp
call dword [0x4f0110]
cmp eax, 0xffffffff
mov dword [esp + 0x18], eax
je 0x4d3d44
mov ecx, eax
push ecx
call dword [0x4f01f4]
add esp, 4
mov dword [esp + 0x1c], eax
test eax, eax
je 0x4d3d44
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x38]
push 0
push edx
push ecx
push eax
push ebp
call dword [0x4f0114]
test eax, eax
je 0x4d3d44
push ebp
call dword [0x4f010c]
lea edx, [esp + 0x4fc]
push 0x4feeb8
push edx
call dword [0x4f01f0]
mov ebp, eax
add esp, 8
test ebp, ebp
mov dword [esp + 0x14], ebp
je 0x4d3d44
mov al, byte [esp + 0x718]
test al, al
jne 0x4d2454
push 0xba
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 0
je 0x4d2424
mov ecx, eax
call fcn.00438510
jmp 0x4d2426
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0x5f3f], eax
je 0x4d3d44
push 0
push 0
push 0
mov ecx, eax
call fcn.00438610
test al, al
je 0x4d3d44
lea eax, [esp + 0x10]
lea ecx, [esp + 0x3c]
push eax
push ecx
push ebp
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
lea eax, [esi + 0x52ef]
push edx
push eax
call ebx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x1f0]
push ecx
push str.Data_s
push edx
call edi
mov ecx, dword [esi + 0x5f3f]
add esp, 0xc
lea eax, [esp + 0x1f0]
push eax
call fcn.00438d40
test al, al
je 0x4d3d44
lea ecx, [esp + 0x10]
lea edx, [esp + 0x3c]
push ecx
push edx
push ebp
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
lea ecx, [esi + 0x53f3]
push eax
push ecx
call ebx
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x1f0]
push edx
push str.Data_s
push eax
call edi
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x48]
push ecx
push edx
push ebp
call fcn.004d6820
add esp, 0x18
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
lea ecx, [esi + 0x54f7]
push eax
push ecx
call ebx
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x2f4]
push edx
push str.Data_s
push eax
call edi
mov al, byte [esp + 0x724]
add esp, 0xc
test al, al
jne 0x4d255a
lea ecx, [esp + 0x1f0]
lea edx, [esp + 0x1f0]
push ecx
mov ecx, dword [esi + 0x5f3f]
push edx
call fcn.00439430
test al, al
je 0x4d3d44
lea eax, [esp + 0x10]
lea ecx, [esp + 0x3c]
push eax
push ecx
push ebp
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
lea eax, [esi + 0x55fb]
push edx
push eax
call ebx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x1f0]
push ecx
push str.Data_s
push edx
call edi
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x48]
push eax
push ecx
push ebp
call fcn.004d6820
add esp, 0x18
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
lea eax, [esi + 0x56ff]
push edx
push eax
call ebx
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x2f4]
push ecx
push str.Data_s
push edx
call edi
mov al, byte [esp + 0x724]
add esp, 0xc
test al, al
jne 0x4d2605
lea eax, [esp + 0x1f0]
lea ecx, [esp + 0x1f0]
push eax
push ecx
mov ecx, dword [esi + 0x5f3f]
call fcn.00438f80
test al, al
je 0x4d3d44
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
push ebp
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
lea edx, [esi + 0x5803]
push ecx
push edx
call ebx
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x1f0]
push eax
push str.Data_s
push ecx
call edi
lea edx, [esp + 0x1c]
lea eax, [esp + 0x48]
push edx
push eax
push ebp
call fcn.004d6820
add esp, 0x18
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
lea edx, [esi + 0x5907]
push ecx
push edx
call ebx
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x2f4]
push eax
push str.Data_s
push ecx
call edi
mov al, byte [esp + 0x724]
add esp, 0xc
test al, al
jne 0x4d26b0
mov ecx, dword [esi + 0x5f3f]
lea edx, [esp + 0x1f0]
lea eax, [esp + 0x1f0]
push edx
push eax
call fcn.004392e0
test al, al
je 0x4d3d44
lea ecx, [esp + 0x10]
lea edx, [esp + 0x3c]
push ecx
push edx
push ebp
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
lea ecx, [esi + 0x5b0f]
push eax
push ecx
call ebx
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
push ebp
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
mov ebx, dword [0x4f0200]
push ecx
call ebx
mov edi, eax
lea edx, [esp + 0x14]
lea eax, [esp + 0x40]
push edx
push eax
push ebp
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
push ecx
call ebx
mov dword [esp + 0x24], eax
lea edx, [esp + 0x14]
lea eax, [esp + 0x40]
push edx
push eax
push ebp
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
push ecx
call ebx
and edi, 0xffff
mov edx, eax
mov eax, dword [esp + 0x24]
or edi, 0xffffff00
shl edi, 8
and eax, 0xffff
and edx, 0xffff
or edi, eax
lea eax, [esp + 0x14]
shl edi, 8
lea ecx, [esp + 0x40]
push eax
or edx, edi
push ecx
push ebp
mov dword [esi + 0x5c14], edx
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call ebx
mov edi, eax
lea eax, [esp + 0x14]
lea ecx, [esp + 0x40]
push eax
push ecx
push ebp
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call ebx
mov dword [esp + 0x24], eax
lea eax, [esp + 0x14]
lea ecx, [esp + 0x40]
push eax
push ecx
push ebp
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call ebx
and edi, 0xffff
mov ecx, eax
mov eax, dword [esp + 0x24]
or edi, 0xffffff00
shl edi, 8
and eax, 0xffff
lea edx, [esp + 0x14]
or edi, eax
and ecx, 0xffff
shl edi, 8
lea eax, [esp + 0x40]
push edx
or ecx, edi
push eax
push ebp
mov dword [esi + 0x5c18], ecx
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
lea edi, [esi + 0x5a0b]
push ecx
push edi
call dword [0x4f0138]
push edi
lea edx, [esp + 0x1f4]
push str.Images_s
push edx
call dword [0x4f01fc]
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x48]
push eax
push ecx
push ebp
call fcn.004d6820
add esp, 0x18
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call ebx
mov edi, eax
lea eax, [esp + 0x14]
lea ecx, [esp + 0x40]
push eax
push ecx
push ebp
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call ebx
mov ebx, eax
lea eax, [esp + 0x14]
lea ecx, [esp + 0x40]
push eax
push ecx
push ebp
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call dword [0x4f0200]
mov ebp, eax
mov al, byte [0x8f6a18]
add esp, 4
test al, al
je 0x4d2906
and ebx, 0xffff
xor edi, edi
mov dword [esp + 0x18], ebx
fild dword [esp + 0x18]
fmul dword [0x4f39ec]
call fcn.004ecc00
and ebp, 0xffff
mov ebx, eax
mov dword [esp + 0x18], ebp
fild dword [esp + 0x18]
fmul dword [0x4f1738]
call fcn.004ecc00
mov ebp, eax
and edi, 0xffff
mov edx, dword [esp + 0x14]
or edi, 0xffffff00
and ebx, 0xffff
shl edi, 8
or edi, ebx
lea eax, [esp + 0x10]
shl edi, 8
and ebp, 0xffff
lea ecx, [esp + 0x3c]
push eax
or edi, ebp
push ecx
push edx
mov dword [esi + 0x5c20], edi
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
push eax
call dword [0x4f025c]
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x14]
fstp dword [esi + 0x5c24]
lea edx, [esp + 0x40]
push ecx
push edx
push eax
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
push ecx
call dword [0x4f025c]
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x14]
fstp dword [esi + 0x5c28]
lea eax, [esp + 0x40]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call dword [0x4f025c]
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x14]
fstp dword [esi + 0x5c2c]
lea ecx, [esp + 0x40]
push eax
push ecx
push edx
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
push eax
call dword [0x4f0200]
lea ecx, [esp + 0x14]
mov edi, eax
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x40]
push ecx
push edx
push eax
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
push ecx
call dword [0x4f0200]
mov ecx, dword [esp + 0x18]
mov ebx, eax
lea edx, [esp + 0x14]
lea eax, [esp + 0x40]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call dword [0x4f0200]
and edi, 0xffff
and ebx, 0xffff
or edi, 0xffffff00
mov edx, dword [esp + 0x18]
shl edi, 8
or edi, ebx
and eax, 0xffff
shl edi, 8
or edi, eax
lea eax, [esp + 0x14]
lea ecx, [esp + 0x40]
push eax
push ecx
push edx
mov dword [esi + 0x5c1c], edi
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
push eax
call dword [0x4f025c]
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x14]
fstp dword [esp + 0x24]
lea edx, [esp + 0x40]
push ecx
push edx
push eax
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
push ecx
call dword [0x4f025c]
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x14]
fstp dword [esp + 0x28]
lea eax, [esp + 0x40]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call dword [0x4f025c]
fmul dword [0x4f1ae4]
call fcn.004ecc00
fld dword [esp + 0x24]
fmul dword [0x4f1ae4]
mov edi, eax
call fcn.004ecc00
fld dword [esp + 0x28]
fmul dword [0x4f1ae4]
mov ebx, eax
or ebx, 0xffffff00
shl ebx, 8
call fcn.004ecc00
mov edx, dword [esp + 0x18]
or ebx, eax
lea eax, [esp + 0x14]
lea ecx, [esp + 0x40]
shl ebx, 8
push eax
or edi, ebx
push ecx
push edx
mov dword [esi + 0x5c30], edi
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
push eax
call dword [0x4f025c]
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x14]
fstp dword [esp + 0x24]
lea edx, [esp + 0x40]
push ecx
push edx
push eax
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
push ecx
call dword [0x4f025c]
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x14]
fstp dword [esp + 0x28]
lea eax, [esp + 0x40]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call dword [0x4f025c]
fld dword [esp + 0x24]
fmul dword [0x4f1ae4]
call fcn.004ecc00
fld dword [esp + 0x28]
fmul dword [0x4f1ae4]
mov edi, eax
or edi, 0xffffff00
shl edi, 8
call fcn.004ecc00
fmul dword [0x4f1ae4]
or edi, eax
shl edi, 8
call fcn.004ecc00
mov edx, dword [esp + 0x18]
or edi, eax
lea eax, [esp + 0x14]
lea ecx, [esp + 0x40]
push eax
push ecx
push edx
mov dword [esi + 0x5c34], edi
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
push eax
call dword [0x4f025c]
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x14]
fstp dword [esi + 0x5c38]
lea edx, [esp + 0x40]
push ecx
push edx
push eax
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
push ecx
call dword [0x4f025c]
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x14]
fstp dword [esi + 0x5c3c]
lea eax, [esp + 0x40]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0x10
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
call dword [0x4f025c]
fstp dword [esi + 0x5c40]
mov ecx, dword [esi + 0x5c38]
mov edx, dword [esi + 0x5c3c]
sub esp, 8
mov eax, esp
mov dword [eax], ecx
mov ecx, dword [esi + 0x5c40]
mov dword [eax + 4], edx
mov edx, dword [esi + 0x5c34]
push edx
mov dword [eax + 8], ecx
mov eax, dword [esi + 0x5c30]
mov ecx, dword [esi + 0x5f3b]
push eax
call fcn.00436380
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x10]
lea edx, [esp + 0x3c]
push ecx
push edx
push eax
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
mov edi, dword [0x4f0198]
push str.true
push ecx
call edi
test eax, eax
jne 0x4d2d6e
mov edx, dword [esi + 0x5f3b]
mov al, byte [edx + 0x62]
test al, al
je 0x4d2d6e
push 0xb1
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 1
je 0x4d2d37
push str.Rain
mov ecx, eax
call fcn.0043f0b0
jmp 0x4d2d39
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0x85], eax
je 0x4d3d44
mov ecx, dword [esi + 0x5e8b]
push str.B__Rain.bmp
push ecx
push esi
mov ecx, eax
call fcn.00442eb0
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push str.true
push edx
call edi
test eax, eax
jne 0x4d2e0f
mov eax, dword [esi + 0x5f3b]
mov cl, byte [eax + 0x62]
test cl, cl
je 0x4d2e0f
push 0xb1
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 2
je 0x4d2dd8
push str.Snow
mov ecx, eax
call fcn.0043f0b0
jmp 0x4d2dda
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0x89], eax
je 0x4d3d44
mov ecx, dword [esi + 0x5e8b]
push str.B__Snow.bmp
push ecx
push esi
mov ecx, eax
call fcn.00442eb0
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push str.true
push edx
call edi
test eax, eax
jne 0x4d2e47
mov byte [esi + 0x5c13], 1
jmp 0x4d2e4e
mov byte [esi + 0x5c13], 0
mov bl, byte [esp + 0x718]
test bl, bl
jne 0x4d2e7a
push 0x780
lea eax, [esp + 0x1f4]
push 0x140
push eax
mov ecx, esi
call fcn.004d8160
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x10]
lea edx, [esp + 0x3c]
push ecx
push edx
push eax
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
lea edx, [esi + 0x51eb]
push ecx
push edx
call dword [0x4f0138]
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x1f0]
push eax
push str.Data_s
push ecx
call dword [0x4f01fc]
add esp, 0xc
test bl, bl
jne 0x4d2fbd
push 0x39c
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 3
je 0x4d2efc
push 0x82108c
mov ecx, eax
call fcn.004ab2e0
jmp 0x4d2efe
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0x5f47], eax
je 0x4d3d44
mov edx, dword [esi + 0x5ea7]
push esi
mov ecx, dword [edx]
mov edx, dword [esi + 0x5e8f]
push ecx
mov ecx, dword [esi + 0x5e9b]
push edx
mov edx, dword [esi + 0x5e73]
push ecx
push edx
push str.Terrain
mov ecx, eax
call fcn.004ab410
test al, al
je 0x4d3d44
mov ecx, dword [esi + 0x5f47]
lea eax, [esp + 0x1f0]
push eax
call fcn.004abbd0
test al, al
je 0x4d3d44
mov eax, dword [esi + 0x5f47]
mov ecx, dword [eax + 0x74]
mov dword [esi + 0x50cb], ecx
mov eax, dword [eax + 0x78]
mov dword [esi + 0x50cf], eax
imul eax, ecx
push eax
call dword [0x4f01f4]
add esp, 4
mov dword [esi + 0x50db], eax
test eax, eax
je 0x4d3d44
mov ecx, dword [esi + 0x50cf]
imul ecx, dword [esi + 0x50cb]
push ecx
call dword [0x4f01f4]
add esp, 4
mov dword [esi + 0x50df], eax
test eax, eax
je 0x4d3d44
mov edx, dword [esi + 0x50cf]
mov al, byte [0x941ef0]
imul edx, dword [esi + 0x50cb]
test al, al
mov ecx, edx
je 0x4d2ff3
mov edi, dword [esi + 0x50db]
mov ebx, ecx
or eax, 0xffffffff
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, edx
or eax, 0xffffffff
jmp 0x4d300d
mov edi, dword [esi + 0x50db]
mov ebx, ecx
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, ebx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, edx
xor eax, eax
mov edi, dword [esi + 0x50df]
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov ebx, dword [0x4f021c]
and ecx, 3
push str.Save
rep stosb byte es:[edi], al
lea edi, [esi + 0x50e7]
push edi
call ebx
add esp, 8
cmp eax, edi
jne 0x4d30ff
mov eax, dword [esi + 0x5f2f]
add eax, 0x373
push eax
lea eax, [esp + 0x604]
push eax
call dword [0x4f0138]
mov ecx, dword [esp + 0x714]
lea edx, [esp + 0x600]
push ecx
push edx
lea eax, [esp + 0x400]
push str._sSaveGame_s
push eax
call dword [0x4f01fc]
lea ecx, [esp + 0x408]
push 0x4f9a88
push ecx
call ebx
add esp, 0x18
test eax, eax
je 0x4d3d44
push str..dat
push eax
call dword [0x4f0138]
lea edx, [esp + 0x3f8]
push 0x4f96c8
push edx
call dword [0x4f01f0]
mov edi, eax
add esp, 8
test edi, edi
je 0x4d30ff
mov eax, dword [esi + 0x50cf]
mov ecx, dword [esi + 0x50db]
imul eax, dword [esi + 0x50cb]
push edi
push eax
push 1
push ecx
call dword [0x4f0228]
mov edx, dword [esi + 0x50cf]
add esp, 0x10
imul edx, dword [esi + 0x50cb]
cmp eax, edx
jl 0x4d3d44
push edi
call dword [0x4f01e8]
add esp, 4
mov eax, dword [esp + 0x1c]
push str.LocalPlayerID
push eax
call dword [0x4f021c]
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x4d3d44
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
sub eax, ebp
push 0
push eax
push ecx
call dword [0x4f0244]
add esp, 0xc
test eax, eax
jne 0x4d3d44
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov eax, dword [esi + 0x5f33]
test eax, eax
je 0x4d3184
mov cl, byte [0x941eed]
test cl, cl
je 0x4d317c
mov dword [esi + 0x5e2c], 0
jmp 0x4d3198
mov eax, dword [eax + 0x2a5c]
jmp 0x4d3192
mov edx, dword [esp + 0x10]
push edx
call dword [0x4f0200]
add esp, 4
mov dword [esi + 0x5e2c], eax
mov eax, dword [esi + 0x5e2c]
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x3c]
mov byte [eax + esi + 0x5e48], 0
mov eax, dword [esi + 0x5e2c]
mov byte [eax + esi + 0x5e4e], 0
lea eax, [esp + 0x10]
push eax
push ecx
push edx
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov eax, dword [esi + 0x5f33]
test eax, eax
je 0x4d31e9
mov dword [esi + 0x5e28], 1
jmp 0x4d3205
mov eax, dword [esp + 0x10]
push eax
call dword [0x4f0200]
mov ecx, dword [0x941ee8]
add esp, 4
add eax, ecx
mov dword [esi + 0x5e28], eax
mov eax, dword [esi + 0x5e28]
xor ebx, ebx
test eax, eax
jle 0x4d338a
lea ebp, [esi + 0x5e30]
mov al, byte [esp + 0x718]
test al, al
je 0x4d3235
mov ecx, dword [ebp]
push 0x82108c
call fcn.00495790
jmp 0x4d327b
push 0x44e2
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 4
je 0x4d3263
push 0x82108c
mov ecx, eax
call fcn.00495790
jmp 0x4d3265
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [ebp], eax
je 0x4d3d44
mov ecx, dword [ebp]
push ebx
push esi
call fcn.00495b10
test al, al
je 0x4d3d44
test ebx, ebx
je 0x4d3378
mov ecx, dword [esi + 0x5e28]
mov edx, dword [0x941ee8]
sub ecx, edx
cmp ebx, ecx
jge 0x4d3378
push ebx
lea edx, [esp + 0x140]
push str.LoveInfo_02d
push edx
call dword [0x4f01fc]
mov ecx, dword [esp + 0x28]
lea eax, [esp + 0x148]
push eax
push ecx
call dword [0x4f021c]
add esp, 0x14
mov dword [esp + 0x10], eax
test eax, eax
je 0x4d3d44
mov edx, dword [esp + 0x1c]
push 0
sub eax, edx
mov edx, dword [esp + 0x18]
push eax
push edx
call dword [0x4f0244]
add esp, 0xc
test eax, eax
jne 0x4d3d44
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x3c]
push eax
push ecx
push edx
call fcn.004d6820
mov eax, dword [esi + 0x5e28]
mov edx, dword [0x941ee8]
mov edi, 1
sub eax, edx
add esp, 0xc
cmp eax, edi
jle 0x4d3378
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x10]
lea edx, [esp + 0x3c]
push ecx
push edx
push eax
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
push ecx
call dword [0x4f0200]
mov ecx, dword [ebp]
add esp, 4
push eax
push edi
call fcn.00498cc0
mov edx, dword [esi + 0x5e28]
mov ecx, dword [0x941ee8]
inc edi
sub edx, ecx
cmp edi, edx
jl 0x4d332e
mov eax, dword [esi + 0x5e28]
inc ebx
add ebp, 4
cmp ebx, eax
jl 0x4d321b
mov eax, dword [esp + 0x1c]
push str.UnitListIDLast
push eax
call dword [0x4f021c]
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x4d3d44
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
sub eax, ebp
push 0
push eax
push ecx
call dword [0x4f0244]
add esp, 0xc
test eax, eax
jne 0x4d3d44
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
push ecx
call fcn.004d6820
mov edx, dword [esp + 0x1c]
push edx
call dword [0x4f0200]
add esp, 0x10
xor ebx, ebx
test eax, eax
mov dword [esp + 0x18], eax
jle 0x4d356b
mov ebp, dword [0x4f0244]
push ebx
lea eax, [esp + 0x140]
push str.GlobalUnit_04d
push eax
mov dword [esp + 0x34], 0
call dword [0x4f01fc]
mov edi, dword [esp + 0x28]
lea ecx, [esp + 0x148]
push ecx
push edi
call dword [0x4f021c]
add esp, 0x14
mov dword [esp + 0x10], eax
test eax, eax
je 0x4d3549
mov edx, dword [esp + 0x14]
sub eax, edi
push 0
push eax
push edx
call ebp
add esp, 0xc
test eax, eax
jne 0x4d3d44
mov edi, dword [esp + 0x14]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x3c]
push eax
push ecx
push edi
call fcn.004d6820
lea edx, [esp + 0x1c]
lea eax, [esp + 0x48]
push edx
push eax
push edi
call fcn.004d6820
add esp, 0x18
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x1dc]
push ecx
push edx
call dword [0x4f0138]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x3c]
push eax
mov edx, edi
push ecx
push edx
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x1b4]
push eax
push ecx
call dword [0x4f0138]
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
mov ecx, edi
push eax
push ecx
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
lea eax, [esp + 0x1a0]
push edx
push eax
call dword [0x4f0138]
lea ecx, [esp + 0x28]
lea edx, [esp + 0x1dc]
push ecx
push edx
mov ecx, esi
call fcn.004d0890
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x1a0]
push edx
lea edx, [esp + 0x1b8]
mov eax, dword [ecx]
push edx
push esi
call dword [eax + 4]
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x28]
mov edx, edi
push edx
mov eax, dword [ecx]
call dword [eax + 0xc]
test al, al
je 0x4d3d44
jmp 0x4d355e
push 0
lea ecx, [esi + 0x5f4b]
call fcn.004be530
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x18]
inc ebx
cmp ebx, eax
jl 0x4d33fe
mov eax, dword [esi + 0x5e28]
xor ebx, ebx
test eax, eax
mov dword [esp + 0x24], ebx
jle 0x4d3803
lea eax, [esi + 0x5e30]
mov dword [esp + 0x18], 0x50fbf4
mov dword [esp + 0x20], eax
jmp 0x4d3597
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
push edx
mov edi, dword [ecx]
lea ebp, [edi + 0x4c]
push ebp
call dword [0x4f0138]
mov eax, dword [esi + 0x5e28]
mov edx, dword [0x941ee8]
sub eax, edx
cmp ebx, eax
jl 0x4d35d1
push 1
push 0x2710
mov ecx, edi
call fcn.00498c30
jmp 0x4d37d6
push ebx
lea ecx, [esp + 0x1cc]
push str.Player_02d
push ecx
call dword [0x4f01fc]
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x1d4]
push edx
push eax
call dword [0x4f021c]
add esp, 0x14
mov dword [esp + 0x10], eax
test eax, eax
je 0x4d3d44
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
sub eax, edx
push 0
push eax
push ecx
call dword [0x4f0244]
add esp, 0xc
test eax, eax
jne 0x4d3d44
mov ebx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
push ebx
call fcn.004d6820
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x48]
push ecx
push edx
push ebx
call fcn.004d6820
add esp, 0x18
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
mov ebx, dword [0x4f0198]
push str.HUMAN
push eax
call ebx
test eax, eax
jne 0x4d3674
mov dword [edi + 0x48], 1
jmp 0x4d3694
mov ecx, dword [esp + 0x10]
push str.ROBOT
push ecx
call ebx
test eax, eax
jne 0x4d368d
mov dword [edi + 0x48], 2
jmp 0x4d3694
mov dword [edi + 0x48], 0
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push edx
push ebp
call dword [0x4f0138]
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x3c]
push eax
push ecx
push edx
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
push 1
push eax
call dword [0x4f0200]
add esp, 4
mov ecx, edi
push eax
call fcn.00498c30
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x10]
lea edx, [esp + 0x3c]
push ecx
push edx
push eax
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov ecx, dword [esp + 0x10]
push ecx
call dword [0x4f0200]
mov ebx, eax
add esp, 4
xor ebp, ebp
mov dword [edi + 0x68], ebx
test ebx, ebx
jle 0x4d37d6
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
lea eax, [esp + 0x3c]
push edx
push eax
push ecx
call fcn.004d6820
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x1c]
lea eax, [esp + 0x48]
push edx
push eax
push ecx
call fcn.004d6820
add esp, 0x18
test al, al
je 0x4d3d44
mov edx, dword [esp + 0x10]
push str.true
push edx
call dword [0x4f0198]
test eax, eax
jne 0x4d377d
push 1
jmp 0x4d37c5
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x10]
lea ecx, [esp + 0x3c]
push eax
push ecx
push edx
call fcn.004d6820
add esp, 0xc
test al, al
je 0x4d3d44
mov eax, dword [esp + 0x10]
push eax
call dword [0x4f0200]
add esp, 4
lea ecx, [esi + 0x5f4b]
push eax
call fcn.004be7d0
push eax
push ebp
mov ecx, edi
mov dword [esp + 0x30], eax
call fcn.00497b10
push 0
push ebp
mov ecx, edi
call fcn.00497d80
inc ebp
cmp ebp, ebx
jl 0x4d3732
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov ecx, dword [esi + 0x5e28]
inc eax
add edi, 4
add edx, 0x14
cmp eax, ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], edx
jl 0x4d3593
mov ecx, dword [esp + 0x1c]
push ecx
call dword [0x4f01b4]
mov edx, dword [esp + 0x18]
push edx
call dword [0x4f01e8]
add esp, 8
jmp 0x4d383d
mov eax, dword [esp + 0x718]
mov ecx, dword [esp + 0x714]
push eax
push ecx
mov ecx, esi
call fcn.004d3db0
test al, al
je 0x4d3d44
mov byte [0x941ee4], 0
mov eax, dword [esi + 0x5f33]
test eax, eax
je 0x4d385f
mov ecx, esi
call fcn.004d5df0
test al, al
je 0x4d3d44
jmp 0x4d3891
mov eax, dword [esi + 0x5e28]
mov ebx, 1
cmp eax, ebx
jle 0x4d3891
lea edi, [esi + 0x5e34]
mov ecx, dword [edi]
call fcn.004991b0
test al, al
je 0x4d3d44
mov eax, dword [esi + 0x5e28]
inc ebx
add edi, 4
cmp ebx, eax
jl 0x4d3874
mov eax, dword [esi + 0x5e28]
mov ebx, 1
cmp eax, ebx
jle 0x4d38c3
lea edi, [esi + 0x5e34]
mov ecx, dword [edi]
call fcn.004991b0
test al, al
je 0x4d3d44
mov eax, dword [esi + 0x5e28]
inc ebx
add edi, 4
cmp ebx, eax
jl 0x4d38a6
mov eax, dword [esi + 0x5e77]
lea ecx, [esp + 0x2c]
push 0
push ecx
mov edx, dword [eax]
push eax
call dword [edx + 0x14]
test eax, eax
jne 0x4d3d44
mov edx, dword [esi + 0x5f3b]
mov ecx, 0x14
lea edi, [esp + 0x150]
rep stosd dword es:[edi], eax
mov dword [esp + 0x150], 0x50
mov dword [esp + 0x154], eax
mov dword [esp + 0x158], eax
mov dword [esp + 0x15c], eax
mov dword [esp + 0x164], eax
mov dword [esp + 0x168], eax
mov dword [esp + 0x16c], eax
mov dword [esp + 0x174], eax
mov dword [esp + 0x178], eax
mov dword [esp + 0x17c], eax
mov dword [esp + 0x194], eax
mov dword [esp + 0x198], eax
mov al, byte [edx + 0x62]
lea edx, [esp + 0x150]
neg al
sbb eax, eax
push edx
and eax, 0xf
inc eax
mov dword [esp + 0x1a0], eax
mov eax, dword [esp + 0x30]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov eax, dword [esp + 0x2c]
lea edx, [esp + 0x30]
push edx
mov edx, dword [esi + 0x5e8b]
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x14]
mov eax, dword [esi + 0x5e97]
mov edx, dword [esp + 0x30]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x20]
test eax, eax
jl 0x4d3d44
mov eax, dword [esi + 0x5f3b]
mov cl, byte [eax + 0x62]
test cl, cl
jne 0x4d39c5
mov eax, dword [esi + 0x5e8b]
mov edx, dword [esp + 0x30]
push edx
push 1
mov ecx, dword [eax]
push eax
call dword [ecx + 0x64]
test eax, eax
jl 0x4d3d44
push 0x100b0
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 5
je 0x4d39f3
push str.SHADOW
mov ecx, eax
call fcn.0049e1c0
jmp 0x4d39f5
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0x8d], eax
je 0x4d3d44
mov ecx, dword [esi + 0x5e8b]
push str.B__Shadows.bmp
push ecx
push esi
mov ecx, eax
call fcn.0049e1f0
test al, al
je 0x4d3d44
push 0xa8
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 6
je 0x4d3a58
push str.BOOM
mov ecx, eax
call fcn.0047ee40
jmp 0x4d3a5a
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0x91], eax
je 0x4d3d44
mov edx, dword [esi + 0x5e8b]
push str.C_Explode.bmp
push edx
push esi
mov ecx, eax
call fcn.00471e20
test al, al
je 0x4d3d44
push 0xa8
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 7
je 0x4d3abd
push str.Effect
mov ecx, eax
call fcn.0047ee40
jmp 0x4d3abf
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0x95], eax
je 0x4d3d44
mov ecx, dword [esi + 0x5e8b]
push str.C_Effect.bmp
push ecx
push esi
mov ecx, eax
call fcn.0047ee70
test al, al
je 0x4d3d44
push 0xaf
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 8
je 0x4d3b22
push str.Smokes
mov ecx, eax
call fcn.0049f180
jmp 0x4d3b24
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0x9d], eax
je 0x4d3d44
mov edx, dword [esi + 0x5e8b]
push str.C__Smoke.bmp
push edx
push esi
mov ecx, eax
call fcn.004a01c0
test al, al
je 0x4d3d44
push 0xc8
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 9
je 0x4d3b87
push str.Trees
mov ecx, eax
call fcn.004b5750
jmp 0x4d3b89
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0x99], eax
je 0x4d3d44
mov edx, dword [esi + 0x5e8b]
lea ecx, [esi + 0x5b0f]
push ecx
push edx
push esi
mov ecx, eax
call fcn.004b5790
test al, al
je 0x4d3d44
push 0xa8
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 0xa
je 0x4d3bee
push str.Circles
mov ecx, eax
call fcn.0046efd0
jmp 0x4d3bf0
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0xa1], eax
je 0x4d3d44
mov ecx, dword [esi + 0x5e8b]
push str.C_Circle.bmp
push ecx
push esi
mov ecx, eax
call fcn.00479700
test al, al
je 0x4d3d44
push 0xf0
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 0xb
je 0x4d3c53
push str.Spheres
mov ecx, eax
call fcn.004a0680
jmp 0x4d3c55
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0xa5], eax
je 0x4d3d44
mov edx, dword [esi + 0x5e8b]
push str.C_Sphere
push edx
push esi
mov ecx, eax
call fcn.004a0f90
test al, al
je 0x4d3d44
push 0xa8
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 0xc
je 0x4d3cb8
push str.BiFaceList
mov ecx, eax
call fcn.0046efd0
jmp 0x4d3cba
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0xa9], eax
je 0x4d3d44
mov ecx, dword [esi + 0x5e8b]
push str.C_BiFace.bmp
push ecx
push esi
mov ecx, eax
call fcn.004712a0
test al, al
je 0x4d3d44
push 0xa8
call fcn.004eccce
add esp, 4
mov dword [esp + 0x18], eax
test eax, eax
mov dword [esp + 0x70c], 0xd
je 0x4d3d15
push str.Transition
mov ecx, eax
call fcn.0046efd0
jmp 0x4d3d17
xor eax, eax
test eax, eax
mov dword [esp + 0x70c], 0xffffffff
mov dword [esi + 0xad], eax
je 0x4d3d44
mov edx, dword [esi + 0x5e8b]
push str.Transition.bmp
push edx
push esi
mov ecx, eax
call fcn.004b2a30
test al, al
jne 0x4d3d93
mov eax, dword [esp + 0x1c]
mov dword [0x8210d4], 1
test eax, eax
je 0x4d3d60
push eax
call dword [0x4f01b4]
add esp, 4
mov eax, dword [esp + 0x34]
test eax, eax
je 0x4d3d6f
push eax
call dword [0x4f010c]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x4d3d81
push eax
call dword [0x4f01e8]
add esp, 4
push str.StageFile_Load__:_Error_occurs.
push esi
call fcn.004331c0
add esp, 8
xor al, al
jmp 0x4d3d95
mov al, 1
mov ecx, dword [esp + 0x704]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x700
ret 8