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

Disassembly:
mov eax, 0x61148a
call fcn.0060c3a8
sub esp, 0x18c
push ebx
push esi
mov esi, ecx
push edi
mov edi, edx
test esi, esi
jne 0x470336
xor eax, eax
jmp 0x470524
call fcn.00404f47
push eax
lea ecx, [ebp - 0x20]
call fcn.004065d8
push edi
push esi
lea eax, [ebp - 0x20]
xor ebx, ebx
push str.__s___s
push eax
mov dword [ebp - 4], ebx
call fcn.00406cc8
push 0x110
lea eax, [ebp - 0x194]
push ebx
push eax
call fcn.005e1e60
add esp, 0x1c
mov dword [ebp - 0x198], 0x114
lea eax, [ebp - 0x198]
mov esi, ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
xor ecx, ecx
inc ecx
test eax, eax
je 0x470398
cmp dword [ebp - 0x194], 6
cmove esi, ecx
test esi, esi
mov dword [ebp - 0x10], ebx
mov esi, dword [ebp - 0x20]
jne 0x4703af
lea ecx, [ebp - 0x10]
call fcn.00419c61
mov edi, dword [ebp - 0x10]
jmp 0x4703f1
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x14], ebx
call fcn.00419bcb
test eax, eax
je 0x4703ce
lea ecx, [ebp - 0x14]
call fcn.00419adc
test eax, eax
jne 0x47050c
lea eax, [ebp - 0x24]
push eax
push 4
lea eax, [ebp - 0x1c]
push eax
push 0x13
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_GetTokenInformation]
mov edi, dword [ebp - 0x1c]
test eax, eax
mov eax, ebx
cmove edi, dword [ebp - 0x14]
mov dword [ebp - 0x10], edi
test eax, eax
jne 0x47050f
push 0x40
lea eax, [ebp - 0x7c]
mov dword [ebp - 0x80], 0x44
push ebx
push eax
call fcn.005e1e60
add esp, 0xc
mov dword [ebp - 0x54], 1
xorps xmm0, xmm0
movups xmmword [ebp - 0x34], xmm0
cmp dword [ebp + 8], ebx
je 0x470427
push 5
pop eax
jmp 0x470429
xor eax, eax
mov ecx, edi
mov word [ebp - 0x50], ax
call fcn.00419cd4
test al, al
jne 0x470451
cmp dword [ebp - 0x10], ebx
je 0x470449
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x10], ebx
lea ecx, [ebp - 0x10]
call fcn.00419e4f
push str.userenv.dll
mov dword [ebp - 0x78], str.Winsta0Default
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], ebx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov edi, eax
mov dword [ebp - 0x14], edi
test edi, edi
je 0x4704b7
push str.CreateEnvironmentBlock
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
call edi
push str.DestroyEnvironmentBlock
push dword [ebp - 0x14]
mov dword [ebp - 0x24], eax
call edi
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x4704b4
push ebx
push dword [ebp - 0x10]
lea ecx, [ebp - 0x18]
push ecx
call eax
mov edi, dword [ebp - 0x14]
test eax, eax
je 0x4704af
mov eax, 0x430
jmp 0x4704ba
mov dword [ebp - 0x18], ebx
jmp 0x4704b7
mov edi, dword [ebp - 0x14]
push 0x30
pop eax
lea ecx, [ebp - 0x34]
push ecx
lea ecx, [ebp - 0x80]
push ecx
push ebx
push dword [ebp - 0x18]
push eax
push ebx
push ebx
push ebx
push esi
push ebx
push dword [ebp - 0x10]
call dword [sym.imp.ADVAPI32.dll_CreateProcessAsUserW]
cmp dword [ebp - 0x34], 0
mov ebx, eax
je 0x4704e6
push dword [ebp - 0x34]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x30], 0
je 0x4704f5
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x470501
push dword [ebp - 0x18]
call eax
test edi, edi
je 0x47050c
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov edi, dword [ebp - 0x10]
test edi, edi
je 0x47051a
push edi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esi - 0x10]
call fcn.00404ea9
mov eax, ebx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret