Function at 0x426f50
Capabilities:
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x482b45
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x138
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
lea eax, [esp + 0x2c]
xor edi, edi
push eax
mov dword [esp + 0x10], edi
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [esp + 0x44]
cmp eax, 0x182
je 0x426fad
cmp eax, 0x1e6
je 0x426fad
push eax
push ebx
push ecx
push edx
mov eax, 1
cpuid
mov dword [esp + 0x1c], edx
pop edx
pop ecx
pop ebx
pop eax
mov eax, dword [esp + 0xc]
mov ebx, dword [ebp + 8]
mov ecx, eax
mov edx, eax
and ecx, 0x800000
and edx, 0x2000000
and eax, 0x4000000
mov dword [ebx + 0x1c04], ecx
mov dword [ebx + 0x1c08], edx
mov dword [ebx + 0x1c0c], eax
cmp ecx, edi
jne 0x427025
push 0x69
push str.Your_CPU_does_not_support_MMX_technology__it_must_be_pretty_old__.__Please_buy_a_newer_PC_then_try_again_
lea ecx, [esp + 0x34]
mov dword [esp + 0x4c], 0xf
mov dword [esp + 0x48], edi
mov byte [esp + 0x38], 0
call fcn.00415040
mov dword [esp + 0x14c], edi
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x60]
push ecx
call fcn.00415650
push 0x49aa24
lea edx, [esp + 0x60]
push edx
call fcn.00466bcb
mov eax, dword [esi]
lea edi, [ebx + 0x8c]
push ebx
mov dword [ebx + 0x2000], eax
mov dword [edi], ebx
call fcn.00426b40
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x18]
push edx
push 0x3e5
mov ecx, str.APPBLOCK
call fcn.00426d50
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
add esp, 0xc
push eax
lea edx, [ebx + 0xd4]
push edi
call fcn.00406520
xor edi, edi
cmp dword [ebx + 0x164], edi
jbe 0x4270b6
cmp byte [ebx + 0x1ed0], 0
je 0x4270b6
push str.Cannot_enable_both_multisamples_and_motion_blur.__Please_change_one_of_these_settings.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 1
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x60]
push edx
call fcn.00415650
push 0x49aa24
lea eax, [esp + 0x60]
push eax
call fcn.00466bcb
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x18]
push edx
push 0x3e1
mov ecx, str.MENUBLOCK
call fcn.00426d50
mov eax, dword [ebx + 0xd8]
mov dword [esi + 4], eax
mov ecx, dword [ebx + 0xdc]
mov dword [esi + 8], ecx
fld dword [ebx + 0xe0]
fstp dword [esi + 0xc]
mov dl, byte [ebx + 0xf8]
mov byte [esi + 0x10], dl
mov eax, dword [ebx + 0xe8]
mov ecx, dword [ebx + 0xec]
mov dword [ebx + 0x1c4c], eax
mov dword [ebx + 0x1c48], ecx
mov dword [esi + 0x38], eax
mov al, byte [ebx + 0xf0]
movzx edx, al
mov byte [ebx + 0x1f24], al
mov dword [esi + 0x2c], edx
mov eax, dword [ebx + 0xd8]
mov dword [esi + 0x30], eax
mov ecx, dword [ebx + 0xdc]
mov dword [esi + 0x34], ecx
mov eax, dword [ebx + 0x164]
add esp, 0xc
cmp eax, 3
ja case.0x427140.0
jmp dword [eax*4 + 0x427b54]
mov dword [esi + 0x4c], 2
jmp 0x427165
mov dword [esi + 0x4c], 4
jmp 0x427165
mov dword [esi + 0x4c], 8
jmp 0x427165
mov dword [esi + 0x4c], edi
lea edi, [ebx + 0x1684]
mov esi, edi
call fcn.0044f0c0
mov edx, dword [ebp + 0xc]
push edx
mov esi, ebx
call fcn.00428860
test al, al
jne 0x4271b8
push str.Cannot_create_window
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 2
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x60]
push ecx
call fcn.00415650
push 0x49aa24
lea edx, [esp + 0x60]
push edx
call fcn.00466bcb
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
mov eax, dword [ebx + 0xd4]
mov ecx, dword [ebx + 0x1ff4]
push eax
mov eax, dword [ecx]
push eax
call dword [sym.imp.USER32.dll_SetWindowTextA]
cmp byte [ebx + 0xf8], 0
jne 0x4271f1
push 0x7f00
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
push eax
call dword [sym.imp.USER32.dll_SetCursor]
cmp dword [ebx + 0xe4], 0
je 0x427226
mov ecx, dword [ebx + 0x104]
sub ecx, dword [ebx + 0x100]
test ecx, 0xfffffffc
je 0x427226
mov edx, dword [ebx + 0x100]
mov ecx, dword [edx]
mov eax, dword [ebx + 0x1ff4]
mov edx, dword [eax]
push ecx
push edx
call dword [sym.imp.USER32.dll_SetMenu]
mov esi, dword [ebp + 0xc]
lea ecx, [ebx + 0x1ff0]
lea eax, [esi + 0x14]
push ecx
push eax
mov dword [esp + 0x20], eax
call fcn.004297c0
mov eax, dword [ebx + 0x1ff4]
mov edx, dword [eax]
xor eax, eax
mov dword [esi + 0x24], edx
mov dword [ebx + 0x1c1c], eax
mov dword [ebx + 0x1c20], eax
cmp dword [esi + 0x2c], eax
je 0x427310
mov ecx, dword [esi + 0x34]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 0x30]
mov dword [esp + 0x1c], eax
mov eax, 0x186a0
mov dword [esp + 0x58], ecx
mov dword [esp + 0x20], eax
mov byte [esp + 0x13], 0
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
lea edx, [esp + 0xa0]
push edx
push eax
push 0
call dword [sym.imp.USER32.dll_EnumDisplaySettingsA]
inc dword [esp + 0x24]
test eax, eax
je 0x4272e4
mov eax, dword [esp + 0x10c]
mov ecx, dword [esp + 0x1c]
cmp eax, ecx
jne 0x4272c3
mov edx, dword [esp + 0x110]
cmp edx, dword [esp + 0x58]
jne 0x4272c1
mov byte [esp + 0x13], 1
cmp eax, ecx
jl 0x427283
mov ecx, dword [esp + 0x110]
cmp ecx, dword [esp + 0x58]
jl 0x427283
cmp eax, dword [esp + 0x28]
jge 0x427283
cmp ecx, dword [esp + 0x20]
jge 0x427283
mov dword [esp + 0x20], ecx
jmp 0x42727f
cmp byte [esp + 0x13], 0
jne 0x427310
mov ecx, dword [esp + 0x28]
cmp ecx, 0x186a0
je 0x4273c3
mov eax, dword [esp + 0x20]
cmp eax, 0x186a0
je 0x4273c3
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], eax
fld dword [esi + 0xc]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fst dword [ebx + 0x1c18]
fstp dword [esp + 0x1c]
fldz
fst dword [esp + 0x84]
mov eax, dword [esp + 0x84]
fstp dword [esp + 0x88]
fld dword [esp + 0x1c]
mov ecx, dword [esp + 0x88]
mov dword [ebx + 0x19b4], eax
fstp dword [esp + 0x8c]
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x8c]
push eax
mov dword [ebx + 0x19b8], ecx
push edi
mov dword [ebx + 0x19bc], edx
call fcn.0044f1b0
push ebx
call fcn.004214b0
mov eax, dword [ebx + 0x1ac8]
test eax, eax
je 0x427398
cmp dword [ebx + 0x1b80], 0xffffffff
jne 0x427398
mov eax, ebx
call fcn.0041b830
mov dword [ebx + 0x1b80], eax
mov eax, 6
xor esi, esi
lea edx, [eax - 0x17]
lea ecx, [eax + 0xa]
cmp dword [ebx + 0xf4], esi
jne 0x42742a
cmp dword [edi + 0x254], eax
jne 0x4273fa
mov dword [edi + 0x268], esi
and dword [edi + 0x240], edx
jmp 0x427406
push str.The_display_resolution_required_by_this_application_is_not_supported.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 3
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x60]
push ecx
call fcn.00415650
push 0x49aa24
lea edx, [esp + 0x60]
push edx
call fcn.00466bcb
mov dword [edi + 0x268], eax
or dword [edi + 0x240], ecx
cmp dword [edi + 0x250], eax
jne 0x42741d
mov dword [edi + 0x264], esi
and dword [edi + 0x240], 0xfffffff7
jmp 0x42742a
mov dword [edi + 0x264], eax
or dword [edi + 0x240], 8
cmp dword [ebx + 0xf4], 1
mov eax, 7
jne 0x42747e
cmp dword [edi + 0x254], eax
jne 0x42744e
mov dword [edi + 0x268], esi
and dword [edi + 0x240], edx
jmp 0x42745a
mov dword [edi + 0x268], eax
or dword [edi + 0x240], ecx
cmp dword [edi + 0x250], eax
jne 0x427471
mov dword [edi + 0x264], esi
and dword [edi + 0x240], 0xfffffff7
jmp 0x42747e
mov dword [edi + 0x264], eax
or dword [edi + 0x240], 8
mov eax, edi
call fcn.00450f10
mov eax, 3
cmp dword [edi + 0x248], eax
jne 0x4274a1
mov dword [edi + 0x25c], esi
and dword [edi + 0x240], 0xfffffffd
jmp 0x4274ae
mov dword [edi + 0x25c], eax
or dword [edi + 0x240], 2
cmp dword [edi + 0x24c], eax
jne 0x4274c5
mov dword [edi + 0x260], esi
and dword [edi + 0x240], 0xfffffffb
jmp 0x4274d2
mov dword [edi + 0x260], eax
or dword [edi + 0x240], 4
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x18]
push edx
push 0x3e3
mov ecx, str.IMAGEBLOCK
call fcn.00426d50
mov ecx, dword [esp + 0x20]
add esp, 0xc
lea eax, [ebx + 0x1b5c]
push eax
push ecx
mov ecx, dword [esp + 0x14]
lea esi, [ebx + 0x8c]
call fcn.00407160
push 0
lea esi, [ebx + 0x1b9c]
push esi
push 0x4844e0
push 0x800
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call sub.DINPUT8.dll_DirectInput8Create
test eax, eax
jge 0x427565
push str.Failed_to_initialise_DirectInput.__Please_ensure_you_have_DirectX_8_or_above_installed_
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 4
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x60]
push eax
call fcn.00415650
push 0x49aa24
lea ecx, [esp + 0x60]
push ecx
call fcn.00466bcb
mov eax, dword [esi]
mov edx, dword [eax]
push 0
lea edi, [ebx + 0x1ba0]
push edi
push 0x484540
push eax
mov eax, dword [edx + 0xc]
call eax
test eax, eax
jge 0x4275b8
push str.Failed_to_initialise_DirectInput.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 5
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x60]
push edx
call fcn.00415650
push 0x49aa24
lea eax, [esp + 0x60]
push eax
call fcn.00466bcb
mov eax, dword [edi]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x2c]
push 0x48473c
push eax
call edx
test eax, eax
jge 0x427602
push str.Failed_to_initialise_DirectInput.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 6
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x60]
push ecx
call fcn.00415650
push 0x49aa24
lea edx, [esp + 0x60]
push edx
call fcn.00466bcb
mov ecx, dword [ebx + 0x1ff4]
mov eax, dword [edi]
mov ecx, dword [ecx]
mov edx, dword [eax]
mov edx, dword [edx + 0x34]
push 0xa
push ecx
push eax
call edx
test eax, eax
jge 0x427652
push str.Failed_to_initialise_DirectInput.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 7
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x60]
push ecx
call fcn.00415650
push 0x49aa24
lea edx, [esp + 0x60]
push edx
call fcn.00466bcb
mov edi, dword [edi]
mov eax, dword [edi]
mov ecx, dword [eax + 0x1c]
push edi
call ecx
test eax, eax
jge 0x427697
push str.Failed_to_initialise_DirectInput.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 8
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x60]
push eax
call fcn.00415650
push 0x49aa24
lea ecx, [esp + 0x60]
push ecx
call fcn.00466bcb
mov eax, dword [esi]
mov edx, dword [eax]
push 0
lea edi, [ebx + 0x1ba4]
push edi
push 0x484530
push eax
mov eax, dword [edx + 0xc]
call eax
test eax, eax
jge 0x4276ea
push str.Failed_to_initialise_DirectInput.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 9
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x60]
push edx
call fcn.00415650
push 0x49aa24
lea eax, [esp + 0x60]
push eax
call fcn.00466bcb
mov ecx, dword [ebx + 0x1ff4]
mov eax, dword [edi]
mov ecx, dword [ecx]
mov edx, dword [eax]
mov edx, dword [edx + 0x34]
push 0xa
push ecx
push eax
call edx
test eax, eax
jge 0x42773a
push str.Failed_to_initialise_DirectInput.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 0xa
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x60]
push ecx
call fcn.00415650
push 0x49aa24
lea edx, [esp + 0x60]
push edx
call fcn.00466bcb
mov eax, dword [edi]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x2c]
push 0x484944
push eax
call edx
test eax, eax
jge 0x427784
push str.Failed_to_initialise_DirectInput.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 0xb
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x60]
push ecx
call fcn.00415650
push 0x49aa24
lea edx, [esp + 0x60]
push edx
call fcn.00466bcb
mov edi, dword [edi]
mov eax, dword [edi]
mov ecx, dword [eax + 0x1c]
push edi
call ecx
test eax, eax
jge 0x4277c9
push str.Failed_to_initialise_DirectInput.
lea ecx, [esp + 0x30]
call fcn.00415120
mov dword [esp + 0x14c], 0xc
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x60]
push eax
call fcn.00415650
push 0x49aa24
lea ecx, [esp + 0x60]
push ecx
call fcn.00466bcb
mov eax, dword [ebp + 0xc]
mov byte [ebx + 0x1e6b], 1
mov edx, dword [eax + 4]
mov dword [ebx + 0x1c10], edx
mov eax, dword [eax + 8]
mov dword [ebx + 0x1c14], eax
mov eax, dword [ebx + 0x1ff4]
mov edx, dword [eax]
lea ecx, [esp + 0x90]
push ecx
push edx
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x9c]
sub eax, dword [esp + 0x90]
sub ecx, dword [esp + 0x94]
push ebx
push 0x429000
push str.DEPENDENCIES
push 0
mov dword [ebx + 0x1c24], eax
mov dword [ebx + 0x1c28], ecx
call dword [sym.imp.KERNEL32.dll_EnumResourceNamesA]
push ebx
call fcn.00429020
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x18]
push eax
push 0x3e6
mov ecx, str.LEVELBLOCK
call fcn.00426d50
mov ecx, dword [esp + 0x20]
add esp, 0xc
push ecx
mov ecx, dword [esp + 0x10]
lea eax, [ebx + 0x8c]
push eax
call fcn.00403020
mov esi, dword [ebx + 0x1e88]
cmp esi, dword [ebx + 0x1e8c]
je 0x4278d8
lea esp, [esp]
mov edx, dword [esi]
add edx, 0x1c
push edx
lea ecx, [esp + 0x24]
call fcn.00413ec0
mov dword [esp + 0x14c], 0xd
lea edi, [esp + 0x20]
call fcn.00414260
mov eax, dword [esi]
mov dword [esp + 0x18], eax
lea eax, [ebx + 0x1e94]
push eax
call fcn.00429b30
mov ecx, dword [esp + 0x18]
mov dword [eax], ecx
mov dword [esp + 0x14c], 0xffffffff
mov ecx, edi
call fcn.004149b0
add esi, 4
cmp esi, dword [ebx + 0x1e8c]
jne 0x427880
lea edx, [esp + 0xc]
push edx
lea eax, [esp + 0x18]
push eax
push 0x3e7
mov ecx, str.EVENTBLOCK
call fcn.00426d50
mov ecx, dword [esp + 0x20]
add esp, 0xc
push ecx
mov ecx, dword [esp + 0x10]
lea edx, [ebx + 0x8c]
call fcn.00401330
mov eax, dword [ebx + 0x1eac]
mov edi, dword [ebx + 0x1ea8]
mov dword [esp + 0x1c], eax
cmp edi, eax
je 0x427968
lea esp, [esp]
mov eax, dword [edi]
mov esi, dword [eax + 0x13c]
mov eax, dword [eax + 0x140]
mov dword [esp + 0x18], eax
cmp esi, eax
je 0x42795f
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edi]
mov edx, dword [edx + 0x1c]
push eax
call edx
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
call edx
cmp eax, 3
jne 0x427956
mov eax, dword [esi]
mov byte [eax + 0x24], 1
add esi, 4
cmp esi, dword [esp + 0x18]
jne 0x427936
add edi, 4
cmp edi, dword [esp + 0x1c]
jne 0x427920
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x18]
push edx
push 0x3e2
mov ecx, str.HLSL
call fcn.00426d50
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
add esp, 0xc
push eax
lea eax, [ebx + 0x8c]
push eax
call fcn.00407b00
cmp byte [ebx + 0x1ed0], 0
je 0x4279a8
push ebx
call fcn.00426e40
call fcn.00464f64
mov edx, dword [ebx]
mov dword [ebx + 0x2004], eax
mov eax, dword [edx + 0xd8]
push str.No_serialize
mov ecx, ebx
mov dword [ebx + 0x1fe8], 0
call eax
test eax, eax
je 0x427a10
mov ecx, dword [eax + 0x90]
sub ecx, dword [eax + 0x8c]
test ecx, 0xfffffffc
je 0x427a10
mov ecx, dword [eax + 0x8c]
mov eax, dword [eax + 0x90]
cmp ecx, eax
je 0x427a10
jmp 0x427a00
mov edx, dword [ecx]
add ecx, 4
mov byte [edx + 0xc4], 1
cmp ecx, eax
jne 0x427a00
mov eax, dword [ebx + 0x1ea8]
mov edi, dword [eax]
lea eax, [ebx + 0x1eb4]
push eax
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], edi
call fcn.00421dd0
mov dword [ebx + 0x20c], edi
mov eax, edi
mov byte [edi + 0x70], 1
call fcn.004357c0
mov esi, dword [ebx + 0x1ea8]
add esi, 4
cmp esi, dword [ebx + 0x1eac]
je 0x427a7a
mov edi, edi
mov ecx, dword [esi]
mov eax, dword [ecx + 0x1b0]
cmp eax, 1
je 0x427a69
test eax, eax
jne 0x427a6f
cmp dword [ebx + 0x2088], eax
jne 0x427a6f
push ecx
call fcn.0044e050
add esi, 4
cmp esi, dword [ebx + 0x1eac]
jne 0x427a50
lea ecx, [esp + 0x50]
push ecx
mov byte [ebx + 0x2020], 1
call dword [sym.imp.USER32.dll_GetCursorPos]
cmp byte [ebx + 0x1f24], 0
jne 0x427aa9
mov eax, dword [ebx + 0x1ff4]
mov eax, dword [eax]
lea edx, [esp + 0x50]
push edx
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
fild dword [esp + 0x50]
push edi
fstp qword [edi + 0x58]
fild dword [esp + 0x58]
fstp qword [edi + 0x60]
call fcn.004357f0
push ebx
call fcn.0041b970
cmp dword [ebx + 0x160], 0
mov ecx, dword [ebx + 0x1c10]
mov edx, dword [ebx + 0x1c14]
mov dword [ebx + 0x2ec], ecx
mov dword [ebx + 0x2f0], edx
jg 0x427aff
mov eax, dword [ebx]
mov edx, dword [eax + 0x98]
push 0
push 1
push 0xffffffffffffffff
mov ecx, ebx
call edx
cmp dword [ebx + 0x160], 0
jle 0x427b3a
push 0
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push str.none
call fcn.00414eb0
mov dword [esp + 0x154], 0xe
mov eax, dword [ebx + 0x160]
push eax
lea ecx, [ebx + 0x168]
mov dword [esp + 0x158], 0xffffffff
call fcn.00442f70
mov ecx, dword [esp + 0x144]
pop edi
pop esi
mov al, 1
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8