Function at 0x410e90
Capabilities:
Check if file exists
Create process on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x416d16
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, 0x2884
call fcn.00414e70
mov eax, dword [0x4251a4]
push ebx
push esi
push edi
xor ebx, ebx
push ebx
push ebx
push 1
push ebx
push str.void___cdecl_InstalledOk_wchar_t__
push 0x41c79c
xor eax, ebp
push str.void___cdecl_InstalledOk_wchar_t__
lea ecx, [esp + 0x6c]
mov dword [esp + 0x28a8], eax
call fcn.00408360
mov dword [esp + 0x289c], ebx
lea eax, [esp + 0x10]
push ebx
push eax
call fcn.0040fa60
mov byte [esp + 0x28a4], 1
xor eax, eax
mov esi, dword [sym.imp.MSVCR71.dll_wcsncpy]
mov word [esp + 0x70], bx
mov ecx, 0x81
lea edi, [esp + 0x72]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
xor eax, eax
mov word [esp + 0x278], bx
mov ecx, 0x81
lea edi, [esp + 0x27a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov word [esp + 0x480], bx
xor eax, eax
mov ecx, 0x81
lea edi, [esp + 0x482]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x18]
push 0x104
push ecx
lea edx, [esp + 0x78]
push edx
stosw word es:[edi], ax
call esi
mov edi, dword [sym.imp.SHLWAPI.dll_PathAppendW]
add esp, 0x14
push str...InstalledOK.ini
lea eax, [esp + 0x6c]
push eax
call edi
push 0x104
lea ecx, [esp + 0x6c]
push ecx
lea edx, [esp + 0x278]
push edx
call esi
add esp, 0xc
lea eax, [esp + 0x68]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x410ff4
lea ecx, [esp + 0x68]
push ecx
push 1
push str.hiintegrity
push str.Update
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
lea edx, [esp + 0x68]
push edx
push 0x104
mov dword [esp + 0x14], eax
lea eax, [esp + 0x480]
push eax
push str...installedok.dll
push str.path
push str.Update
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [esp + 0x478]
push ecx
lea edx, [esp + 0x274]
push edx
call edi
mov edi, dword [esp + 0xc]
jmp 0x411005
push str...installedok.dll
lea eax, [esp + 0x274]
push eax
call edi
xor edi, edi
lea ecx, [esp + 0x270]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4111b7
cmp edi, ebx
je 0x411164
call dword [sym.imp.SHELL32.dll_IsUserAnAdmin]
test eax, eax
jne 0x411164
mov word [esp + 0x680], bx
mov ecx, 0x81
lea edi, [esp + 0x682]
rep stosd dword es:[edi], eax
push 0x104
lea edx, [esp + 0x684]
push edx
push ebx
stosw word es:[edi], ax
call dword [sym.imp.KERNEL32.dll___A0H]
xor eax, eax
mov word [esp + 0x888], 0x22
mov ecx, 0x7ff
lea edi, [esp + 0x88a]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
push 0x104
lea eax, [esp + 0x274]
push eax
lea ecx, [esp + 0x892]
push ecx
call esi
mov esi, dword [sym.imp.MSVCR71.dll_wcscat]
lea edx, [esp + 0x894]
push 0x41c710
push edx
call esi
lea eax, [esp + 0x89c]
push 0x41c6f8
push eax
call esi
xor eax, eax
mov ecx, 0xf
lea edi, [esp + 0x30]
rep stosd dword es:[edi], eax
add esp, 0x1c
lea eax, [esp + 0x14]
lea ecx, [esp + 0x680]
lea edx, [esp + 0x888]
push eax
mov dword [esp + 0x18], 0x3c
mov dword [esp + 0x24], str.runas
mov dword [esp + 0x28], ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x1c], 0x40
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x411145
mov ecx, dword [esp + 0x4c]
push 0xffffffffffffffff
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [esp + 0x4c]
lea edx, [esp + 0xc]
push edx
push eax
mov dword [esp + 0x14], ebx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov ecx, dword [esp + 0x4c]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [esp + 0xc], ebx
jge 0x411145
mov byte [esp + 0x289c], bl
mov edx, dword [esp + 0x10]
push edx
jmp 0x4111c3
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea eax, [esp + 0x68]
push eax
call esi
lea ecx, [esp + 0x270]
push ecx
jmp 0x4111b5
lea edx, [esp + 0x270]
push edx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
cmp esi, ebx
je 0x411198
push 0x41c6e0
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x411198
push ebx
call eax
push esi
mov edi, eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp edi, ebx
jl 0x4111b7
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov esi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea ecx, [esp + 0x68]
push ecx
call esi
lea edx, [esp + 0x270]
push edx
call esi
mov byte [esp + 0x289c], bl
mov eax, dword [esp + 0x10]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [esp + 0x289c], 0xffffffff
lea ecx, [esp + 0x50]
call fcn.00408660
mov ecx, dword [esp + 0x2894]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x288c]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00414dc9
mov esp, ebp
pop ebp
ret