Function at 0x406e90
Capabilities:
Check os version
Create process on windows
Delete file
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x477cb2
mov eax, dword fs:[0]
push eax
mov eax, 0x1eb0
call fcn.0046eb00
mov eax, dword [0x49b3d4]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov esi, ecx
mov dword [ebp - 0x1e80], eax
lea eax, [ebp - 0x1e24]
mov dword [ebp - 0x1e7c], esi
call fcn.004025a9
push 0x3e8
lea ecx, [ebp - 0x1dec]
push ecx
push 0
mov dword [ebp - 4], 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x406f16
push 0x104
lea edx, [ebp - 0x41c]
push edx
lea eax, [ebp - 0x1dec]
push eax
call dword [sym.imp.KERNEL32.dll_GetShortPathNameW]
lea ecx, [ebp - 0x41c]
push ecx
lea edi, [ebp - 0x1e24]
call fcn.0040262a
push 0x110
lea edx, [ebp - 0x128]
push 0
mov edi, 0x114
push edx
mov dword [ebp - 0x12c], edi
call fcn.00465a00
mov ebx, dword [sym.imp.KERNEL32.dll_GetVersionExW]
add esp, 0xc
lea eax, [ebp - 0x12c]
push eax
call ebx
cmp dword [ebp - 0x128], 6
jae 0x40705d
lea ecx, [ebp - 0x161c]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea edx, [ebp - 0x161c]
push edx
push 0
push 0x484568
push 0x484018
call fcn.004087e0
add esp, 8
push eax
lea eax, [ebp - 0x161c]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
lea ecx, [ebp - 0x161c]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea edx, [ebp - 0x161c]
push edx
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectory]
lea ecx, [ebp - 0x1e40]
call fcn.00408400
lea eax, [ebp - 0x161c]
push eax
lea eax, [ebp - 0x1e78]
mov byte [ebp - 4], 1
call fcn.004025d0
push 0x484214
lea ecx, [ebp - 0x1e78]
push ecx
mov byte [ebp - 4], 2
call fcn.0040260f
push 0
lea edx, [ebp - 0x1e40]
mov edi, eax
push edx
or eax, 0xffffffff
call fcn.00403074
lea eax, [ebp - 0x1e78]
call fcn.0040263b
mov edi, eax
lea eax, [ebp - 0x1e24]
call fcn.0040263b
push eax
mov ecx, edi
call fcn.00406dc0
add esp, 4
test al, al
je 0x40703e
lea eax, [ebp - 0x1e78]
push eax
lea ecx, [ebp - 0x1e24]
call fcn.00403b27
lea ecx, [ebp - 0x1e78]
call fcn.00402601
lea ecx, [ebp - 0x1e40]
mov byte [ebp - 4], 0
call fcn.00402601
mov edi, 0x114
push 0x110
lea ecx, [ebp - 0x128]
push 0
push ecx
mov dword [ebp - 0x12c], edi
call fcn.00465a00
add esp, 0xc
lea edx, [ebp - 0x12c]
push edx
call ebx
cmp dword [ebp - 0x128], 6
jae 0x4070b3
call fcn.00406c60
test al, al
jne 0x4070b3
push 0x30
push 0
push 0x484218
push 0x484268
call fcn.004087e0
add esp, 8
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 0x38
lea eax, [ebp - 0x1eb8]
push 0
push eax
mov dword [ebp - 0x1ebc], 0x3c
call fcn.00465a00
add esp, 0xc
push str.unas
push 0x484278
call fcn.004087e0
add esp, 8
push eax
lea eax, [ebp - 0x1e5c]
call fcn.004025d0
push 0x110
lea ecx, [ebp - 0x128]
push 0
mov byte [ebp - 4], 3
push ecx
mov dword [ebp - 0x12c], edi
call fcn.00465a00
add esp, 0xc
lea edx, [ebp - 0x12c]
push edx
call ebx
cmp dword [ebp - 0x128], 6
jae 0x407172
call fcn.00406c60
test al, al
je 0x407172
push 0x48408c
push 0x484094
call fcn.004087e0
add esp, 8
push eax
lea eax, [ebp - 0x1e40]
call fcn.004025d0
mov byte [ebp - 4], 4
call fcn.00404e4c
mov esi, eax
lea ebx, [ebp - 0x1e5c]
call fcn.0040388e
lea ecx, [ebp - 0x1e40]
mov byte [ebp - 4], 3
call fcn.00402601
mov esi, dword [ebp - 0x1e7c]
lea eax, [ebp - 0x1e5c]
call fcn.0040263b
mov dword [ebp - 0x1eb0], eax
lea eax, [ebp - 0x1e24]
call fcn.0040263b
push ecx
mov dword [ebp - 0x1eac], eax
mov eax, esp
mov dword [ebp - 0x1eb4], 0
mov dword [ebp - 0x1ea0], 1
mov dword [ebp - 0x1e7c], esp
call fcn.00404e4c
lea eax, [ebp - 0x1e08]
call fcn.00404e50
push 0
push 0
lea edi, [ebp - 0x1e08]
call fcn.0040327c
mov eax, dword [ebp - 0x1e80]
push 0xffffffffffffffff
push eax
xor eax, eax
mov ecx, edi
call fcn.0040317c
lea eax, [esi + 0x18]
mov byte [ebp - 4], 5
call fcn.0040263b
push 0x48429c
push eax
push 0x484294
push 0x484280
push 0x48427c
mov ecx, edi
push ecx
call fcn.0040260f
push eax
call fcn.0040260f
push eax
call fcn.0040260f
push eax
call fcn.0040260f
push eax
call fcn.0040260f
mov eax, edi
call fcn.0040263b
push 0x4842a0
push 0x4842c8
mov dword [ebp - 0x1ea8], eax
mov dword [ebp - 0x1eb8], 0x40
call fcn.004087e0
add esp, 8
push eax
push str.INFO
mov ecx, esi
call fcn.00416a80
mov edx, dword [ebp - 0x1ea8]
push edx
push str.INFO
mov ecx, esi
call fcn.00416a80
lea eax, [ebp - 0x1ebc]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
jne 0x407334
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x4c7
jne 0x4072c0
push eax
push ecx
push str.ser_did_not_allow_elevation__error_code_d
push 0x484328
call fcn.004087e0
add esp, 0xc
push eax
lea ecx, [ebp - 0x61c]
push 0x100
push ecx
call dword [sym.imp.SHLWAPI.dll_wnsprintfW]
add esp, 0x10
lea edx, [ebp - 0x61c]
jmp 0x407302
push eax
push ecx
push 0x48432c
push 0x484088
call fcn.004087e0
add esp, 0xc
push eax
lea eax, [ebp - 0x214]
push 0x100
push eax
call fcn.00459658
add esp, 0x10
push 0
push 0
lea ecx, [ebp - 0x214]
push ecx
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
lea edx, [ebp - 0x214]
push edx
push str.WARNING
mov ecx, esi
call fcn.00416a80
lea ecx, [ebp - 0x1e08]
call fcn.00402601
lea ecx, [ebp - 0x1e5c]
call fcn.00402601
lea ecx, [ebp - 0x1e24]
call fcn.00402601
xor al, al
jmp 0x407357
lea ecx, [ebp - 0x1e08]
call fcn.00402601
lea ecx, [ebp - 0x1e5c]
call fcn.00402601
lea ecx, [ebp - 0x1e24]
call fcn.00402601
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00458db6
mov esp, ebp
pop ebp
ret