Function at 0x405273
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x630
mov eax, dword [0x46b008]
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 - 0x12c], eax
mov eax, dword [ebp + 0x18]
push 0x11c
mov dword [ebp - 0x148], eax
lea eax, [ebp - 0x120]
push ebx
push eax
mov dword [ebp - 0x134], esi
mov dword [ebp - 0x144], ebx
mov dword [ebp - 0x140], ebx
mov dword [ebp - 0x13c], ebx
mov dword [ebp - 0x138], ebx
call fcn.0042f8b0
push 0x4e8
lea eax, [ebp - 0x630]
mov dword [ebp - 0x124], ebx
push ebx
push eax
mov dword [ebp - 0x130], ebx
call fcn.0042f8b0
add esp, 0x18
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.004400ab
push ebx
push 3
call fcn.0044025b
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x154]
push eax
push esi
call fcn.00401205
mov esi, eax
test esi, esi
jns 0x405337
push str.Failed_to_parse_command_line.
push esi
call fcn.0043fdf0
pop ecx
pop ecx
mov edi, ebx
jmp 0x4055b2
push edi
lea eax, [ebp - 0x630]
push eax
call fcn.004043c8
mov esi, eax
test esi, esi
jns 0x405351
push str.Failed_to_initialize_engine_state.
jmp 0x405328
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x604], eax
call fcn.00405706
push 0
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov esi, eax
test esi, esi
jns 0x405376
push str.Failed_to_initialize_COM.
jmp 0x405328
xor edi, edi
inc edi
call fcn.0043f876
mov esi, eax
test esi, esi
jns 0x405396
push str.Failed_to_initialize_Cryputil.
push esi
call fcn.0043fdf0
pop ecx
pop ecx
jmp 0x4055b2
mov dword [ebp - 0x144], edi
call fcn.00440982
mov esi, eax
test esi, esi
jns 0x4053ae
push str.Failed_to_initialize_Regutil.
jmp 0x405389
mov dword [ebp - 0x140], edi
call fcn.004426a6
mov esi, eax
test esi, esi
jns 0x4053c6
push str.Failed_to_initialize_Wiutil.
jmp 0x405389
mov dword [ebp - 0x13c], edi
call fcn.0044311b
mov esi, eax
test esi, esi
jns 0x4053de
push str.Failed_to_initialize_XML_util.
jmp 0x405389
lea eax, [ebp - 0x120]
mov dword [ebp - 0x138], edi
push eax
mov dword [ebp - 0x120], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x405437
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.c:jworkspacewix3_build5059eb25_src_burnengineengine.cpp
call fcn.00403970
push str.Failed_to_get_OS_info.
jmp 0x405389
push 0
lea eax, [ebp - 0x124]
push eax
call fcn.00403573
push dword [ebp - 0x124]
movzx eax, word [ebp - 0xc]
push eax
push dword [ebp - 0x114]
push dword [ebp - 0x118]
push dword [ebp - 0x11c]
push str.43.11.1.3724
push 0x20000001
push 2
call fcn.004056f0
add esp, 0x20
cmp dword [ebp - 0x124], ebx
je 0x40548f
push dword [ebp - 0x124]
call fcn.00402706
and dword [ebp - 0x124], ebx
lea eax, [ebp - 0x630]
push eax
call fcn.004174a9
mov esi, eax
test esi, esi
jns 0x4054ab
push str.Failed_to_initialize_core.
jmp 0x405389
mov eax, dword [ebp - 0x1a0]
sub eax, 0
je 0x40557c
sub eax, 1
je 0x405554
sub eax, 1
je 0x40552c
sub eax, 1
je 0x405504
sub eax, 1
je 0x4054e1
mov esi, 0x8000ffff
push str.Invalid_run_mode.
jmp 0x405389
push dword [ebp + 0x14]
lea eax, [ebp - 0x530]
push eax
call fcn.00404d6a
mov esi, eax
test esi, esi
jns 0x40559e
push str.Failed_to_run_RunOnce_mode.
jmp 0x405389
lea eax, [ebp - 0x630]
mov dword [ebp - 0x130], edi
push eax
push dword [ebp - 0x12c]
call fcn.00404b6e
mov esi, eax
test esi, esi
jns 0x40559e
push str.Failed_to_run_embedded_mode.
jmp 0x405389
lea eax, [ebp - 0x630]
push eax
push dword [ebp - 0x134]
push dword [ebp - 0x12c]
call fcn.004049d7
mov esi, eax
test esi, esi
jns 0x40559e
push str.Failed_to_run_per_machine_mode.
jmp 0x405389
lea eax, [ebp - 0x630]
mov dword [ebp - 0x130], edi
push eax
push dword [ebp - 0x12c]
call fcn.00404bcb
mov esi, eax
test esi, esi
jns 0x40559e
push str.Failed_to_run_per_user_mode.
jmp 0x405389
lea eax, [ebp - 0x630]
push eax
push dword [ebp - 0x134]
call fcn.00404e1b
mov esi, eax
test esi, esi
jns 0x40559e
push str.Failed_to_run_untrusted_mode.
jmp 0x405389
mov ecx, dword [ebp - 0x148]
mov eax, dword [ebp - 0x538]
mov ebx, dword [ebp - 0x618]
mov dword [ecx], eax
cmp dword [ebp - 0x124], 0
je 0x4055c6
push dword [ebp - 0x124]
call fcn.00402706
test esi, esi
jns 0x4055ea
push esi
push dword [ebp - 0x4d0]
push dword [ebp - 0x610]
call fcn.0041e648
cmp dword [ebp - 0x23c], 0
jne 0x4055ea
call fcn.00414211
lea eax, [ebp - 0x578]
push eax
call fcn.0040d89a
push dword [ebp - 0x520]
call fcn.0041a860
call fcn.0041aaaa
test ebx, ebx
je 0x405636
mov eax, dword [ebp - 0x5f8]
test eax, eax
je 0x405636
cmp eax, 6
je 0x405636
push eax
call fcn.00414372
push eax
push 0xa0000008
push 2
call fcn.004056f0
add esp, 0xc
mov esi, 0x80070bc2
xor ebx, ebx
lea eax, [ebp - 0x630]
push eax
call fcn.00405082
cmp dword [ebp - 0x138], 0
je 0x405650
call fcn.004435e9
cmp dword [ebp - 0x13c], 0
je 0x40565e
call fcn.00442ac2
cmp dword [ebp - 0x140], 0
je 0x40566c
call fcn.00440fbb
cmp dword [ebp - 0x144], 0
je 0x40567a
call fcn.0043f985
test edi, edi
je 0x405684
call dword [sym.imp.ole32.dll_CoUninitialize]
cmp dword [ebp - 0x130], 0
je 0x4056c6
test esi, esi
jns 0x405695
mov edi, esi
jmp 0x40569d
mov eax, dword [ebp - 0x148]
mov edi, dword [eax]
push ebx
call fcn.00413da5
push eax
push edi
push 0x20000007
push 2
call fcn.004056f0
add esp, 0x10
test ebx, ebx
je 0x4056c6
push 0xa0000005
push 2
call fcn.004056f0
pop ecx
pop ecx
push 0
call fcn.0043fcce
test ebx, ebx
je 0x4056d6
call fcn.004046db
push 0
call fcn.004403ac
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0042dd3b
leave
ret 0x14