Function at 0x401c53
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5ec
mov eax, dword [0x45b010]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
xor esi, esi
mov dword [ebp - 0x134], eax
mov eax, dword [ebp + 0x14]
push 0x11c
mov dword [ebp - 0x124], eax
lea eax, [ebp - 0x120]
push esi
push eax
mov dword [ebp - 0x128], esi
mov dword [ebp - 0x13c], esi
mov dword [ebp - 0x144], esi
mov dword [ebp - 0x140], esi
mov dword [ebp - 0x138], esi
call fcn.00426ad0
push 0x4a8
lea eax, [ebp - 0x5ec]
mov dword [ebp - 0x12c], esi
push esi
push eax
mov dword [ebp - 0x130], esi
mov ebx, esi
call fcn.00426ad0
add esp, 0x18
lea eax, [ebp - 0x5ec]
push eax
call fcn.004010a8
mov esi, eax
test esi, esi
jns 0x401cef
push str.Failed_to_initialize_engine_state.
jmp 0x401e8e
mov eax, dword [ebp + 0x10]
xor esi, esi
push esi
push 3
mov dword [ebp - 0x5c0], eax
call fcn.00434d17
call fcn.0040209b
push esi
push esi
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov esi, eax
test esi, esi
jns 0x401d1f
push str.Failed_to_initialize_COM.
jmp 0x401e8e
xor esi, esi
inc esi
push 0
mov dword [ebp - 0x128], esi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.00434b65
mov dword [ebp - 0x13c], esi
call fcn.004361d0
mov esi, eax
test esi, esi
jns 0x401d51
push str.Failed_to_initialize_Regutil.
jmp 0x401e8e
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x144], eax
call fcn.00439312
mov esi, eax
test esi, esi
jns 0x401d72
push str.Failed_to_initialize_Wiutil.
jmp 0x401e8e
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x140], eax
call fcn.00439cd2
mov esi, eax
test esi, esi
jns 0x401d93
push str.Failed_to_initialize_XML_util.
jmp 0x401e8e
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x138], eax
lea eax, [ebp - 0x120]
push eax
mov dword [ebp - 0x120], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x401def
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov eax, 0x80004005
test esi, esi
cmovns esi, eax
push esi
push 0x7a
push str.engine.cpp
call fcn.00433f1c
push str.Failed_to_get_OS_info.
jmp 0x401e8e
push 0
lea eax, [ebp - 0x12c]
push eax
call fcn.00435a72
test edi, edi
mov eax, 0x440580
cmovne eax, edi
push eax
push dword [ebp - 0x12c]
movzx eax, word [ebp - 0xc]
push eax
push dword [ebp - 0x114]
push dword [ebp - 0x118]
push dword [ebp - 0x11c]
push str.3.8.3213.0
push 0x20000001
push 2
call fcn.00402085
add esp, 0x24
cmp dword [ebp - 0x12c], ebx
je 0x401e52
push dword [ebp - 0x12c]
call fcn.0043bfd9
and dword [ebp - 0x12c], ebx
lea eax, [ebp - 0x5ec]
push eax
push edi
call fcn.004116c1
mov esi, eax
test esi, esi
jns 0x401e6c
push str.Failed_to_initialize_core.
jmp 0x401e8e
mov eax, dword [ebp - 0x194]
sub eax, 0
je 0x401f06
dec eax
je 0x401ee6
dec eax
je 0x401ebb
dec eax
je 0x401ea1
mov esi, 0x8000ffff
push str.Invalid_run_mode.
push esi
call fcn.004348ae
mov edi, dword [ebp - 0x124]
pop ecx
pop ecx
jmp 0x401f48
push dword [ebp + 0x10]
push edi
call fcn.004019a6
mov esi, eax
test esi, esi
jns 0x401f34
push str.Failed_to_run_RunOnce_mode.
jmp 0x401e8e
mov edi, dword [ebp - 0x128]
lea eax, [ebp - 0x5ec]
push eax
push dword [ebp - 0x134]
mov dword [ebp - 0x130], edi
call fcn.00401722
mov esi, eax
test esi, esi
jns 0x401f34
push str.Failed_to_run_embedded_mode.
jmp 0x401e8e
lea eax, [ebp - 0x5ec]
push eax
push edi
push dword [ebp - 0x134]
call fcn.00401535
mov esi, eax
test esi, esi
jns 0x401f34
push str.Failed_to_run_per_machine_mode.
jmp 0x401e8e
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x130], eax
lea eax, [ebp - 0x5ec]
push eax
push dword [ebp - 0x134]
call fcn.00401769
mov esi, eax
test esi, esi
jns 0x401f34
push str.Failed_to_run_per_user_mode.
jmp 0x401e8e
mov edi, dword [ebp - 0x124]
mov eax, dword [ebp - 0x4f8]
mov ebx, dword [ebp - 0x5d4]
mov dword [edi], eax
cmp dword [ebp - 0x12c], 0
je 0x401f5c
push dword [ebp - 0x12c]
call fcn.0043bfd9
test esi, esi
jns 0x401f83
cmp dword [ebp - 0x230], 0
jne 0x401f83
xor eax, eax
push eax
push eax
push eax
push 0x440700
push str._Failed
push str.Setup
push eax
call fcn.00434b90
lea eax, [ebp - 0x534]
push eax
call fcn.00408aa8
push dword [ebp - 0x4e8]
call fcn.004140f4
test ebx, ebx
je 0x401fca
mov eax, dword [ebp - 0x5b4]
test eax, eax
je 0x401fca
cmp eax, 6
je 0x401fca
push eax
call fcn.0040e955
push eax
push 0xa0000008
push 2
call fcn.00402085
add esp, 0xc
mov esi, 0x80070bc2
xor ebx, ebx
lea eax, [ebp - 0x5ec]
push eax
call fcn.00401afc
cmp dword [ebp - 0x138], 0
je 0x401fe4
call fcn.00439fdb
cmp dword [ebp - 0x140], 0
je 0x401ff2
call fcn.0043970c
cmp dword [ebp - 0x144], 0
je 0x402000
call fcn.0043680c
cmp dword [ebp - 0x128], 0
je 0x40200f
call dword [sym.imp.ole32.dll_CoUninitialize]
cmp dword [ebp - 0x130], 0
je 0x40204b
test esi, esi
jns 0x402020
mov edi, esi
jmp 0x402022
mov edi, dword [edi]
push ebx
call fcn.0040e464
push eax
push edi
push 0x20000007
push 2
call fcn.00402085
add esp, 0x10
test ebx, ebx
je 0x40204b
push 0xa0000005
push 2
call fcn.00402085
pop ecx
pop ecx
mov edi, dword [ebp - 0x13c]
test edi, edi
je 0x40205c
push 0
call fcn.0043478a
test ebx, ebx
je 0x402065
call fcn.00401235
test edi, edi
je 0x402070
push 0
call fcn.00434e62
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00426ab9
mov esp, ebp
pop ebp
ret 0x10