Function at 0x425080
Capabilities:
Terminate process

Disassembly:
push ebx
push ebp
push esi
push edi
call fcn.00425020
mov eax, dword [sym.imp.alleg40.dll_Ordinal_649]
xor ebx, ebx
mov ecx, dword [eax]
mov eax, dword [ecx + 0x20]
cmp eax, ebx
je 0x4250a3
push str.M.U.G.E.N
call eax
add esp, 4
push str.Allocating_game_variables_n
call fcn.00415ef0
mov ebp, 1
push 0xc948
push ebp
call fcn.004181c0
add esp, 0xc
cmp eax, ebx
jne 0x4250d7
push str.Cant_allocate_game_variables._n_n
call fcn.004931a0
add esp, 4
push ebp
call fcn.0049320e
push str.Reading_configuration_file...
mov dword [0x4b5b4c], eax
call fcn.00415ef0
push 0x4a49dc
call fcn.00480f00
add esp, 8
test eax, eax
jne 0x42511c
mov edx, dword [0x4b5b4c]
or ecx, 0xffffffff
mov esi, str._nError_reading_data_mugen.cfg
lea edi, [edx + 0xc534]
repne scasb al, byte es:[edi]
dec edi
mov ecx, 7
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
call fcn.00415860
push 0x4a4a0c
call fcn.00415ef0
mov eax, dword [esp + 0x344]
add esp, 4
cmp eax, ebx
je 0x425167
push str.Configuring_music_plugins._n
call fcn.00415ef0
add esp, 4
call fcn.0048a460
test eax, eax
jne 0x42514f
call fcn.00415860
call sub.alleg40.dll_Ordinal_72
push 0x4a4a2c
call fcn.00415ef0
add esp, 4
push ebx
call fcn.0049320e
cmp dword [esp + 0x2a0], ebx
je 0x4251aa
mov eax, dword [0x4b5b4c]
mov dword [eax + 0xbd68], ebp
mov ecx, dword [0x4b5b4c]
mov dword [ecx + 0xbd78], ebx
mov edx, dword [0x4b5b4c]
mov dword [edx + 0xbd70], ebx
mov eax, dword [0x4b5b4c]
mov dword [eax + 0xbd6c], ebx
mov ecx, dword [0x4b5b4c]
mov dword [ecx + 0xbd74], ebx
cmp dword [esp + 0x198], ebx
je 0x425215
mov edx, dword [0x4b5b4c]
lea edi, [esp + 0x19c]
or ecx, 0xffffffff
push 0x4a4a38
mov dword [edx + 0xbe1c], ebp
mov eax, dword [0x4b5b4c]
lea edx, [eax + 0xbe20]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [0x4b5b4c]
add ecx, 0xbe20
push ecx
call fcn.00493007
add esp, 8
cmp eax, ebx
je 0x425215
push eax
call fcn.00492f59
add esp, 4
mov edx, dword [0x4b5b4c]
mov ecx, 0x11
lea esi, [esp + 0x2ac]
lea edi, [edx + 0xc020]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x4b5b4c]
mov ecx, dword [esp + 0x2f8]
mov dword [eax + 0xc938], ecx
mov edx, dword [0x4b5b4c]
mov eax, dword [esp + 0x2fc]
mov dword [edx + 0xc944], eax
mov edx, dword [0x4b5b4c]
mov ecx, dword [esp + 0x2a4]
mov dword [edx + 0xc060], ecx
mov al, byte [esp + 0x54]
cmp al, bl
jne 0x42527a
mov eax, dword [esp + 0x344]
mov dword [eax], ebp
jmp 0x425286
mov ecx, dword [0x4b5b4c]
mov dword [ecx + 0xc51c], ebp
push str.Checking_DX_version...
call fcn.00415ef0
add esp, 4
call sub.alleg40.dll_get_dx_ver
mov esi, eax
mov edi, 0x47444942
cmp esi, 0x700
mov dword [esp + 0x344], esi
jge 0x4252dc
mov edx, dword [0x4b5b4c]
cmp dword [edx + 0xbd44], edi
je 0x4252dc
fild dword [esp + 0x344]
sub esp, 8
fmul dword [0x49f358]
fstp qword [esp]
push str.Requires_DirectX_version_7.0_or_higher._nDetected__f
call fcn.00415a70
add esp, 0xc
push esi
push str.0x_X_n
call fcn.00415ef0
push str.Initializing_timer...
call fcn.00415ef0
push 2
push 0xb4
call fcn.004829b0
push 0x4a4aa8
call fcn.00415ef0
push str.Initializing_keyboard...
call fcn.00415ef0
push str.Initializing_keyboard._n
call fcn.004931a0
call fcn.0042a870
push str.configuring...
call fcn.00415ef0
push 2
call fcn.0042b320
push ebx
push ebx
call fcn.0042b260
push ebp
mov dword [0x4a6170], ebx
call fcn.0042b2c0
push ebx
call fcn.0042b2e0
push 0x4a4af0
call fcn.00415ef0
push str.Initializing_input_engine...
call fcn.00415ef0
add esp, 0x40
xor esi, esi
mov eax, 0x49f370
mov ecx, dword [0x4b5b4c]
lea edx, [esi + ecx + 0xb4d8]
mov ecx, 0x49f420
mov ebx, dword [ecx]
mov ebp, dword [eax]
add ecx, 4
add eax, 4
cmp ecx, 0x49f44c
mov dword [edx + ebx*4], ebp
jl 0x42537a
add esi, 0x34
cmp eax, 0x49f3c8
jl 0x425368
call fcn.00429be0
test eax, eax
jne 0x4253af
push 0x4a4b14
call fcn.00415a70
add esp, 4
push 0x4a4b28
call fcn.00415ef0
push 0x4a4b2c
call fcn.00415ef0
push str.Initializing_sound...
call fcn.004931a0
mov eax, dword [esp + 0x2a8]
xor ebx, ebx
add esp, 0xc
cmp eax, ebx
je 0x425406
mov edx, dword [0x4b5b4c]
push ebx
mov dword [edx + 0xb1b8], ebx
call fcn.0044bef0
push 0x4a4b5c
call fcn.00415ef0
push str.sound_is_disabled_n
call fcn.004931a0
add esp, 0xc
mov eax, dword [0x4b5b4c]
cmp dword [eax + 0xb1b8], ebx
je 0x42550a
mov ecx, dword [eax + 0xbd60]
mov edx, dword [eax + 0xbd5c]
mov eax, dword [eax + 0xbd58]
push ecx
push edx
push eax
call fcn.0044bf30
add esp, 0xc
test eax, eax
jne 0x4254d0
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0xbd60]
mov edx, dword [eax + 0xbd58]
push ecx
push ebx
push edx
call fcn.0044bf30
add esp, 0xc
test eax, eax
jne 0x4254b7
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0xbd60]
mov edx, dword [eax + 0xbd5c]
push ecx
push edx
push ebx
call fcn.0044bf30
add esp, 0xc
test eax, eax
jne 0x42549e
mov eax, dword [0x4b5b4c]
push ebx
mov dword [eax + 0xb1b8], ebx
call fcn.0044bef0
push str.failed_to_init_sound_hardware._n
call fcn.00415ef0
push str.failed_to_init_hardware._n
jmp 0x4254e6
push 0x4a4bc0
call fcn.00415ef0
push str.no_wave_device_found._n
call fcn.004931a0
add esp, 8
jmp 0x4254ee
push 0x4a4bf0
call fcn.00415ef0
push str.no_midi_device_found._n
call fcn.004931a0
add esp, 8
jmp 0x4254ee
push 1
call fcn.0044bef0
push 0x4a4c20
call fcn.00415ef0
push 0x4a4c24
call fcn.004931a0
add esp, 0xc
push ebx
call fcn.004181f0
mov ecx, dword [0x4b5b4c]
add esp, 4
cmp dword [ecx + 0xbd6c], ebx
je 0x42550a
call fcn.0044dd90
push str.Initializing_graphics...
call fcn.00415ef0
push str.Initializing_graphics._n
call fcn.004931a0
add esp, 8
call fcn.0041c290
test eax, eax
jne 0x42552f
call fcn.00415860
mov edx, dword [0x4b5b4c]
push ebx
mov esi, dword [edx + 0xbd44]
call fcn.0041c3d0
add esp, 4
test eax, eax
jne 0x42554d
call fcn.00415860
mov eax, dword [0x4b5b4c]
push esi
mov ecx, dword [eax + 0xbd40]
mov edx, dword [eax + 0xbd3c]
mov eax, dword [eax + 0xbd38]
push ecx
push edx
push eax
push str.trying__ix_ix_i_mode_0x_X...
call fcn.00415ef0
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0xbd40]
mov edx, dword [eax + 0xbd3c]
mov eax, dword [eax + 0xbd38]
push ecx
push edx
push eax
push esi
call fcn.0041c3f0
add esp, 0x24
test eax, eax
jne 0x425655
push str.failed.
call fcn.00415ef0
mov eax, dword [0x4b5b4c]
add esp, 4
mov ecx, dword [eax + 0xbd38]
cmp ecx, 0x280
jne 0x4255dc
cmp dword [eax + 0xbd3c], 0x1e0
jne 0x4255dc
cmp dword [eax + 0xbd40], 0x10
jne 0x4255dc
call fcn.00415860
jmp 0x425662
mov edx, dword [eax + 0xbd40]
mov eax, dword [eax + 0xbd3c]
push edx
push eax
push ecx
push str.Error:_Cant_change_video_mode_to__ix_ix_ibits_n
call fcn.00415a70
push str.Trying_other_modes...
call fcn.00415ef0
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0xbd40]
mov edx, dword [eax + 0xbd3c]
mov eax, dword [eax + 0xbd38]
push ecx
push edx
push eax
push str._nError:_Cant_change_video_mode_to__ix_ix_ibits_n
call fcn.004931a0
push str.Switch_to_640x480x16bits___y_n__n_n
call fcn.004931a0
push 0x4b2550
call fcn.00493301
add esp, 0x2c
call fcn.0042b350
call fcn.0042b3f0
test ah, 1
jne 0x42563f
cmp eax, 0x15
je 0x425662
call fcn.00415860
jmp 0x425662
push str.success...
call fcn.00415ef0
add esp, 4
mov ecx, dword [0x4b5b4c]
cmp dword [ecx + 0xbd40], 0x20
jne 0x42567b
push 1
call fcn.0041c560
add esp, 4
mov edx, dword [0x4b5b4c]
cmp dword [edx + 0xbd44], edi
jne 0x425693
push 1
call fcn.0041c560
add esp, 4
mov eax, dword [0x4b5b4c]
mov eax, dword [eax + 0xbd48]
cmp eax, ebx
je 0x4256ad
push 1
push eax
call fcn.0041c5a0
add esp, 8
push 0x4a4d34
call fcn.00415ef0
mov eax, dword [0x4b5b4c]
add esp, 4
cmp dword [eax + 0xbde0], ebx
jne 0x4256df
mov eax, dword [eax + 0xbd44]
cmp eax, 0x44584143
je 0x4256df
cmp eax, 0x4458534f
je 0x4256df
push 3
jmp 0x4256e1
push 1
call dword [sym.imp.alleg40.dll_Ordinal_605]
mov ecx, dword [0x4b5b4c]
add esp, 4
push str.Setting_callbacks...
mov dword [ecx + 0xbb88], 1
call fcn.00415ef0
mov esi, dword [sym.imp.alleg40.dll_Ordinal_604]
push 0x4292a0
push 1
call esi
add esp, 0xc
cmp eax, 0xffffffff
je 0x425739
push 0x4292c0
push ebx
call esi
add esp, 8
cmp eax, 0xffffffff
jne 0x425739
push 0x4292a0
call dword [sym.imp.alleg40.dll_Ordinal_544]
add esp, 4
push 0x4a4d50
call fcn.00415ef0
push str.Initializing_game_variables...
call fcn.00415ef0
add esp, 8
call fcn.00428100
test eax, eax
jne 0x42575e
call fcn.00415860
push 0x4a4d74
call fcn.00415ef0
mov edi, dword [0x4b5b4c]
or ecx, 0xffffffff
xor eax, eax
add esp, 4
lea edx, [edi + 0x200]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [0x4b5b4c]
or ecx, 0xffffffff
lea esi, [edx + 0x200]
mov edi, esi
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp byte [ecx + edx + 0x1ff], 0x5c
jne 0x4257cf
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [ecx + edx + 0x1ff], bl
mov edx, dword [0x4b5b4c]
lea esi, [edx + 0x200]
or ecx, 0xffffffff
mov edi, esi
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp byte [ecx + edx + 0x1ff], 0x2f
je 0x4257ff
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
mov cx, word [0x4a4d78]
mov word [edi - 1], cx
push str.Loading_system_fonts...
call fcn.00415ef0
push str.font_f_4x6.fnt
call fcn.0041b900
mov edx, dword [0x4b5b4c]
add esp, 8
mov dword [edx + 0x5cd4], eax
mov eax, dword [0x4b5b4c]
cmp dword [eax + 0x5cd4], ebx
jne 0x425970
push 1
call fcn.004181f0
mov ecx, dword [0x4b5b4c]
mov edx, dword [str.f_4x6.fnt]
add ecx, 0xc534
add esp, 4
mov dword [ecx], edx
mov eax, dword [0x4a5dc4]
mov dword [ecx + 4], eax
mov dx, word [0x4a5dc8]
mov word [ecx + 8], dx
mov eax, dword [0x4b5b4c]
cmp eax, ebx
je 0x425aec
mov eax, dword [eax + 0x5cd4]
push eax
call fcn.0041c1d0
mov ecx, dword [0x4b5b4c]
mov edx, dword [ecx + 0x5cd8]
push edx
call fcn.0041c1d0
mov eax, dword [0x4b5b4c]
add eax, 0xb630
push eax
call fcn.0042a670
mov ecx, dword [0x4b5b4c]
mov edx, dword [ecx + 0x5ce4]
push edx
call fcn.00418f40
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0x5ce0]
push ecx
call fcn.00404870
mov edx, dword [0x4b5b4c]
add esp, 0x14
mov esi, dword [edx + 0x5ce8]
cmp esi, ebx
je 0x425900
mov eax, dword [esi + 0xc]
xor edi, edi
cmp eax, ebx
jle 0x4258f7
push edi
push ebx
push esi
call fcn.004090f0
push eax
call fcn.004011c0
mov eax, dword [esi + 0xc]
add esp, 0x10
inc edi
cmp edi, eax
jl 0x4258de
push esi
call fcn.00408a30
add esp, 4
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0x5cdc]
push ecx
call fcn.00404dd0
mov edx, dword [0x4b5b4c]
mov eax, dword [edx + 0x5cc4]
push eax
call fcn.00486b80
mov ecx, dword [0x4b5b4c]
add esp, 8
mov eax, dword [ecx + 0x5cc8]
cmp eax, ebx
je 0x42593f
push eax
call fcn.00486b80
add esp, 4
mov edx, dword [0x4b5b4c]
mov eax, dword [edx + 0x5ccc]
cmp eax, ebx
je 0x425958
push eax
call fcn.00486b80
add esp, 4
mov eax, dword [0x4b5b4c]
mov eax, dword [eax + 0xc530]
cmp eax, ebx
je 0x425ad7
jmp 0x425ace
push str.font_f_6x9.fnt
call fcn.0041b900
mov edx, dword [0x4b5b4c]
add esp, 4
mov dword [edx + 0x5cd8], eax
mov eax, dword [0x4b5b4c]
cmp dword [eax + 0x5cd8], ebx
jne 0x425af1
push 1
call fcn.004181f0
mov ecx, dword [0x4b5b4c]
mov edx, dword [str.f_6x9.fnt]
add ecx, 0xc534
add esp, 4
mov dword [ecx], edx
mov eax, dword [0x4a5de0]
mov dword [ecx + 4], eax
mov dx, word [0x4a5de4]
mov word [ecx + 8], dx
mov eax, dword [0x4b5b4c]
cmp eax, ebx
je 0x425aec
mov eax, dword [eax + 0x5cd4]
push eax
call fcn.0041c1d0
mov ecx, dword [0x4b5b4c]
mov edx, dword [ecx + 0x5cd8]
push edx
call fcn.0041c1d0
mov eax, dword [0x4b5b4c]
add eax, 0xb630
push eax
call fcn.0042a670
mov ecx, dword [0x4b5b4c]
mov edx, dword [ecx + 0x5ce4]
push edx
call fcn.00418f40
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0x5ce0]
push ecx
call fcn.00404870
mov edx, dword [0x4b5b4c]
add esp, 0x14
mov esi, dword [edx + 0x5ce8]
cmp esi, ebx
je 0x425a67
mov eax, dword [esi + 0xc]
xor edi, edi
cmp eax, ebx
jle 0x425a5e
push edi
push ebx
push esi
call fcn.004090f0
push eax
call fcn.004011c0
mov eax, dword [esi + 0xc]
add esp, 0x10
inc edi
cmp edi, eax
jl 0x425a45
push esi
call fcn.00408a30
add esp, 4
mov eax, dword [0x4b5b4c]
mov ecx, dword [eax + 0x5cdc]
push ecx
call fcn.00404dd0
mov edx, dword [0x4b5b4c]
mov eax, dword [edx + 0x5cc4]
push eax
call fcn.00486b80
mov ecx, dword [0x4b5b4c]
add esp, 8
mov eax, dword [ecx + 0x5cc8]
cmp eax, ebx
je 0x425aa6
push eax
call fcn.00486b80
add esp, 4
mov edx, dword [0x4b5b4c]
mov eax, dword [edx + 0x5ccc]
cmp eax, ebx
je 0x425abf
push eax
call fcn.00486b80
add esp, 4
mov eax, dword [0x4b5b4c]
mov eax, dword [eax + 0xc530]
cmp eax, ebx
je 0x425ad7
push eax
call fcn.00413140
add esp, 4
mov ecx, dword [0x4b5b4c]
push ecx
call fcn.00418f40
add esp, 4
mov dword [0x4b5b4c], ebx
call fcn.00415860
push 0x4a4d94
call fcn.00415ef0
push str.Loading_options..._n
call fcn.00415ef0
call fcn.00482090
call fcn.004820f0
push str.Options_loaded_OK_n
call fcn.00415ef0
mov eax, dword [esp + 0x2fc]
add esp, 0xc
cmp eax, ebx
jle 0x425b33
mov edx, dword [0x4b5b4c]
mov dword [edx + 0xc064], eax
mov eax, dword [esp + 0x2f4]
cmp eax, 0xfffffff7
jl 0x425b50
cmp eax, 9
jg 0x425b50
mov ecx, dword [0x4b5b4c]
mov dword [ecx + 0xc070], eax
push str.Loading_system..._n
call fcn.00415ef0
mov al, byte [esp + 0x158]
add esp, 4
cmp al, bl
je 0x425c12
mov edx, dword [0x4b5b4c]
mov eax, dword [0x4a4dd4]
add edx, 0xa4ec
lea edi, [esp + 0x154]
mov dword [edx], eax
mov cx, word [0x4a4dd8]
xor eax, eax
mov word [edx + 4], cx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 4
jb 0x425bc8
lea edi, [esp + 0x154]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push str..def
lea edx, [esp + ecx + 0x154]
push edx
call fcn.0049df90
add esp, 8
test eax, eax
je 0x425bf0
lea edi, [esp + 0x154]
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [0x4a4dec]
repne scasb al, byte es:[edi]
mov eax, dword [str._system.def]
mov ecx, dword [0x4a4de8]
dec edi
mov dword [edi], eax
mov dword [edi + 4], ecx
mov dword [edi + 8], edx
mov eax, dword [0x4b5b4c]
lea edx, [esp + 0x154]
lea ecx, [eax + 0xa2ec]
add eax, 0xa4f1
push ecx
push eax
push edx
call fcn.00418590
add esp, 0xc
call fcn.0047f8b0
test eax, eax
jne 0x425cb0
mov eax, dword [0x4b5b4c]
or ecx, 0xffffffff
mov esi, str._nError_loading_system_data:
lea edi, [eax + 0xc534]
xor eax, eax
repne scasb al, byte es:[edi]
dec edi
mov ecx, 7
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov eax, dword [0x4b5b4c]
or ecx, 0xffffffff
lea edi, [eax + 0xa4ec]
lea edx, [eax + 0xc534]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [0x4b5b4c]
or ecx, 0xffffffff
lea edi, [eax + 0xa2ec]
lea edx, [eax + 0xc534]
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00415860
mov eax, dword [0x4b5b4c]
push 0xffffffffffffffff
mov ecx, dword [eax + 0xb1c0]
push ecx
call fcn.0044e570
push str.System_loaded_OK_n
call fcn.00415ef0
add esp, 0xc
pop edi
pop esi
pop ebp
pop ebx
ret