Function at 0x40c370
Capabilities:
Check os version
Create process on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x90c
mov eax, dword [0x4c4754]
xor eax, ebp
mov dword [ebp - 0x10], eax
cmp dword [ebp + 0x14], 0
je 0x40c392
mov eax, dword [ebp + 0x14]
mov dword [eax], 0
mov word [ebp - 0x838], 0
mov word [ebp - 0x420], 0
cmp dword [ebp + 0xc], 0
je 0x40c3b5
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x8f8], ecx
jmp 0x40c3bf
mov dword [ebp - 0x8f8], 0x4906ec
cmp dword [ebp + 8], 0
je 0x40c3d0
mov edx, dword [ebp + 8]
mov dword [ebp - 0x8fc], edx
jmp 0x40c3da
mov dword [ebp - 0x8fc], 0x4906f0
mov eax, dword [ebp - 0x8f8]
push eax
mov ecx, dword [ebp - 0x8fc]
push ecx
push 0x4906f4
lea edx, [ebp - 0x838]
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
cmp dword [ebp + 0x10], 0
je 0x40c425
mov eax, dword [ebp + 0x10]
push eax
lea ecx, [ebp - 0x838]
push ecx
push str.__s___s
lea edx, [ebp - 0x420]
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
jmp 0x40c441
lea eax, [ebp - 0x838]
push eax
push str.__s_
lea ecx, [ebp - 0x420]
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push 1
push 0
lea edx, [ebp - 0x420]
push edx
push str.RunProcess____
call fcn.0040ffb0
add esp, 0x10
mov dword [ebp - 0x888], 0
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x424], 0
xor eax, eax
mov dword [ebp - 0x884], eax
mov dword [ebp - 0x880], eax
mov dword [ebp - 0x87c], eax
mov dword [ebp - 0x878], eax
push 0x3c
push 0
lea ecx, [ebp - 0x874]
push ecx
call fcn.00466b50
add esp, 0xc
mov dword [ebp - 0x874], 0x3c
cmp dword [ebp + 0x20], 0
je 0x40c574
call dword [sym.imp.KERNEL32.dll_GetVersion]
and eax, 0xffff
movzx edx, ax
and edx, 0xff
movzx eax, dl
cmp eax, 6
jb 0x40c574
push 1
push 0
push 0
push str.Run_process_as_admin
call fcn.0040ffb0
add esp, 0x10
mov ecx, dword [ebp + 0x18]
neg ecx
sbb ecx, ecx
and ecx, 0xffffff40
add ecx, 0x100
or ecx, 0x600
mov dword [ebp - 0x870], ecx
mov dword [ebp - 0x83c], 0
mov dword [ebp - 0x86c], 0
mov dword [ebp - 0x868], str.runas
lea edx, [ebp - 0x838]
mov dword [ebp - 0x864], edx
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x860], eax
mov dword [ebp - 0x85c], 0
mov dword [ebp - 0x858], 1
lea ecx, [ebp - 0x874]
push ecx
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x40c572
mov dword [ebp - 0x888], 1
lea edx, [ebp - 0x83c]
mov dword [ebp - 0xc], edx
jmp 0x40c5df
push 0x44
push 0
lea eax, [ebp - 0x8d0]
push eax
call fcn.00466b50
add esp, 0xc
mov dword [ebp - 0x8d0], 0x44
lea ecx, [ebp - 0x884]
push ecx
lea edx, [ebp - 0x8d0]
push edx
mov eax, dword [ebp + 8]
push eax
push 0
push 0
push 0
push 0
push 0
lea ecx, [ebp - 0x420]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessW]
test eax, eax
je 0x40c5df
mov dword [ebp - 0x888], 1
lea edx, [ebp - 0x880]
mov dword [ebp - 0x424], edx
lea eax, [ebp - 0x884]
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0x888], 0
jne 0x40c651
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x8d4], eax
mov ecx, dword [ebp - 0x8d4]
push ecx
lea edx, [ebp - 0x420]
push edx
push str._..._Cant_run
push 0
call fcn.0040b330
add esp, 0x10
cmp dword [ebp - 0x8d4], 0
jg 0x40c628
mov eax, dword [ebp - 0x8d4]
mov dword [ebp - 0x900], eax
jmp 0x40c646
mov ecx, dword [ebp - 0x8d4]
and ecx, 0xffff
or ecx, 0x70000
or ecx, 0x80000000
mov dword [ebp - 0x900], ecx
mov eax, dword [ebp - 0x900]
jmp 0x40c801
mov dword [ebp - 8], 0
mov dword [ebp - 4], 0
cmp dword [ebp + 0x18], 0
je 0x40c758
cmp dword [ebp + 0x1c], 0
je 0x40c729
mov dword [ebp - 0x8d8], 0
cmp dword [ebp - 0x8d8], 0
jne 0x40c727
push 0x4ff
push 0xffffffffffffffff
push 0
mov edx, dword [ebp - 0xc]
push edx
push 1
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0
je 0x40c6bd
cmp dword [ebp - 8], 0x80
je 0x40c6bd
mov dword [ebp - 0x904], 0
jmp 0x40c6c7
mov dword [ebp - 0x904], 1
mov eax, dword [ebp - 0x904]
mov dword [ebp - 0x8d8], eax
push 1
push 0
push 0
push 0
lea ecx, [ebp - 0x8f4]
push ecx
call dword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x40c722
cmp dword [ebp - 0x8f0], 0x12
jne 0x40c706
mov edx, dword [ebp - 0x8ec]
push edx
call dword [sym.imp.USER32.dll_PostQuitMessage]
jmp 0x40c758
lea eax, [ebp - 0x8f4]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea ecx, [ebp - 0x8f4]
push ecx
call dword [sym.imp.USER32.dll_DispatchMessageW]
jmp 0x40c6d3
jmp 0x40c67d
jmp 0x40c73a
push 0xffffffffffffffff
mov edx, dword [ebp - 0xc]
mov eax, dword [edx]
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov dword [ebp - 8], eax
lea ecx, [ebp - 4]
push ecx
mov edx, dword [ebp - 0xc]
mov eax, dword [edx]
push eax
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
cmp dword [ebp + 0x14], 0
je 0x40c758
mov ecx, dword [ebp + 0x14]
mov edx, dword [ebp - 4]
mov dword [ecx], edx
push 1
mov eax, dword [ebp - 4]
push eax
push 0
push str._..._done
call fcn.0040ffb0
add esp, 0x10
cmp dword [ebp - 0x424], 0
je 0x40c790
mov ecx, dword [ebp - 0x424]
cmp dword [ecx], 0
je 0x40c790
mov edx, dword [ebp - 0x424]
mov eax, dword [edx]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0xc], 0
je 0x40c7aa
mov ecx, dword [ebp - 0xc]
cmp dword [ecx], 0
je 0x40c7aa
mov edx, dword [ebp - 0xc]
mov eax, dword [edx]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 8], 0
jne 0x40c7bc
mov dword [ebp - 0x908], 0
jmp 0x40c7fb
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jg 0x40c7d4
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x90c], eax
jmp 0x40c7ef
call dword [sym.imp.KERNEL32.dll_GetLastError]
and eax, 0xffff
or eax, 0x70000
or eax, 0x80000000
mov dword [ebp - 0x90c], eax
mov ecx, dword [ebp - 0x90c]
mov dword [ebp - 0x908], ecx
mov eax, dword [ebp - 0x908]
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00466b32
mov esp, ebp
pop ebp
ret