Function at 0x401bfb
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x628
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
xor esi, esi
mov dword [ebp - 0x134], eax
mov eax, dword [ebp + 0x14]
push edi
mov edi, dword [ebp + 0xc]
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 - 0x148], esi
mov dword [ebp - 0x140], esi
mov dword [ebp - 0x144], esi
mov dword [ebp - 0x138], esi
call fcn.004292a0
push 0x4e0
lea eax, [ebp - 0x628]
mov dword [ebp - 0x12c], esi
push esi
push eax
mov dword [ebp - 0x130], esi
mov ebx, esi
call fcn.004292a0
add esp, 0x18
lea eax, [ebp - 0x628]
push eax
call fcn.004010a8
mov esi, eax
test esi, esi
jns 0x401c9d
push str.Failed_to_initialize_engine_state.
jmp 0x401e5d
mov eax, dword [ebp + 0x10]
xor esi, esi
push esi
push 3
mov dword [ebp - 0x5fc], eax
call fcn.004376c1
call fcn.00402083
push esi
push esi
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov esi, eax
test esi, esi
jns 0x401ccd
push str.Failed_to_initialize_COM.
jmp 0x401e5d
xor esi, esi
inc esi
push 0
mov dword [ebp - 0x128], esi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.0043750f
mov dword [ebp - 0x13c], esi
call fcn.00436cd7
mov esi, eax
test esi, esi
jns 0x401cff
push str.Failed_to_initialize_Cryputil.
jmp 0x401e5d
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x148], eax
call fcn.00438c36
mov esi, eax
test esi, esi
jns 0x401d20
push str.Failed_to_initialize_Regutil.
jmp 0x401e5d
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x140], eax
call fcn.0043c191
mov esi, eax
test esi, esi
jns 0x401d41
push str.Failed_to_initialize_Wiutil.
jmp 0x401e5d
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x144], eax
call fcn.0043cc16
mov esi, eax
test esi, esi
jns 0x401d62
push str.Failed_to_initialize_XML_util.
jmp 0x401e5d
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 0x401dbe
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 0x7f
push str.engine.cpp
call fcn.00436473
push str.Failed_to_get_OS_info.
jmp 0x401e5d
push 0
lea eax, [ebp - 0x12c]
push eax
call fcn.004384db
test edi, edi
mov eax, 0x445570
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.9.1006.0
push 0x20000001
push 2
call fcn.0040206d
add esp, 0x24
cmp dword [ebp - 0x12c], ebx
je 0x401e21
push dword [ebp - 0x12c]
call fcn.0043af5b
and dword [ebp - 0x12c], ebx
lea eax, [ebp - 0x628]
push eax
push edi
call fcn.004133e9
mov esi, eax
test esi, esi
jns 0x401e3b
push str.Failed_to_initialize_core.
jmp 0x401e5d
mov eax, dword [ebp - 0x198]
sub eax, 0
je 0x401edb
dec eax
je 0x401ebb
dec eax
je 0x401e90
dec eax
je 0x401e70
mov esi, 0x8000ffff
push str.Invalid_run_mode.
push esi
call fcn.00437258
mov edi, dword [ebp - 0x124]
pop ecx
pop ecx
jmp 0x401f1d
push dword [ebp + 0x10]
lea eax, [ebp - 0x528]
push eax
call fcn.004019d9
mov esi, eax
test esi, esi
jns 0x401f09
push str.Failed_to_run_RunOnce_mode.
jmp 0x401e5d
mov edi, dword [ebp - 0x128]
lea eax, [ebp - 0x628]
push eax
push dword [ebp - 0x134]
mov dword [ebp - 0x130], edi
call fcn.0040173f
mov esi, eax
test esi, esi
jns 0x401f09
push str.Failed_to_run_embedded_mode.
jmp 0x401e5d
lea eax, [ebp - 0x628]
push eax
push edi
push dword [ebp - 0x134]
call fcn.00401548
mov esi, eax
test esi, esi
jns 0x401f09
push str.Failed_to_run_per_machine_mode.
jmp 0x401e5d
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x130], eax
lea eax, [ebp - 0x628]
push eax
push dword [ebp - 0x134]
call fcn.0040179c
mov esi, eax
test esi, esi
jns 0x401f09
push str.Failed_to_run_per_user_mode.
jmp 0x401e5d
mov edi, dword [ebp - 0x124]
mov eax, dword [ebp - 0x530]
mov ebx, dword [ebp - 0x610]
mov dword [edi], eax
cmp dword [ebp - 0x12c], 0
je 0x401f31
push dword [ebp - 0x12c]
call fcn.0043af5b
test esi, esi
jns 0x401f58
cmp dword [ebp - 0x234], 0
jne 0x401f58
xor eax, eax
push eax
push eax
push eax
push 0x445710
push str._Failed
push str.Setup
push eax
call fcn.0043753a
lea eax, [ebp - 0x570]
push eax
call fcn.00409d02
push dword [ebp - 0x518]
call fcn.0041635a
call fcn.004165de
test ebx, ebx
je 0x401fa4
mov eax, dword [ebp - 0x5f0]
test eax, eax
je 0x401fa4
cmp eax, 6
je 0x401fa4
push eax
call fcn.00410498
push eax
push 0xa0000008
push 2
call fcn.0040206d
add esp, 0xc
mov esi, 0x80070bc2
xor ebx, ebx
lea eax, [ebp - 0x628]
push eax
call fcn.00401a8c
cmp dword [ebp - 0x138], 0
je 0x401fbe
call fcn.0043d0ec
cmp dword [ebp - 0x144], 0
je 0x401fcc
call fcn.0043c5ae
cmp dword [ebp - 0x140], 0
je 0x401fda
call fcn.00439272
cmp dword [ebp - 0x148], 0
je 0x401fe8
call fcn.00436de6
cmp dword [ebp - 0x128], 0
je 0x401ff7
call dword [sym.imp.ole32.dll_CoUninitialize]
cmp dword [ebp - 0x130], 0
je 0x402033
test esi, esi
jns 0x402008
mov edi, esi
jmp 0x40200a
mov edi, dword [edi]
push ebx
call fcn.0040ffa7
push eax
push edi
push 0x20000007
push 2
call fcn.0040206d
add esp, 0x10
test ebx, ebx
je 0x402033
push 0xa0000005
push 2
call fcn.0040206d
pop ecx
pop ecx
mov edi, dword [ebp - 0x13c]
test edi, edi
je 0x402044
push 0
call fcn.00437134
test ebx, ebx
je 0x40204d
call fcn.00401248
test edi, edi
je 0x402058
push 0
call fcn.0043780c
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0042928d
mov esp, ebp
pop ebp
ret 0x10