Function at 0x407060
Capabilities:
Check for time delay via gettickcount
Create thread
Terminate thread

Disassembly:
sub esp, 0x608
mov ecx, 0x20
xor eax, eax
push esi
push edi
mov edi, 0x44a0c0
xor esi, esi
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x614]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x44ca50], eax
call edi
and al, 0xf0
xor ecx, ecx
cmp ecx, eax
sbb edx, edx
neg edx
test dl, 7
je 0x4070b0
call fcn.0042fb3f
inc esi
call edi
shr eax, 4
cmp esi, eax
sbb eax, eax
neg eax
test al, 7
jne 0x40709b
push 4
call fcn.0042fb31
add esp, 4
test eax, eax
je 0x4070cc
push str.initlog.txt
mov ecx, eax
call fcn.00408f80
jmp 0x4070ce
xor eax, eax
push str.AirXonix
mov ecx, eax
mov dword [0x447e34], eax
call fcn.00408fb0
mov ecx, dword [0x447e34]
push 0x43db64
call fcn.00408fb0
mov ecx, dword [0x447e34]
push str.Version_1.35___5_Dec_2000_
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str._ENGINE_INITIALISATION_PROTOCOL_
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
push 0
call fcn.0042fa55
lea ecx, [esp + 0x24]
mov dword [esp + 0x24], eax
push ecx
call fcn.0042f8f5
push eax
call fcn.0042f81f
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0xb4]
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]
lea edi, [esp + 0xb4]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [esp + ecx + 0xb3], al
lea ecx, [esp + 0xb4]
push ecx
mov ecx, dword [0x447e34]
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.0040b480
mov ecx, dword [0x447e34]
push str.___________________________
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Init_D3DX___
call fcn.00408fb0
call fcn.00423685
mov esi, eax
test esi, esi
je 0x407231
mov ecx, dword [0x447e34]
push str.FAIL_code
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov dword [0x44c1ec], 0x43dac4
jmp 0x408632
mov ecx, dword [0x447e34]
push 0x43dac0
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.00405d90
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x44a25c]
test eax, eax
jne 0x40727f
mov dword [0x44c1ec], str.No_useful_D3DX_device_found
jmp 0x408632
mov edi, 1
mov dword [0x44a24c], edi
call fcn.00406630
mov eax, dword [0x44c2e4]
mov esi, dword [sym.imp.USER32.dll_DialogBoxParamA]
test eax, eax
je 0x4072a6
mov dword [0x44a248], edi
jmp 0x4072c6
mov eax, dword [0x44a248]
test eax, eax
je 0x4072c6
mov edx, dword [0x44ca50]
push 0
push 0x406660
push 0
push str.WARNING
push edx
call esi
call fcn.00406610
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str._START_DIALOG_
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x44a130]
push 0
test eax, eax
push 0x406da0
push 0
je 0x407316
mov eax, dword [0x44ca50]
push str.DIALOG2
push eax
call esi
test eax, eax
je 0x407342
jmp 0x407328
mov ecx, dword [0x44ca50]
push str.DIALOG1
push ecx
call esi
test eax, eax
je 0x407342
call fcn.00406610
mov eax, dword [0x5b11d8]
test eax, eax
je 0x407357
mov dword [0x5b11d8], 0
jmp 0x4072cb
mov ecx, dword [0x447e34]
call fcn.00409000
push str._EXIT_ON_CANCEL_
jmp 0x408458
mov ecx, dword [0x447e34]
push str.Selected_parametrs:
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
mov esi, dword [0x44a260]
push str.Device_number_
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
lea eax, [esi + esi*4]
mov ecx, dword [0x447e34]
push str.Device_index_
lea edx, [eax + eax*4]
lea esi, [esi + edx*8]
shl esi, 2
mov eax, dword [esi + 0x44a264]
mov dword [0x44a140], eax
call fcn.00408fb0
mov ecx, dword [0x44a140]
push ecx
mov ecx, dword [0x447e34]
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov edx, dword [esi + 0x44a374]
push str.xRes_
shl edx, 4
lea eax, [edx + esi]
mov ecx, dword [eax + 0x44a37c]
mov edx, dword [eax + 0x44a380]
mov dword [0x44c1e8], ecx
mov ecx, dword [0x447e34]
mov dword [0x44c2dc], edx
call fcn.00408fb0
mov eax, dword [0x44c1e8]
mov ecx, dword [0x447e34]
push eax
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.yRes_
call fcn.00408fb0
mov ecx, dword [0x44c2dc]
push ecx
mov ecx, dword [0x447e34]
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov edx, dword [esi + 0x44a578]
mov ecx, dword [0x447e34]
push str.bMipmap_
mov dword [0x43d074], edx
call fcn.00408fb0
mov eax, dword [0x43d074]
mov ecx, dword [0x447e34]
push eax
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [esi + 0x44a57c]
push str.bWait_
mov dword [0x44c7b0], ecx
mov ecx, dword [0x447e34]
call fcn.00408fb0
mov edx, dword [0x44c7b0]
mov ecx, dword [0x447e34]
push edx
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [esi + 0x44a580]
push str.bHQ_
mov dword [0x43d070], eax
mov ecx, dword [0x447e34]
call fcn.00408fb0
mov ecx, dword [0x43d070]
push ecx
mov ecx, dword [0x447e34]
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov edx, dword [esi + 0x44a584]
mov ecx, dword [0x447e34]
push str.bHTxrRes_
mov dword [0x43d078], edx
call fcn.00408fb0
mov eax, dword [0x43d078]
mov ecx, dword [0x447e34]
push eax
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [esi + 0x44a268]
push str.bHardware_
mov dword [0x447e30], ecx
mov ecx, dword [0x447e34]
call fcn.00408fb0
mov edx, dword [0x447e30]
mov ecx, dword [0x447e34]
push edx
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x44a254]
mov ecx, dword [0x447e34]
push str.bSound_
mov dword [0x44c1e0], eax
call fcn.00408fb0
mov ecx, dword [0x44c1e0]
push ecx
mov ecx, dword [0x447e34]
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Creating_main_window___
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409030
call fcn.00409210
test eax, eax
jne 0x407602
mov dword [0x44c1ec], str.Main_window_creating_error
jmp 0x407653
mov ecx, dword [0x447e34]
push 0x43dac0
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Init_StaticMemorySystem___
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409030
push 0x400000
call fcn.00408ec0
add esp, 4
test eax, eax
jne 0x407673
mov dword [0x44c1ec], str.Static_memory_initialisation_error
mov ecx, dword [0x447e34]
push str.FAIL
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
jmp 0x408632
mov ecx, dword [0x447e34]
push 0x43dac0
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Prepare_wave_resources
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.004098c0
mov ecx, dword [0x447e34]
push str.Prepare_bmp_resources
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.004099e0
mov ecx, dword [0x447e34]
push str.Prepare_arif.mas.
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.0040bb80
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str._CREATING_D3DX_CONTEXT_
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x447e30]
test eax, eax
je 0x407a69
mov ecx, dword [0x447e34]
push str.Hardware_Mode
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Creating_context_16_bpp__16_bz__1_back_buff__
call fcn.00408fb0
mov edx, dword [0x44c2dc]
mov eax, dword [0x44c1e8]
push 0x44c2e0
push 0xffffffffffffffff
push edx
mov ecx, dword [0x44a140]
push eax
mov eax, dword [0x44ca54]
push edi
push 0
push 0x10
push 0
push 0x10
push eax
push eax
push edi
push ecx
call fcn.00423d8c
mov esi, eax
test esi, esi
je 0x40798f
mov ecx, dword [0x447e34]
push str.ERROR
call fcn.00408fb0
mov ecx, dword [0x447e34]
push str.__CODE
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
cmp esi, 0x8876024e
mov edi, 0x280
jg 0x40780c
je 0x407892
cmp esi, 0x8007000e
je 0x407892
cmp esi, 0x88760154
je 0x407828
cmp esi, 0x8876017c
je 0x407892
jmp 0x40793a
cmp esi, 0xc8770bb8
je 0x407892
cmp esi, 0xc8770bbf
je 0x407828
cmp esi, 0xc8770bc2
jne 0x40793a
mov ecx, dword [0x447e34]
push str.Z_buffer_error
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Trying_init_with_default_z_buffer__
call fcn.00408fb0
mov edx, dword [0x44c2dc]
mov eax, dword [0x44c1e8]
push 0x44c2e0
push 0xffffffffffffffff
push edx
mov ecx, dword [0x44a140]
push eax
mov eax, dword [0x44ca54]
push 1
push 0
push 0xffffffffffffffff
push 0
push 0x10
push eax
push eax
push 1
push ecx
call fcn.00423d8c
mov esi, eax
test esi, esi
je 0x40798f
jmp 0x407903
mov ecx, dword [0x447e34]
push str.Mode_or_memory_error
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Trying_init_in_default_resolution__
call fcn.00408fb0
mov eax, dword [0x44ca54]
push 0x44c2e0
push 0xffffffffffffffff
push 0x1e0
mov edx, dword [0x44a140]
push edi
push 1
push 0
push 0x10
push 0
push 0x10
push eax
push eax
push 1
push edx
call fcn.00423d8c
mov esi, eax
mov dword [0x44c1e8], edi
test esi, esi
mov dword [0x44c2dc], 0x1e0
je 0x40798f
mov ecx, dword [0x447e34]
push str.ERROR
call fcn.00408fb0
mov ecx, dword [0x447e34]
push str.__CODE
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Trying_init_in_if_fully_default_mode__
call fcn.00408fb0
mov eax, dword [0x44ca54]
push 0x44c2e0
push 0xffffffffffffffff
push 0x1e0
push edi
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xffffffffffffffff
push eax
push eax
mov eax, dword [0x44a140]
push 1
push eax
call fcn.00423d8c
mov esi, eax
mov dword [0x44c1e8], edi
test esi, esi
mov dword [0x44c2dc], 0x1e0
jne 0x4085f1
mov ecx, dword [0x447e34]
push 0x43d7fc
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Getting_Interfaces
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x44c2e0]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov dword [0x44c774], eax
mov eax, dword [0x44c2e0]
push eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov dword [0x44c778], eax
mov eax, dword [0x44c2e0]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov dword [0x44c77c], eax
mov eax, dword [0x44c2e0]
push 0
push eax
mov edx, dword [eax]
call dword [edx + 0x20]
mov ecx, dword [0x44c774]
mov dword [0x44c780], eax
test ecx, ecx
jne 0x407a20
mov dword [0x44c1ec], str.Creating_DD_Interface_error
jmp 0x408632
mov ecx, dword [0x44c778]
test ecx, ecx
jne 0x407a39
mov dword [0x44c1ec], str.Creating_D3D_Interface_error
jmp 0x408632
mov ecx, dword [0x44c77c]
test ecx, ecx
jne 0x407a52
mov dword [0x44c1ec], str.Creating_D3DDevice_Interface_error
jmp 0x408632
test eax, eax
jne 0x407dfe
mov dword [0x44c1ec], str.Creating_BackBuffer_error
jmp 0x408632
mov ecx, dword [0x447e34]
push str.Software_Mode
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Creating_context_16_bpp__1_back_buff__
call fcn.00408fb0
mov eax, dword [0x44c2dc]
mov ecx, dword [0x44c1e8]
push 0x44c2e0
push 0xffffffffffffffff
push eax
mov eax, dword [0x44ca54]
mov edx, dword [0x44a140]
push ecx
push edi
push 0
push 0
push 0
push 0x10
push eax
push eax
push edi
push edx
call fcn.00423d8c
mov esi, eax
test esi, esi
je 0x407b60
mov ecx, dword [0x447e34]
push str.ERROR
call fcn.00408fb0
mov ecx, dword [0x447e34]
push str.__CODE
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Trying_init_in_default_mode__
call fcn.00408fb0
mov eax, dword [0x44ca54]
push 0x44c2e0
push 0xffffffffffffffff
mov edi, 0x280
push 0x1e0
push edi
push 0xffffffffffffffff
push 0
push 0
push 0xffffffffffffffff
push 0x10
push eax
push eax
mov eax, dword [0x44a140]
push 1
push eax
call fcn.00423d8c
mov esi, eax
mov dword [0x44c1e8], edi
test esi, esi
mov dword [0x44c2dc], 0x1e0
jne 0x4085f1
mov ecx, dword [0x447e34]
push 0x43d7fc
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Getting_Interfaces
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x44c2e0]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov dword [0x44c774], eax
mov eax, dword [0x44c2e0]
push eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov dword [0x44c778], eax
mov eax, dword [0x44c2e0]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov dword [0x44c77c], eax
mov eax, dword [0x44c2e0]
push 0
push eax
mov edx, dword [eax]
call dword [edx + 0x20]
mov ecx, dword [0x44c774]
mov dword [0x44c780], eax
test ecx, ecx
jne 0x407bf1
mov dword [0x44c1ec], str.Creating_DD_Interface_error
jmp 0x408632
mov ecx, dword [0x44c778]
test ecx, ecx
jne 0x407c0a
mov dword [0x44c1ec], str.Creating_D3D_Interface_error
jmp 0x408632
mov ecx, dword [0x44c77c]
test ecx, ecx
jne 0x407c23
mov dword [0x44c1ec], str.Creating_D3DDevice_Interface_error
jmp 0x408632
test eax, eax
jne 0x407c36
mov dword [0x44c1ec], str.Creating_BackBuffer_error
jmp 0x408632
mov ecx, 0x1f
xor eax, eax
lea edi, [esp + 0x38]
push str.Creating_DEVICE_surface__
rep stosd dword es:[edi], eax
mov ecx, dword [0x44c2dc]
mov eax, dword [0x44c1e8]
mov dword [esp + 0x44], ecx
mov ecx, dword [0x447e34]
mov dword [esp + 0x3c], 0x7c
mov dword [esp + 0x40], 7
mov dword [esp + 0xa4], 0x2840
mov dword [esp + 0x48], eax
call fcn.00408fb0
mov eax, dword [0x44c774]
push 0
lea ecx, [esp + 0x3c]
push 0x44c784
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0x18]
mov esi, eax
test esi, esi
jne 0x4085b4
mov ecx, dword [0x447e34]
push 0x43d7fc
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov edx, dword [0x44c1e8]
mov ecx, 0x1f
xor eax, eax
lea edi, [esp + 0x38]
rep stosd dword es:[edi], eax
mov eax, dword [0x44c2dc]
mov ecx, dword [0x447e34]
push str.Creating_Z_buffer__
mov dword [esp + 0x3c], 0x7c
mov dword [esp + 0x40], 0x1007
mov dword [esp + 0xa4], 0x20800
mov dword [esp + 0x48], edx
mov dword [esp + 0x44], eax
mov dword [esp + 0x84], 0x20
mov dword [esp + 0x88], 0x400
mov dword [esp + 0x90], 0x10
mov dword [esp + 0x98], 0xffff
call fcn.00408fb0
mov eax, dword [0x44c774]
push esi
lea edx, [esp + 0x3c]
push 0x44c788
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x18]
mov esi, eax
test esi, esi
jne 0x408577
mov ecx, dword [0x447e34]
push 0x43d7fc
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Attaching_Z_buffer__
call fcn.00408fb0
mov eax, dword [0x44c784]
mov edx, dword [0x44c788]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
mov esi, eax
test esi, esi
jne 0x408541
mov ecx, dword [0x447e34]
push 0x43d7fc
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Setting_render_target__
call fcn.00408fb0
mov eax, dword [0x44c77c]
mov edx, dword [0x44c784]
push esi
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x20]
mov esi, eax
test esi, esi
jne 0x40850b
mov ecx, dword [0x447e34]
push 0x43d7fc
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x44c774]
lea edx, [esp + 0x1e0]
push 0
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x6c]
test eax, eax
jne 0x407f8e
mov ecx, dword [0x447e34]
push str.Selected_Device_Info:
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Driver_
call fcn.00408fb0
mov ecx, dword [0x447e34]
lea eax, [esp + 0x1e0]
push eax
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Description_
call fcn.00408fb0
lea ecx, [esp + 0x3e0]
push ecx
mov ecx, dword [0x447e34]
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.VendorID_
call fcn.00408fb0
mov ecx, dword [0x447e34]
mov edx, dword [esp + 0x5e8]
push edx
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.DeviceID_
call fcn.00408fb0
mov ecx, dword [0x447e34]
mov eax, dword [esp + 0x5ec]
push eax
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.SubSysID_
call fcn.00408fb0
mov ecx, dword [esp + 0x5f0]
push ecx
mov ecx, dword [0x447e34]
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Revision_
call fcn.00408fb0
mov ecx, dword [0x447e34]
mov edx, dword [esp + 0x5f4]
push edx
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.WHQLLevel_
call fcn.00408fb0
mov ecx, dword [0x447e34]
mov eax, dword [esp + 0x608]
push eax
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
xor ecx, ecx
mov eax, dword [0x44c774]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x24], ecx
mov edx, dword [eax]
lea ecx, [esp + 0xc]
push ecx
lea ecx, [esp + 0xc]
push ecx
lea ecx, [esp + 0x2c]
push ecx
push eax
call dword [edx + 0x5c]
test eax, eax
jne 0x40803e
mov ecx, dword [0x447e34]
push str.Video_Memory_:
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Total_
call fcn.00408fb0
mov ecx, dword [0x447e34]
mov edx, dword [esp + 8]
push edx
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Free_
call fcn.00408fb0
mov ecx, dword [0x447e34]
mov eax, dword [esp + 0xc]
push eax
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x44c774]
lea edx, [esp + 0xc]
push edx
lea edx, [esp + 0xc]
push edx
lea edx, [esp + 0x2c]
mov dword [esp + 0x2c], 0x1000
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x5c]
test eax, eax
jne 0x4080d5
mov ecx, dword [0x447e34]
push str.Video_Memory_for_textures:
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Total_
call fcn.00408fb0
mov ecx, dword [0x447e34]
mov eax, dword [esp + 8]
push eax
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Free_
call fcn.00408fb0
mov ecx, dword [esp + 0xc]
push ecx
mov ecx, dword [0x447e34]
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Get_D3DCAPS
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x44c77c]
xor edi, edi
lea ecx, [esp + 0xf4]
mov dword [0x44c1e4], edi
mov edx, dword [eax]
push ecx
push eax
call dword [edx + 0xc]
test eax, eax
jne 0x40815e
test byte [esp + 0x140], 2
je 0x40815e
test byte [esp + 0x144], 2
je 0x40815e
mov ecx, dword [0x447e34]
push str.Blending_supported
mov dword [0x44c1e4], 1
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
call fcn.00409000
cmp dword [0x43d070], edi
jne 0x408177
mov dword [0x44c1e4], edi
mov eax, dword [0x447e30]
xor edx, edx
mov dword [esp + 0x10], edx
cmp eax, edi
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], 0x10
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], edi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], 0x1c4
mov dword [esp + 0x1c], 0x400
jne 0x4081b6
mov dword [esp + 0x14], 0x800
mov ecx, dword [0x447e34]
push str.Creating_Vertex_Buffer__
call fcn.00408fb0
mov eax, dword [0x44c778]
push edi
lea edx, [esp + 0x14]
push 0x44c7ac
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x14]
mov esi, eax
cmp esi, edi
jne 0x4084cf
mov ecx, dword [0x447e34]
push 0x43d7fc
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Setting_Render_States
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.00405760
mov ecx, dword [0x447e34]
push str.Creating_Texture_Surfaces__
call fcn.00408fb0
call fcn.00405340
test eax, eax
je 0x4084a5
mov ecx, dword [0x447e34]
push 0x43d7fc
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Creating_Buf.Texture_Surfaces__
call fcn.00408fb0
call fcn.00405430
test eax, eax
je 0x40847b
mov ecx, dword [0x447e34]
push 0x43d7fc
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
cmp dword [0x44c1e0], edi
je 0x4082c4
call fcn.00409b80
call fcn.0040a050
lea eax, [esp + 0x34]
push eax
push edi
push edi
push 0x40a7c0
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateThread]
mov esi, eax
push 2
push esi
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
jmp 0x4082c8
mov esi, dword [esp + 0x34]
call fcn.004058e0
mov eax, dword [0x44a258]
mov dword [0x447c28], edi
test al, 0x10
je 0x4082e6
mov dword [0x447c28], 1
mov ecx, dword [0x447e34]
and eax, 0xf
mov dword [0x447c24], eax
call fcn.00409000
mov ecx, dword [0x447e34]
push str._START_GAME_
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.00422650
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str._EXIT_GAME_
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
mov dword [0x43dc7c], edi
call fcn.00409000
mov ecx, dword [0x447e34]
push str._SHUTDOUN_
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Release_txr_surfaces
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.00405530
call fcn.00405500
mov ecx, dword [0x447e34]
push str.Release_DD_objects
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.00406fc0
cmp dword [0x44c1e0], edi
je 0x4083eb
mov ecx, dword [0x447e34]
push str.Release_DirectSound_objects
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
push 0x12c
call dword [sym.imp.KERNEL32.dll_Sleep]
push edi
push esi
call dword [sym.imp.KERNEL32.dll_TerminateThread]
call fcn.00409b20
mov ecx, dword [0x447e34]
push str.D3DX_Uninitialize
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.0042375e
mov ecx, dword [0x447e34]
push str.Release_resources
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.00409a90
mov ecx, dword [0x447e34]
push str.DestroyWindow
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x44ca54]
push ecx
call dword [sym.imp.USER32.dll_DestroyWindow]
push str._EXIT_
mov ecx, dword [0x447e34]
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
pop edi
xor eax, eax
pop esi
add esp, 0x608
ret 0x10
mov ecx, dword [0x447e34]
push str.ERROR
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov dword [0x44c1ec], 0x43d468
jmp 0x408632
mov ecx, dword [0x447e34]
push str.ERROR
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov dword [0x44c1ec], 0x43d448
jmp 0x408632
mov ecx, dword [0x447e34]
push str.ERROR__CODE
mov dword [0x44c7ac], edi
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov dword [0x44c1ec], 0x43d418
jmp 0x408632
mov ecx, dword [0x447e34]
push str.ERROR__CODE
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov dword [0x44c1ec], 0x43d3fc
jmp 0x408632
mov ecx, dword [0x447e34]
push str.ERROR__CODE
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov dword [0x44c1ec], 0x43d3e0
jmp 0x408632
mov ecx, dword [0x447e34]
push str.ERROR__CODE
mov dword [0x44c788], 0
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov dword [0x44c1ec], 0x43d3c8
jmp 0x408632
mov ecx, dword [0x447e34]
push str.ERROR__CODE
mov dword [0x44c784], 0
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov dword [0x44c1ec], 0x43d3a8
jmp 0x408632
mov ecx, dword [0x447e34]
push str.ERROR
call fcn.00408fb0
mov ecx, dword [0x447e34]
push str.__CODE
call fcn.00408fb0
mov ecx, dword [0x447e34]
push esi
call fcn.00409060
mov ecx, dword [0x447e34]
call fcn.00409000
mov dword [0x44c1ec], 0x43d38c
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.____EXIT_ON_FATAL_ERROR_:
call fcn.00408fb0
mov edx, dword [0x44c1ec]
mov ecx, dword [0x447e34]
push edx
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov ecx, dword [0x447e34]
push str.Release_txr_surfaces
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.00405530
call fcn.00405500
mov ecx, dword [0x447e34]
push str.Release_DD_objects
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.00406fc0
mov ecx, dword [0x447e34]
push str.D3DX_Uninitialize
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.0042375e
mov ecx, dword [0x447e34]
push str.Release_resources
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
call fcn.00409a90
mov ecx, dword [0x447e34]
push str.DestroyWindow
call fcn.00408fb0
mov ecx, dword [0x447e34]
call fcn.00409000
mov eax, dword [0x44ca54]
mov esi, dword [sym.imp.USER32.dll_DestroyWindow]
push eax
call esi
push 0
call dword [sym.imp.USER32.dll_MessageBeep]
mov ecx, dword [0x44c1ec]
mov edx, dword [0x44ca54]
push 0
push str.FATAL_ERROR
push ecx
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [0x44ca54]
test eax, eax
je 0x408747
push eax
call esi
pop edi
xor eax, eax
pop esi
add esp, 0x608
ret 0x10