Function at 0x490070
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x540750
push eax
mov dword fs:[0], esp
sub esp, 0x354
push esi
push str.Nov_19_2023_13:36:18
push str._RELEASE_
push str.1.10.0
push 0x55ab94
push str._s___v_s____s____s_n_n
call fcn.00453cd0
call fcn.004c3c50
push str.Unknown_Error
push 0x5898e0
mov byte [0x5cf403], 2
mov dword [0x5cf241], 0x786f54
call fcn.0043fb40
push 1
mov byte [0x5cf9bc], 0
call fcn.00490c50
mov esi, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 0x20
push 0x5cf9bc
call esi
test eax, eax
jne 0x49019e
call fcn.004c15b0
test eax, eax
je 0x490126
mov cl, byte [eax]
add eax, 3
push eax
push 0x561c1c
push 0x10e
push 0x5cf9bc
mov byte [0x5cf9bb], cl
call fcn.0044b880
add esp, 0x10
jmp 0x49019e
push edi
push str.You_will_be_asked_to_pick_a_Populous_directory._All_assets__objects__textures__etc.__are_loaded_from_within_that_directory._Multiverse_GameData_folders_are_valid_Populous_directories_
call fcn.004ae230
lea eax, [ebp - 0x360]
xor edi, edi
push 0x10e
push eax
call fcn.00513b76
test eax, eax
lea ecx, [ebp - 0x360]
lea eax, [ebp - 0x150]
cmove ecx, edi
push ecx
push eax
push str.Open_Populous_Directory
call fcn.00476b60
add esp, 0x18
pop edi
test al, al
je 0x49019e
xor ecx, ecx
nop dword [eax + eax]
mov al, byte [ebp + ecx - 0x14d]
lea ecx, [ecx + 1]
mov byte [ecx + 0x5cf9bb], al
test al, al
jne 0x490170
mov al, byte [ebp - 0x150]
mov byte [0x5cf9bb], al
lea eax, [ebp - 0x150]
push eax
call fcn.004c1ee0
add esp, 4
push str.ddraw.dll
call fcn.004bf040
add esp, 4
test al, al
je 0x4901bc
push str.Cannot_run_application_from_current_directory__The_file_ddraw.dll_is_blocking_execution.
call fcn.004ae270
add esp, 4
movzx eax, byte [0x5cf9bb]
push eax
push str.Drive_Letter:__c_n
call fcn.00453cd0
push 0x5cf9bc
push str.Populous_Path:__s_n
call fcn.00453cd0
add esp, 0x10
push 0x5cf9bc
call esi
test eax, eax
jne 0x4901f8
push str.Populous_directory_not_set_
call fcn.004ae270
add esp, 4
mov al, byte [0x5cf498]
test al, al
je 0x49020d
movzx eax, al
push eax
call fcn.004ae6c0
add esp, 4
call fcn.004c18a0
call fcn.004c0b10
or dword [0x5cf41c], 4
or dword [0x5c958d], 0x80000000
call fcn.00457eb0
call fcn.004580e0
push str.MV_EDITOR_MUTEX
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [0xc27a08], eax
test eax, eax
je 0x490266
call fcn.004bf290
test eax, eax
jne 0x490287
push eax
push 0x55ab94
push str.DirectX_6.0__or_later__missing_.
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push str.Exiting_early.._n
call fcn.00453cd0
add esp, 4
mov eax, 1
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
call fcn.004580d0
test eax, eax
jne 0x49029d
push eax
push 0x55ab94
push str.Oh_boy__no_D3D_device_found_
jmp 0x49025e
push str.Setting_up_game_n
call fcn.00453cd0
add esp, 4
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
call fcn.00495380
call fcn.00495be0
push str.datapoint0_0.dat
call fcn.004c06a0
mov eax, dword [0x5c3b00]
push 0
mov dword [0x5c3b08], eax
call fcn.004969a0
push 0
call fcn.00496ce0
call fcn.00496040
call fcn.00496800
call fcn.004b0c50
call fcn.004b0e00
call fcn.004b1100
push 0x258
push 0x320
call fcn.004b0ae0
mov byte [0x5cf495], al
call fcn.004b30b0
push 2
call fcn.00490c50
push dword [0x5cea21]
call fcn.0049c160
mov eax, dword [0x5cf410]
shr eax, 0xf
not eax
and eax, 1
push eax
call fcn.0049c380
mov al, byte [0x5cf403]
mov byte [0x6b9a92], al
mov byte [0x6b9a91], al
call fcn.004965d0
call fcn.00496720
call fcn.00496570
call fcn.004bd3e0
call fcn.004bd3b0
call fcn.00495460
call fcn.004bb6d0
call fcn.00499ea0
call fcn.004c04d0
call fcn.00495530
call fcn.0049df30
call fcn.004c0eb0
call fcn.00450600
call fcn.004ad4b0
call fcn.00495360
call fcn.00495340
call fcn.00494f10
call fcn.004949a0
call fcn.00494d10
call fcn.00494d30
call fcn.004950e0
call fcn.004af1f0
movsx eax, word [0x5cf478]
push eax
movsx eax, word [0x5cf476]
push eax
call fcn.004b0ae0
mov byte [0x5cf495], al
call fcn.004b30b0
call fcn.00496940
call fcn.00496500
call fcn.00496740
call fcn.004b30b0
call fcn.00496860
call fcn.0048dc30
call fcn.004af410
movsx eax, byte [0x5cf497]
imul eax, eax, 0xd26
add eax, 0x5cff0a
push eax
movzx eax, word [0x5cf468]
push eax
call fcn.00445030
push 0
push 1
push 2
push 2
call fcn.00499de0
or dword [0x5cfe7c], 1
add esp, 0x40
or dword [0x5ce55e], 0x100
or dword [0x5cf414], 0x80000
call fcn.004b5700
push str.Done_setting_up_the_game_n
call fcn.00453cd0
push str.Loading_previous_level_n
call fcn.00453cd0
lea eax, [ebp - 0x40]
push str.PrevLevel
push eax
call fcn.004c3cb0
lea eax, [ebp - 0x28]
mov dword [ebp - 4], 0
push str.PrevPath
push eax
call fcn.004c3cb0
lea eax, [ebp - 0x40]
mov byte [ebp - 4], 1
push 0x560700
push eax
call fcn.0048f850
add esp, 0x20
test al, al
je 0x490526
lea eax, [ebp - 0x28]
push 0x560700
push eax
call fcn.0048f850
add esp, 8
test al, al
je 0x490526
cmp dword [ebp - 0x2c], 0x10
lea eax, [ebp - 0x40]
cmovae eax, dword [ebp - 0x40]
push eax
push 0x104
push 0x589774
call fcn.0044b880
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push 0x104
push 0x589794
call fcn.0044b880
push 0x561d5c
push 0x589774
push 0x589794
push str._s_s._s
lea eax, [ebp - 0x250]
push 0x100
push eax
call fcn.0044b880
lea eax, [ebp - 0x250]
push eax
call fcn.004779e0
push 0x560700
push 0x589794
call fcn.0043fb40
add esp, 0x3c
push str.OK__Loop_start__n
mov byte [0x5cfbfe], 0xf0
call fcn.00453cd0
add esp, 4
cmp byte [0x5cf499], 0
jne 0x4906b2
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
nop dword [eax]
call fcn.004057b0
test eax, eax
jne 0x4906b2
call esi
mov dword [ebp - 0x10], eax
call fcn.004bff30
mov ecx, eax
mov eax, 0x3e8
cdq
idiv ecx
mov ecx, dword [ebp - 0x10]
xor edx, edx
add ecx, eax
mov eax, 0x3e8
mov dword [0xc27e20], ecx
movzx ecx, byte [0x5cfbfe]
div ecx
mov ecx, dword [ebp - 0x10]
add ecx, eax
mov dword [0xc27e24], ecx
mov ecx, dword [0xad0ce8]
call fcn.004528c0
call fcn.004adc10
mov eax, dword [0xad0ce8]
cmp dword [eax + 0xc0], 0
je 0x4905bf
push 0
call fcn.004adf20
add esp, 4
call fcn.004613e0
test eax, eax
je 0x4905d3
mov ecx, dword [0xad0ce8]
mov eax, dword [ecx]
call dword [eax + 0x14]
call fcn.004bf390
call fcn.0044bf30
mov ecx, dword [0x5cfe84]
mov al, byte [0x5cfe84]
and al, 1
inc dword [0x5c9796]
mov byte [0x5c979b], al
mov eax, ecx
shr eax, 1
and al, 1
mov byte [0x5c979c], al
mov eax, 0xaaaaaaab
mul ecx
mov eax, ecx
shr eax, 2
shr edx, 1
and al, 1
and dl, 1
mov byte [0x5c979e], al
mov byte [0x5c979d], dl
mov eax, 0xcccccccd
mul ecx
mov eax, 0xaaaaaaab
shr edx, 2
and dl, 1
mov byte [0x5c979f], dl
mul ecx
mov eax, 0x24924925
shr edx, 2
and dl, 1
mov byte [0x5c97a0], dl
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 2
and cl, 1
mov byte [0x5c97a1], cl
call fcn.004adf90
call fcn.004a8b50
movzx eax, byte [0x5c3b10]
sub eax, 2
jne 0x490678
call fcn.00490a10
call fcn.004bf470
call fcn.004ae0e0
call fcn.004613e0
test eax, eax
je 0x490695
push 0
call fcn.00461640
add esp, 4
call esi
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
cmp eax, dword [0xc27e24]
jl 0x490695
cmp byte [0x5cf499], 0
je 0x490550
push 0
push 0
push 0
mov byte [0x5cfbda], 0
call fcn.00460520
movzx eax, byte [0xc27691]
or dword [0x5cf418], 4
push eax
push str.DrawGrid
call fcn.004c3ce0
movzx eax, byte [0xc27692]
push eax
push str.Wireframe
call fcn.004c3ce0
movzx eax, byte [0xc27694]
push eax
push str.ShowAccessZones
call fcn.004c3ce0
movzx eax, byte [0xc27695]
push eax
push str.ShowMarkers
call fcn.004c3ce0
movzx eax, byte [0xc27693]
push eax
push str.D3DSky
call fcn.004c3ce0
movzx eax, byte [0xc27696]
push eax
push str.ShowObjects
call fcn.004c3ce0
movzx eax, byte [0xc27697]
push eax
push str.ShowSprites
call fcn.004c3ce0
movzx eax, byte [0xc27698]
add esp, 0x44
push eax
push str.ShowFramerate
call fcn.004c3ce0
movzx eax, byte [0xc27699]
push eax
push str.ShowHotkeys
call fcn.004c3ce0
movzx eax, byte [0xc2769a]
push eax
push str.ShowMapFlags
call fcn.004c3ce0
movzx eax, byte [0xc2769b]
push eax
push str.ShowBoundingBox
call fcn.004c3ce0
movzx eax, byte [0xc2769e]
push eax
push str.ZoomedOutView
call fcn.004c3ce0
movzx eax, byte [0xc2769f]
push eax
push str.ShowCoords
call fcn.004c3ce0
push dword [0x58b0a8]
push str.BrushLandSize
call fcn.004c3ce0
push dword [0x58b0ac]
push str.BrushLandSpeed
call fcn.004c3ce0
add esp, 0x40
push dword [0x58b0bc]
push str.BrushPaintSize
call fcn.004c3ce0
push 0
call fcn.0044d430
add esp, 0xc
call fcn.0049c320
call fcn.0049c350
call fcn.004af070
call fcn.00496db0
call fcn.004ada80
call fcn.004adaa0
call dword [sym.imp.ole32.dll_CoUninitialize]
call fcn.004b5100
cmp dword [0xc27e18], 0
je 0x49083b
push 0
push str.Multiverse_World_Editor
push 0xc27c18
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push dword [0xc27a08]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edx, dword [ebp - 0x14]
cmp edx, 0x10
jb 0x490877
mov ecx, dword [ebp - 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x49086d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4908d1
push edx
push ecx
call fcn.004e373b
add esp, 8
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
cmp edx, 0x10
jb 0x490273
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4908b3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4908d6
push edx
push ecx
call fcn.004e373b
mov ecx, dword [ebp - 0xc]
add esp, 8
mov eax, 1
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
ret
call fcn.0050f0ca
call fcn.0050f0ca
int3