Function at 0x40520d
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.0042f710
push 0x4e8
lea eax, [ebp - 0x630]
mov dword [ebp - 0x124], ebx
push ebx
push eax
mov dword [ebp - 0x130], ebx
call fcn.0042f710
add esp, 0x18
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.00440912
push ebx
push 3
call fcn.00440ac6
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x154]
push eax
push esi
call fcn.00401206
mov esi, eax
test esi, esi
jns 0x4052d1
push str.Failed_to_parse_command_line.
push esi
call fcn.00440657
pop ecx
pop ecx
mov edi, ebx
jmp 0x40554c
push edi
lea eax, [ebp - 0x630]
push eax
call fcn.00404361
mov esi, eax
test esi, esi
jns 0x4052eb
push str.Failed_to_initialize_engine_state.
jmp 0x4052c2
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x604], eax
call fcn.0040568e
push 0
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov esi, eax
test esi, esi
jns 0x405310
push str.Failed_to_initialize_COM.
jmp 0x4052c2
xor edi, edi
inc edi
call fcn.004400c9
mov esi, eax
test esi, esi
jns 0x405330
push str.Failed_to_initialize_Cryputil.
push esi
call fcn.00440657
pop ecx
pop ecx
jmp 0x40554c
mov dword [ebp - 0x144], edi
call fcn.004412d3
mov esi, eax
test esi, esi
jns 0x405348
push str.Failed_to_initialize_Regutil.
jmp 0x405323
mov dword [ebp - 0x140], edi
call fcn.00442f7b
mov esi, eax
test esi, esi
jns 0x405360
push str.Failed_to_initialize_Wiutil.
jmp 0x405323
mov dword [ebp - 0x13c], edi
call fcn.004439da
mov esi, eax
test esi, esi
jns 0x405378
push str.Failed_to_initialize_XML_util.
jmp 0x405323
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 0x4053d1
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x4053b0
movzx esi, si
or esi, 0x80070000
test esi, esi
js 0x4053b7
mov esi, 0x80004005
push esi
push 0x98
push str.c:_agent_work138_s_src_burnengineengine.cpp
call fcn.004038f5
push str.Failed_to_get_OS_info.
jmp 0x405323
push 0
lea eax, [ebp - 0x124]
push eax
call fcn.004034ef
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.3.14.0.5722
push 0x20000001
push 2
call fcn.00405678
add esp, 0x20
cmp dword [ebp - 0x124], ebx
je 0x405429
push dword [ebp - 0x124]
call fcn.0040278d
and dword [ebp - 0x124], ebx
lea eax, [ebp - 0x630]
push eax
call fcn.00417523
mov esi, eax
test esi, esi
jns 0x405445
push str.Failed_to_initialize_core.
jmp 0x405323
mov eax, dword [ebp - 0x1a0]
sub eax, 0
je 0x405516
sub eax, 1
je 0x4054ee
sub eax, 1
je 0x4054c6
sub eax, 1
je 0x40549e
sub eax, 1
je 0x40547b
mov esi, 0x8000ffff
push str.Invalid_run_mode.
jmp 0x405323
push dword [ebp + 0x14]
lea eax, [ebp - 0x530]
push eax
call fcn.00404d04
mov esi, eax
test esi, esi
jns 0x405538
push str.Failed_to_run_RunOnce_mode.
jmp 0x405323
lea eax, [ebp - 0x630]
mov dword [ebp - 0x130], edi
push eax
push dword [ebp - 0x12c]
call fcn.00404b08
mov esi, eax
test esi, esi
jns 0x405538
push str.Failed_to_run_embedded_mode.
jmp 0x405323
lea eax, [ebp - 0x630]
push eax
push dword [ebp - 0x134]
push dword [ebp - 0x12c]
call fcn.00404971
mov esi, eax
test esi, esi
jns 0x405538
push str.Failed_to_run_per_machine_mode.
jmp 0x405323
lea eax, [ebp - 0x630]
mov dword [ebp - 0x130], edi
push eax
push dword [ebp - 0x12c]
call fcn.00404b65
mov esi, eax
test esi, esi
jns 0x405538
push str.Failed_to_run_per_user_mode.
jmp 0x405323
lea eax, [ebp - 0x630]
push eax
push dword [ebp - 0x134]
call fcn.00404db5
mov esi, eax
test esi, esi
jns 0x405538
push str.Failed_to_run_untrusted_mode.
jmp 0x405323
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 0x405560
push dword [ebp - 0x124]
call fcn.0040278d
test esi, esi
jns 0x405572
cmp dword [ebp - 0x23c], 0
jne 0x405572
call fcn.00414264
lea eax, [ebp - 0x578]
push eax
call fcn.0040d8c8
push dword [ebp - 0x520]
call fcn.0041a8bc
call fcn.0041ab06
test ebx, ebx
je 0x4055be
mov eax, dword [ebp - 0x5f8]
test eax, eax
je 0x4055be
cmp eax, 6
je 0x4055be
push eax
call fcn.004143c4
push eax
push 0xa0000008
push 2
call fcn.00405678
add esp, 0xc
mov esi, 0x80070bc2
xor ebx, ebx
lea eax, [ebp - 0x630]
push eax
call fcn.0040501c
cmp dword [ebp - 0x138], 0
je 0x4055d8
call fcn.00443ea2
cmp dword [ebp - 0x13c], 0
je 0x4055e6
call fcn.00443381
cmp dword [ebp - 0x140], 0
je 0x4055f4
call fcn.0044191f
cmp dword [ebp - 0x144], 0
je 0x405602
call fcn.004401d8
test edi, edi
je 0x40560c
call dword [sym.imp.ole32.dll_CoUninitialize]
cmp dword [ebp - 0x130], 0
je 0x40564e
test esi, esi
jns 0x40561d
mov edi, esi
jmp 0x405625
mov eax, dword [ebp - 0x148]
mov edi, dword [eax]
push ebx
call fcn.00413df9
push eax
push edi
push 0x20000007
push 2
call fcn.00405678
add esp, 0x10
test ebx, ebx
je 0x40564e
push 0xa0000005
push 2
call fcn.00405678
pop ecx
pop ecx
push 0
call fcn.00440535
test ebx, ebx
je 0x40565e
call fcn.00404674
push 0
call fcn.00440c18
mov ecx, dword [ebp - 4]
mov eax, esi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0042de30
leave
ret 0x14