Function at 0x404fb0
Capabilities:
Get common file path

Disassembly:
sub esp, 0x54c
mov eax, dword [0x44bd40]
xor eax, esp
mov dword [esp + 0x548], eax
push esi
push edi
push str.CMSIUpdatePlugIn::InstallMSI___n
push 0x44d160
mov esi, ecx
call fcn.00406f12
xor edi, edi
add esp, 8
cmp dword [esi + 0x3fc], edi
je 0x404ff9
call fcn.0041192b
test eax, eax
jne 0x404ff9
cmp dword [esi + 0x3fc], edi
jne 0x4052fd
call fcn.004117fe
test eax, eax
jne 0x405079
call fcn.0041181c
test eax, eax
jne 0x405079
call fcn.0041183f
test eax, eax
jne 0x405079
call fcn.004118e7
test eax, eax
je 0x40504b
push str.wiswin9x_
lea eax, [esp + 0x14c]
push 0x80
push eax
call fcn.00421daf
push str.instmsi.exe
push 0x80
lea ecx, [esp + 0x15c]
push ecx
jmp 0x4050d9
push str.could_not_match_the_OS_type_n
push 0x44d160
call fcn.00406a88
add esp, 8
pop edi
mov eax, 0x47e
pop esi
mov ecx, dword [esp + 0x548]
xor ecx, esp
call fcn.00421e14
add esp, 0x54c
ret
call fcn.0040f39a
test eax, eax
jne 0x4050b0
push str.IsWinNTUserAdmin___failed_n
push 0x44d160
call fcn.00406a88
add esp, 8
pop edi
mov eax, 5
pop esi
mov ecx, dword [esp + 0x548]
xor ecx, esp
call fcn.00421e14
add esp, 0x54c
ret
push str.wisWin2K_XP_
lea edx, [esp + 0x14c]
push 0x80
push edx
call fcn.00421daf
push str.instmsi.exe
push 0x80
lea eax, [esp + 0x15c]
push eax
call fcn.00421eaa
add esp, 0x18
push 0x7f
lea ecx, [esp + 0x1cd]
push 0
push ecx
mov byte [esp + 0x1d4], 0
call fcn.00421e30
push str._c:_msiinst__delayrebootq_
lea edx, [esp + 0x1d8]
push 0x80
push edx
call fcn.00421daf
push 0x43c668
lea eax, [esp + 0x1e4]
push 0x80
push eax
call fcn.00421eaa
push str._Q:A
lea ecx, [esp + 0x1f0]
push 0x80
push ecx
call fcn.00421eaa
lea edx, [esp + 0x178]
push edx
push str.Searching_for__s_...__n
push 0x44d160
call fcn.00406f12
add esp, 0x3c
lea eax, [esp + 8]
push eax
lea ecx, [esp + 0x14c]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x405316
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
lea edx, [esp + 0x148]
push edx
lea eax, [esp + 0x350]
push 0x100
push eax
call fcn.00421daf
push 0x43c668
lea ecx, [esp + 0x35c]
push 0x100
push ecx
call fcn.00421eaa
lea edx, [esp + 0x1e0]
push edx
lea eax, [esp + 0x368]
push 0x100
push eax
call fcn.00421eaa
push 0x103
lea ecx, [esp + 0x475]
push 0
push ecx
mov byte [esp + 0x47c], 0
call fcn.00421e30
push 0x103
lea edx, [esp + 0x27d]
push 0
push edx
mov byte [esp + 0x284], 0
call fcn.00421e30
add esp, 0x3c
or esi, 0xffffffff
call fcn.004118e7
test eax, eax
je 0x4052a8
push 0x104
lea eax, [esp + 0x450]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea ecx, [esp + 0x44c]
push ecx
lea edx, [esp + 0x24c]
push 0x104
push edx
call fcn.00421daf
push 0x43c560
lea eax, [esp + 0x258]
push 0x104
push eax
call fcn.00421eaa
push 0x43cbbc
lea ecx, [esp + 0x264]
push 0x104
push ecx
call fcn.00421eaa
lea edx, [esp + 0x26c]
push edx
push str.We_are_running_on_WinME_without_the_fixME_option.__Trying_to_hold_open_msiexec.exe___s_n
push 0x20
push 0x44d160
call fcn.00401110
add esp, 0x34
push 0
push 0
push 3
push 0
push 1
push 0x80000000
lea eax, [esp + 0x260]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
lea ecx, [esp + 0x34c]
push ecx
push str.Launching__s_n
push 1
push 0x44d160
call fcn.00401110
push 0
push 0
push 0
push 0
push 0xffffffffffffffff
lea edx, [esp + 0x370]
push 1
push edx
call fcn.0040fbfe
mov edi, eax
push edi
push str.Process_returned__d_n
push 1
push 0x44d160
call fcn.00401110
add esp, 0x3c
cmp esi, 0xffffffff
je 0x4052fd
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, edi
pop edi
pop esi
mov ecx, dword [esp + 0x548]
xor ecx, esp
call fcn.00421e14
add esp, 0x54c
ret
push 0x10
push str.Unsuccessful_Installation
push str.We_could_not_find_instmsi.exe.
push 0
mov ecx, esi
call fcn.004011f0
mov ecx, dword [esp + 0x550]
pop edi
pop esi
xor ecx, esp
mov eax, 2
call fcn.00421e14
add esp, 0x54c
ret