Function at 0x406f35
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x650
mov eax, dword [0x466078]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, dword [ebp + 0x10]
xor ebx, ebx
push edi
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x630], eax
mov eax, dword [ebp + 0x18]
push 0x11c
mov dword [ebp - 0x640], eax
lea eax, [ebp - 0x120]
push ebx
push eax
mov dword [ebp - 0x648], esi
mov dword [ebp - 0x64c], ebx
mov dword [ebp - 0x644], ebx
mov dword [ebp - 0x650], ebx
mov dword [ebp - 0x63c], ebx
call fcn.00438fc0
push 0x508
lea eax, [ebp - 0x628]
mov dword [ebp - 0x62c], ebx
push ebx
push eax
mov dword [ebp - 0x638], ebx
call fcn.00438fc0
add esp, 0x18
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.00431290
push ebx
push 3
call fcn.00431442
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x12c]
push eax
push esi
call fcn.0040123e
mov esi, eax
test esi, esi
jns 0x406fec
push str.Failed_to_parse_command_line.
jmp 0x407029
push edi
lea eax, [ebp - 0x628]
push eax
call fcn.0040608b
mov esi, eax
test esi, esi
jns 0x407006
push str.Failed_to_initialize_engine_state.
jmp 0x407029
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x5fc], eax
call fcn.004073c2
push 0
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov esi, eax
test esi, esi
jns 0x407038
push str.Failed_to_initialize_COM.
push esi
call fcn.00430fd9
pop ecx
pop ecx
mov edi, ebx
jmp 0x407269
xor edi, edi
inc edi
call fcn.00430a58
mov esi, eax
test esi, esi
jns 0x407050
push str.Failed_to_initialize_Cryputil.
jmp 0x407194
mov dword [ebp - 0x64c], edi
call fcn.004047e0
mov esi, eax
test esi, esi
jns 0x40706b
push str.Failed_to_initialize_Regutil.
jmp 0x407194
mov dword [ebp - 0x644], edi
call fcn.00432cec
mov esi, eax
test esi, esi
jns 0x407086
push str.Failed_to_initialize_Wiutil.
jmp 0x407194
mov dword [ebp - 0x650], edi
call fcn.00433772
mov esi, eax
test esi, esi
jns 0x4070a1
push str.Failed_to_initialize_XML_util.
jmp 0x407194
lea eax, [ebp - 0x120]
mov dword [ebp - 0x63c], edi
push eax
mov dword [ebp - 0x120], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x4070fa
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 0x95
push str.engine.cpp
call fcn.00403a8b
push str.Failed_to_get_OS_info.
jmp 0x407194
push 0
lea eax, [ebp - 0x62c]
push eax
call fcn.004034ad
push dword [ebp - 0x62c]
movzx eax, word [ebp - 0xc]
push eax
push dword [ebp - 0x114]
push dword [ebp - 0x118]
push dword [ebp - 0x11c]
push str.3.10.4.7708
push 0x20000001
push 2
call fcn.004073ac
add esp, 0x20
cmp dword [ebp - 0x62c], ebx
je 0x407152
push dword [ebp - 0x62c]
call fcn.004027ab
and dword [ebp - 0x62c], ebx
lea eax, [ebp - 0x628]
push eax
call fcn.00418fcf
mov esi, eax
test esi, esi
jns 0x40716b
push str.Failed_to_initialize_core.
jmp 0x407194
mov eax, dword [ebp - 0x198]
sub eax, 0
je 0x407233
dec eax
je 0x40720b
dec eax
je 0x4071e6
dec eax
je 0x4071c1
dec eax
je 0x4071a1
mov esi, 0x8000ffff
push str.Invalid_run_mode.
push esi
call fcn.00430fd9
pop ecx
pop ecx
jmp 0x407269
push dword [ebp + 0x14]
lea eax, [ebp - 0x528]
push eax
call fcn.00406a29
mov esi, eax
test esi, esi
jns 0x407255
push str.Failed_to_run_RunOnce_mode.
jmp 0x407194
lea eax, [ebp - 0x628]
mov dword [ebp - 0x638], edi
push eax
push dword [ebp - 0x630]
call fcn.0040682b
mov esi, eax
test esi, esi
jns 0x407255
push str.Failed_to_run_embedded_mode.
jmp 0x407194
lea eax, [ebp - 0x628]
push eax
push dword [ebp - 0x648]
push dword [ebp - 0x630]
call fcn.00406692
mov esi, eax
test esi, esi
jns 0x407255
push str.Failed_to_run_per_machine_mode.
jmp 0x407194
lea eax, [ebp - 0x628]
mov dword [ebp - 0x638], edi
push eax
push dword [ebp - 0x630]
call fcn.00406888
mov esi, eax
test esi, esi
jns 0x407255
push str.Failed_to_run_per_user_mode.
jmp 0x407194
lea eax, [ebp - 0x628]
push eax
push dword [ebp - 0x648]
call fcn.00406adc
mov esi, eax
test esi, esi
jns 0x407255
push str.Failed_to_run_untrusted_mode.
jmp 0x407194
mov ecx, dword [ebp - 0x640]
mov eax, dword [ebp - 0x530]
mov ebx, dword [ebp - 0x610]
mov dword [ecx], eax
cmp dword [ebp - 0x62c], 0
je 0x40727d
push dword [ebp - 0x62c]
call fcn.004027ab
test esi, esi
jns 0x4072a4
cmp dword [ebp - 0x234], 0
jne 0x4072a4
xor eax, eax
push eax
push eax
push eax
push 0x448d3c
push str._Failed
push str.Setup
push eax
call fcn.004312bb
lea eax, [ebp - 0x570]
push eax
call fcn.0040f485
push dword [ebp - 0x518]
call fcn.0041c3de
call fcn.0041c626
test ebx, ebx
je 0x4072f0
mov eax, dword [ebp - 0x5f0]
test eax, eax
je 0x4072f0
cmp eax, 6
je 0x4072f0
push eax
call fcn.00415e1d
push eax
push 0xa0000008
push 2
call fcn.004073ac
add esp, 0xc
mov esi, 0x80070bc2
xor ebx, ebx
lea eax, [ebp - 0x628]
push eax
call fcn.00406d43
cmp dword [ebp - 0x63c], 0
je 0x40730a
call fcn.00433c48
cmp dword [ebp - 0x650], 0
je 0x407318
call fcn.00433109
cmp dword [ebp - 0x644], 0
je 0x407326
call fcn.00404e1c
cmp dword [ebp - 0x64c], 0
je 0x407334
call fcn.00430b67
test edi, edi
je 0x40733e
call dword [sym.imp.ole32.dll_CoUninitialize]
cmp dword [ebp - 0x638], 0
je 0x407380
test esi, esi
jns 0x40734f
mov edi, esi
jmp 0x407357
mov eax, dword [ebp - 0x640]
mov edi, dword [eax]
push ebx
call fcn.00415920
push eax
push edi
push 0x20000007
push 2
call fcn.004073ac
add esp, 0x10
test ebx, ebx
je 0x407380
push 0xa0000005
push 2
call fcn.004073ac
pop ecx
pop ecx
push 0
call fcn.00430eb5
test ebx, ebx
je 0x407390
call fcn.00406392
push 0
call fcn.0043158d
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00437d83
mov esp, ebp
pop ebp
ret 0x14