Function at 0x401bd3
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5ec
mov eax, dword [0x4560d0]
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.004265e0
push 0x4a8
lea eax, [ebp - 0x5ec]
push esi
push eax
mov dword [ebp - 0x12c], esi
mov dword [ebp - 0x130], esi
mov ebx, esi
call fcn.004265e0
add esp, 0x18
lea eax, [ebp - 0x5ec]
push eax
call fcn.00401036
mov esi, eax
test esi, esi
jns 0x401c6f
push str.Failed_to_initialize_engine_state.
jmp 0x401e0e
mov eax, dword [ebp + 0x10]
xor esi, esi
push esi
push 3
mov dword [ebp - 0x5c0], eax
call fcn.00430cd8
call fcn.00402019
push esi
push esi
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov esi, eax
test esi, esi
jns 0x401c9f
push str.Failed_to_initialize_COM.
jmp 0x401e0e
xor esi, esi
inc esi
push 0
mov dword [ebp - 0x128], esi
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.00430b28
mov dword [ebp - 0x13c], esi
call fcn.00432189
mov esi, eax
test esi, esi
jns 0x401cd1
push str.Failed_to_initialize_Regutil.
jmp 0x401e0e
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x144], eax
call fcn.00435259
mov esi, eax
test esi, esi
jns 0x401cf2
push str.Failed_to_initialize_Wiutil.
jmp 0x401e0e
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x140], eax
call fcn.00435c09
mov esi, eax
test esi, esi
jns 0x401d13
push str.Failed_to_initialize_XML_util.
jmp 0x401e0e
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 0x401d6f
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.0042fef9
push str.Failed_to_get_OS_info.
jmp 0x401e0e
push 0
lea eax, [ebp - 0x12c]
push eax
call fcn.00431a39
mov eax, 0x43b580
test edi, edi
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.708.0
push 0x20000001
push 2
call fcn.00402003
add esp, 0x24
cmp dword [ebp - 0x12c], ebx
je 0x401dd2
push dword [ebp - 0x12c]
call fcn.00434266
and dword [ebp - 0x12c], ebx
lea eax, [ebp - 0x5ec]
push eax
push edi
call fcn.00411428
mov esi, eax
test esi, esi
jns 0x401dec
push str.Failed_to_initialize_core.
jmp 0x401e0e
mov eax, dword [ebp - 0x194]
sub eax, 0
je 0x401e86
dec eax
je 0x401e66
dec eax
je 0x401e3b
dec eax
je 0x401e21
mov esi, 0x8000ffff
push str.Invalid_run_mode.
push esi
call fcn.00430877
mov edi, dword [ebp - 0x124]
pop ecx
pop ecx
jmp 0x401ec8
push dword [ebp + 0x10]
push edi
call fcn.00401928
mov esi, eax
test esi, esi
jns 0x401eb4
push str.Failed_to_run_RunOnce_mode.
jmp 0x401e0e
mov edi, dword [ebp - 0x128]
lea eax, [ebp - 0x5ec]
push eax
push dword [ebp - 0x134]
mov dword [ebp - 0x130], edi
call fcn.004016a6
mov esi, eax
test esi, esi
jns 0x401eb4
push str.Failed_to_run_embedded_mode.
jmp 0x401e0e
lea eax, [ebp - 0x5ec]
push eax
push edi
push dword [ebp - 0x134]
call fcn.004014bb
mov esi, eax
test esi, esi
jns 0x401eb4
push str.Failed_to_run_per_machine_mode.
jmp 0x401e0e
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x130], eax
lea eax, [ebp - 0x5ec]
push eax
push dword [ebp - 0x134]
call fcn.004016ed
mov esi, eax
test esi, esi
jns 0x401eb4
push str.Failed_to_run_per_user_mode.
jmp 0x401e0e
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 0x401edc
push dword [ebp - 0x12c]
call fcn.00434266
test esi, esi
jns 0x401f03
cmp dword [ebp - 0x230], 0
jne 0x401f03
xor eax, eax
push eax
push eax
push eax
push 0x43b700
push str._Failed
push str.Setup
push eax
call fcn.00430b53
lea eax, [ebp - 0x534]
push eax
call fcn.004088a8
push dword [ebp - 0x4e8]
call fcn.00413e1f
test ebx, ebx
je 0x401f4a
mov eax, dword [ebp - 0x5b4]
test eax, eax
je 0x401f4a
cmp eax, 6
je 0x401f4a
push eax
call fcn.0040e6e0
push eax
push 0xa0000008
push 2
call fcn.00402003
add esp, 0xc
xor ebx, ebx
mov esi, 0x80070bc2
lea eax, [ebp - 0x5ec]
push eax
call fcn.00401a7c
cmp dword [ebp - 0x138], 0
je 0x401f64
call fcn.00435f0b
cmp dword [ebp - 0x140], 0
je 0x401f72
call fcn.0043564f
cmp dword [ebp - 0x144], 0
je 0x401f80
call fcn.004327bb
cmp dword [ebp - 0x128], 0
je 0x401f8f
call dword [sym.imp.ole32.dll_CoUninitialize]
cmp dword [ebp - 0x130], 0
je 0x401fcb
test esi, esi
jns 0x401fa0
mov edi, esi
jmp 0x401fa2
mov edi, dword [edi]
push ebx
call fcn.0040e1f1
push eax
push edi
push 0x20000007
push 2
call fcn.00402003
add esp, 0x10
test ebx, ebx
je 0x401fcb
push 0xa0000005
push 2
call fcn.00402003
pop ecx
pop ecx
mov edi, dword [ebp - 0x13c]
test edi, edi
je 0x401fdc
push 0
call fcn.00430755
test ebx, ebx
je 0x401fe5
call fcn.004011bf
test edi, edi
je 0x401ff0
push 0
call fcn.00430e21
mov ecx, dword [ebp - 4]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.004265cb
leave
ret 0x10