Function at 0x446570
Capabilities:
Terminate process

Disassembly:
sub esp, 0x10
push ebx
push ebp
push esi
push edi
call fcn.00415350
push str.grInit___START_n
call fcn.0041ccf0
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
add esp, 4
mov dword [0x4d01e4], esi
test eax, eax
jne 0x4465a0
mov eax, dword [0x4d01e8]
mov ecx, dword [0x4b95f8]
mov dword [0x4d5110], eax
cmp esi, ecx
je 0x4465cb
mov ecx, esi
neg ecx
sbb ecx, ecx
and ecx, 0xff360000
add ecx, 0x96ca0000
push ecx
push 0xfffffffffffffff0
push eax
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov ebp, 1
mov dword [0x4d5154], ebp
call fcn.00446b00
mov eax, dword [0x4d5118]
mov dword [0x4d5154], 0
test eax, eax
jne 0x446654
push str.DirectX_8.0___START_n
call fcn.0041ccf0
add esp, 4
push str.d3d8.dll
call dword [sym.imp.kernel32.dll_LoadLibraryA]
test eax, eax
mov dword [0x4d5118], eax
jne 0x446637
push str.ERROR:_DirectX_8.0_not_found___START_n
call fcn.0041ccf0
add esp, 4
push 0
push str.Error
push str.The_program_need_DirectX_8.0_or_higher_version
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call fcn.0047f30d
push str.Direct3DCreate8
push eax
call dword [sym.imp.kernel32.dll_GetProcAddress]
push str.DirectX_8.0___FINISH_n
mov edi, eax
call fcn.0041ccf0
add esp, 4
jmp 0x446658
mov edi, dword [esp + 0x28]
push str.Direct3DCreate8___START_n
call fcn.0041ccf0
add esp, 4
push 0x78
call edi
push str.Direct3DCreate8___FINISH_n
mov dword [0x4d511c], eax
call fcn.0041ccf0
mov eax, dword [0x4d511c]
add esp, 4
test eax, eax
je 0x446acb
mov edx, dword [eax]
lea ecx, [esp + 0x10]
push ecx
push 0
push eax
call dword [edx + 0x20]
mov eax, dword [0x4d511c]
push 0x4d4020
push ebp
push 0
mov edx, dword [eax]
push eax
call dword [edx + 0x34]
push str.DeviceCaps.TextureCapsD3DPTEXTURECAPS_ALPHA_n
call fcn.0041ccf0
add esp, 4
push str.DeviceCaps.TextureOpCapsD3DTEXOPCAPS_MODULATE_n
call fcn.0041ccf0
add esp, 4
push str.DeviceCaps.TextureOpCapsD3DTEXOPCAPS_ADD_n
call fcn.0041ccf0
mov al, byte [0x4d405c]
add esp, 4
test al, 4
je 0x446ad3
mov al, byte [0x4d40b0]
test al, 8
je 0x446ad3
test al, 0x40
je 0x446ad3
mov edx, dword [esp + 0x18]
cmp edx, 0x55
jb 0x4466ff
mov edx, 0x55
mov ecx, 0xd
xor eax, eax
mov edi, 0x4d3fb8
mov ebx, dword [esp + 0x24]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x28]
mov edi, dword [0x4d5110]
xor ecx, ecx
mov dword [0x4d3fbc], eax
test esi, esi
mov eax, esi
mov dword [0x4d3fcc], ebp
sete cl
neg eax
sbb eax, eax
mov dword [0x4d3fd8], ebp
mov ebp, ecx
and eax, edx
test esi, esi
mov esi, dword [esp + 0x2c]
mov dword [0x4d3fb8], ebx
mov dword [0x4d3fd0], edi
mov dword [0x4d3fdc], 0x50
mov dword [0x4d3fd4], ebp
mov dword [0x4d3fe4], eax
je 0x446773
xor ecx, ecx
cmp esi, 0x20
setne cl
add ecx, 0x16
jmp 0x446777
mov ecx, dword [esp + 0x1c]
cmp ecx, 0x16
mov dword [0x4d3fc0], ecx
mov dword [0x4d5128], esi
jne 0x44678f
mov ecx, 0x20
jmp 0x4467a8
cmp ecx, 0x14
jne 0x44679b
mov ecx, 0x18
jmp 0x4467a8
xor edx, edx
cmp ecx, 0x17
sete dl
add edx, 0xf
mov ecx, edx
push edi
mov edi, dword [esp + 0x2c]
push eax
xor eax, eax
test ebp, ebp
sete al
push ecx
push eax
push edi
push ebx
push str.grInit__d__d__d__d__d__d__n
call fcn.0041ccf0
add esp, 0x1c
call fcn.00444dc0
test eax, eax
je 0x446861
push str.Change_BackBufferFormat
call fcn.0041ccf0
sub esi, 0x20
add esp, 4
neg esi
sbb esi, esi
and esi, 4
add esi, 0x14
mov dword [0x4d3fc0], esi
call fcn.00444dc0
test eax, eax
je 0x446861
push str.Minimize_BackBufferFormat
call fcn.0041ccf0
add esp, 4
mov dword [0x4d5128], 0x10
mov dword [0x4d3fc0], 0x17
call fcn.00444dc0
test eax, eax
je 0x446861
mov dword [0x4d3fc0], 0x18
call fcn.00444dc0
test eax, eax
je 0x446861
push str.ERROR:_Video_accelerator_not_found___START
call fcn.0041ccf0
add esp, 4
push 0
push str.Error
push str.The_program_needs_video_hardware_supported_DirectX_8.0_or_higher_version
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call fcn.0047f30d
mov eax, dword [0x4d5120]
test eax, eax
je 0x446acb
mov eax, dword [0x4d3fc0]
cmp eax, 0x16
je 0x446932
cmp eax, 0x14
je 0x446932
push 0x4d50f0
push 0x4d3ff0
push 0x4d50d0
push str.D3DFMT_A4R4G4B4
push 0xc
push 0
push 4
push 8
push 4
push 4
push 4
push 4
push 2
push 0x1a
call fcn.00444e10
push 0
push 0
push 0x4d50f0
push str.D3DFMT_A1R5G5B5
push 0xf
push 0
push 5
push 0xa
push 1
push 5
push 5
push 5
push 2
push 0x19
call fcn.00444e10
add esp, 0x70
push 0
push 0
push 0x4d50d0
push str.D3DFMT_X1R5G5B5
push 0
push 0
push 5
push 0xa
push 0
push 5
push 5
push 5
push 2
push 0x18
call fcn.00444e10
push 0
push 0
push 0x4d50d0
push str.D3DFMT_R5G6B5
push 0
push 0
push 5
push 0xb
push 0
push 5
push 6
push 5
push 2
push 0x17
call fcn.00444e10
add esp, 0x70
jmp 0x4469b3
push 0x4d50f0
push 0x4d3ff0
push 0x4d50d0
push str.D3DFMT_A8R8G8B8
push 0x18
push 0
push 8
push 0x10
push 8
push 8
push 8
push 8
push 4
push 0x15
call fcn.00444e10
push 0
push 0
push 0x4d50d0
push str.D3DFMT_X8R8G8B8
push 0
push 0
push 8
push 0x10
push 0
push 8
push 8
push 8
push 4
push 0x16
call fcn.00444e10
add esp, 0x70
push 0
push 0
push 0x4d50d0
push str.D3DFMT_R8G8B8
push 0
push 0
push 8
push 0x10
push 0
push 8
push 8
push 8
push 3
push 0x14
call fcn.00444e10
add esp, 0x38
movsx ecx, byte [0x4d50d7]
movsx edx, byte [0x4d50d6]
movsx eax, byte [0x4d50d5]
push ecx
push edx
movsx ecx, byte [0x4d50d4]
push eax
push ecx
push str.fmtColor_r_g_b_a__d__d__d__d_n
call fcn.0041ccf0
movsx edx, byte [0x4d3ff7]
movsx eax, byte [0x4d3ff6]
movsx ecx, byte [0x4d3ff5]
add esp, 0x14
push edx
push eax
movsx edx, byte [0x4d3ff4]
push ecx
push edx
push str.fmtAlpha_r_g_b_a__d__d__d__d_n
call fcn.0041ccf0
movsx eax, byte [0x4d50f7]
movsx ecx, byte [0x4d50f6]
movsx edx, byte [0x4d50f5]
add esp, 0x14
push eax
push ecx
movsx eax, byte [0x4d50f4]
push edx
push eax
push str.fmtMask_r_g_b_a__d__d__d__d_n
call fcn.0041ccf0
mov ecx, dword [esp + 0x44]
mov ebp, 1
push edi
push ebx
mov dword [0x4b95fc], ebp
mov dword [0x4b95f8], ecx
call fcn.00446480
push edi
push ebx
push 0
push 0
push 0
call fcn.0044feb0
add esp, 0x30
call fcn.004460c0
mov eax, dword [0x4d4014]
xor esi, esi
test eax, eax
jle 0x446a8e
mov edx, dword [0x4d4010]
mov ecx, dword [edx + esi*4]
test ecx, ecx
je 0x446a84
mov eax, dword [ecx]
call dword [eax]
mov eax, dword [0x4d4014]
inc esi
cmp esi, eax
jl 0x446a73
mov eax, dword [0x4d4fc4]
mov esi, ebp
cmp eax, ebp
jle 0x446abe
mov ecx, dword [0x4d4fc0]
mov ecx, dword [ecx + esi*4]
test ecx, ecx
je 0x446ab4
movsx edx, word [ecx + 0x10]
mov eax, dword [ecx + 0xc]
push edx
push eax
call fcn.00454380
mov eax, dword [0x4d4fc4]
inc esi
cmp esi, eax
jl 0x446a99
push str.grInit___FINISH_n
call fcn.0041ccf0
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret
push str.ERROR:_Video_card_compatible_with_DirectX_8.0_or_higher_version_not_found_n
call fcn.0041ccf0
add esp, 4
push 0
push str.Error
push str.Video_card_compatible_with_DirectX_8.0_or_higher_version_not_found
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
push 0
call fcn.0047f30d
nop
nop
nop
nop
nop