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

Disassembly:
mov eax, 0x611d4c
call fcn.0060cc48
sub esp, 0x18c
push ebx
push esi
mov esi, ecx
push edi
mov edi, edx
test esi, esi
jne 0x470232
xor eax, eax
jmp 0x470420
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.005e26d0
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 0x470294
cmp dword [ebp - 0x194], 6
cmove esi, ecx
test esi, esi
mov dword [ebp - 0x10], ebx
mov esi, dword [ebp - 0x20]
jne 0x4702ab
lea ecx, [ebp - 0x10]
call fcn.00419cc1
mov edi, dword [ebp - 0x10]
jmp 0x4702ed
lea ecx, [ebp - 0x14]
mov dword [ebp - 0x14], ebx
call fcn.00419c2b
test eax, eax
je 0x4702ca
lea ecx, [ebp - 0x14]
call fcn.00419b3c
test eax, eax
jne 0x470408
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 0x47040b
push 0x40
lea eax, [ebp - 0x7c]
mov dword [ebp - 0x80], 0x44
push ebx
push eax
call fcn.005e26d0
add esp, 0xc
mov dword [ebp - 0x54], 1
xorps xmm0, xmm0
movups xmmword [ebp - 0x34], xmm0
cmp dword [ebp + 8], ebx
je 0x470323
push 5
pop eax
jmp 0x470325
xor eax, eax
mov ecx, edi
mov word [ebp - 0x50], ax
call fcn.00419d34
test al, al
jne 0x47034d
cmp dword [ebp - 0x10], ebx
je 0x470345
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp - 0x10], ebx
lea ecx, [ebp - 0x10]
call fcn.00419eaf
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 0x4703b3
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 0x4703b0
push ebx
push dword [ebp - 0x10]
lea ecx, [ebp - 0x18]
push ecx
call eax
mov edi, dword [ebp - 0x14]
test eax, eax
je 0x4703ab
mov eax, 0x430
jmp 0x4703b6
mov dword [ebp - 0x18], ebx
jmp 0x4703b3
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 0x4703e2
push dword [ebp - 0x34]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x30], 0
je 0x4703f1
push dword [ebp - 0x30]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x4703fd
push dword [ebp - 0x18]
call eax
test edi, edi
je 0x470408
push edi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov edi, dword [ebp - 0x10]
test edi, edi
je 0x470416
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