Function at 0x405af0
Capabilities:
Get common file path

Disassembly:
push 0xffffffffffffffff
push 0x42ef9e
mov eax, dword fs:[0]
push eax
sub esp, 0x11c
mov eax, dword [0x43e0c0]
xor eax, esp
mov dword [esp + 0x118], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x43e0c0]
xor eax, esp
push eax
lea eax, [esp + 0x130]
mov dword fs:[0], eax
mov esi, ecx
call fcn.0040b86e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405b47
push 0x80004005
call fcn.004011c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [esp + 0x14], edi
push str.Set_Up_Start
push str.PKGMGR
lea ebp, [esi + 0xc1c]
push str._s_t_s
push ebp
mov dword [esp + 0x148], 0
call fcn.00408c80
add esp, 0x10
cmp dword [esi + 0xa8], 0
jne 0x405bcb
push 0x431db0
push str.PKGMGR
push str._s_t_s
push ebp
call fcn.00408c80
add esp, 0x10
or ebx, 0xffffffff
lea eax, [edi - 0x10]
mov dword [esp + 0x138], ebx
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebx
dec ebx
test ebx, ebx
jg 0x405bc4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x405f0d
call fcn.0040b86e
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x405be5
push 0x80004005
call fcn.004011c0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [esp + 0x20], ebx
cmp dword [esi + 0xc30], 0
mov byte [esp + 0x138], 1
jne 0x405c43
push str.Run_PkgMgr_t_not_component
push ebp
call fcn.00408c80
lea eax, [ebx - 0x10]
or ebx, 0xffffffff
add esp, 8
mov byte [esp + 0x138], 0
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405ba4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x405ba4
push 4
push str._iu:
lea ecx, [esp + 0x1c]
call fcn.00401750
xor edi, edi
cmp dword [esi + 0xc30], edi
jle 0x405ca4
lea ecx, [ecx]
test edi, edi
jl 0x405ced
cmp edi, dword [esi + 0xc30]
jge 0x405ced
mov ecx, dword [esi + 0xc2c]
lea eax, [ecx + edi*4]
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x1c]
call fcn.00403b20
push 1
push 0x4326b8
lea ecx, [esp + 0x1c]
call fcn.00403b20
add edi, 1
cmp edi, dword [esi + 0xc30]
jl 0x405c60
push 0xb
push str.__norestart
lea ecx, [esp + 0x1c]
call fcn.00403b20
push 0x54
mov dword [esp + 0x20], 0
call fcn.00409b1f
add esp, 4
mov dword [esp + 0x24], eax
test eax, eax
mov byte [esp + 0x138], 2
je 0x405cf2
lea edx, [esp + 0x1c]
push edx
push 0
push 0x3e8
push 0
mov ecx, eax
call fcn.004092c0
jmp 0x405cf4
jmp fcn.00409d9a
xor eax, eax
mov dword [esp + 0x1c], eax
push 0x104
lea eax, [esp + 0x2c]
push eax
mov byte [esp + 0x140], 1
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
push str.Set_Up
push str.PKGMGR
push str._s_t_s
push ebp
call fcn.00408c80
mov ebx, dword [esp + 0x24]
push ebx
push str.pkgmgr.exe
lea ecx, [esp + 0x40]
push ecx
push str._s_t_s_t_s
push ebp
call fcn.00408c80
add esi, 0x528
add esp, 0x24
mov ecx, esi
call fcn.00401050
test eax, eax
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
jne 0x405d6a
call edi
push eax
push str.Redirect_Disable__d
push ebp
call fcn.00408c80
add esp, 0xc
push ebx
push str.pkgmgr.exe
lea edx, [esp + 0x30]
push edx
mov ecx, esi
call fcn.00401080
test eax, eax
jne 0x405de2
call edi
push eax
push 0x432670
push str._s___d
push ebp
call fcn.00408c80
mov ecx, dword [esp + 0x2c]
add esp, 0x10
test ecx, ecx
je 0x405dac
mov eax, dword [ecx + 0x20]
cmp dword [eax + 0x20], 0
je 0x405dac
call fcn.00409480
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
or ebx, 0xffffffff
mov byte [esp + 0x138], 0
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405dd6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
jmp 0x405ba7
call fcn.0040b7c2
mov ecx, dword [eax + 4]
call fcn.0040d214
or ebx, 0xffffffff
push ebx
mov ecx, esi
mov byte [esp + 0x13c], 3
call fcn.00401130
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x405e18
mov edx, dword [ecx + 0x20]
cmp dword [edx + 0x20], 0
je 0x405e18
call fcn.00409480
mov ecx, esi
call fcn.00401060
test eax, eax
jne 0x405e34
call edi
push eax
push str.RevertReDirect__d
push ebp
call fcn.00408c80
add esp, 0xc
mov ecx, esi
call fcn.00401180
test eax, eax
je 0x405e9d
cmp eax, 0xbc2
je 0x405e9d
push eax
push 0x432634
push ebp
call fcn.00408c80
add esp, 0xc
lea ecx, [esp + 0x1b]
mov byte [esp + 0x138], 1
call fcn.00403ed0
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x138], 0
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405dd6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
jmp 0x405ba7
push eax
push 0x432610
push ebp
call fcn.00408c80
add esp, 0xc
lea ecx, [esp + 0x1b]
mov byte [esp + 0x138], 1
call fcn.00403ed0
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x138], 0
lea ecx, [eax + 0xc]
mov edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x405ee4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
mov dword [esp + 0x138], ebx
lea ecx, [eax + 0xc]
lock xadd dword [ecx], ebx
dec ebx
test ebx, ebx
jg 0x405f08
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x130]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x118]
xor ecx, esp
call fcn.00419953
add esp, 0x128
ret