Function at 0x413f90
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x218
mov eax, dword [0x5e3fe4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 0xc]
lea eax, [ebp - 0x210]
push edi
mov dword [ebp - 0x214], ecx
push dword [esi]
push 0x5c5c9c
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
mov edi, dword [ebp + 8]
add esp, 0xc
cmp word [ebp - 0x210], 0
mov ebx, dword [sym.imp.msi.dll_MsiSummaryInfoGetPropertyCount]
je 0x414014
lea ecx, [ebp - 0x210]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x413fe2
sub ecx, edx
lea eax, [ebp - 0x210]
sar ecx, 1
push ecx
push eax
call fcn.00414c10
push eax
push str.ALLUSERS
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
cmp dword [esi], 2
jne 0x41403b
push 1
push 0x5c5894
call fcn.00414c10
push eax
push 0x5c5898
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
cmp word [esi + 0x210], 0
lea edx, [esi + 0x210]
je 0x414086
mov ecx, edx
lea eax, [ecx + 2]
mov dword [ebp - 0x218], eax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414056
sub ecx, dword [ebp - 0x218]
sar ecx, 1
push ecx
push edx
call fcn.00414c10
push eax
push str.INSTALLFOLDER
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
push 4
push str.true
call fcn.00414c10
push eax
push str.ARPNOMODIFY
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
push 4
push str.true
call fcn.00414c10
push eax
push str.ARPNOREMOVE
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
push 4
push str.true
call fcn.00414c10
push eax
push str.ARPNOREPAIR
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
cmp word [esi + 8], 0
lea eax, [esi + 8]
je 0x414114
push 0xffffffffffffffff
push eax
call fcn.00414c10
push eax
push str.MANAGEDADDINS
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
mov eax, dword [ebp - 0x214]
cmp word [eax + 0xf0c], 0
lea edx, [eax + 0xf0c]
je 0x414162
mov ecx, edx
lea esi, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414130
sub ecx, esi
sar ecx, 1
push ecx
push edx
call fcn.00414c10
push eax
push str.COMPANYID
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
mov eax, dword [ebp - 0x214]
cmp word [eax + 0x70c], 0
lea edx, [eax + 0x70c]
je 0x4141a9
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414177
sub ecx, esi
sar ecx, 1
push ecx
push edx
call fcn.00414c10
push eax
push str.SECURITYURL
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
mov eax, dword [ebp - 0x214]
cmp word [eax + 0x20c], 0
lea edx, [eax + 0x20c]
je 0x4141f2
mov ecx, edx
lea esi, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4141c0
sub ecx, esi
sar ecx, 1
push ecx
push edx
call fcn.00414c10
push eax
push str.SERVERNAME
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
mov eax, dword [ebp - 0x214]
cmp word [eax + 0x30c], 0
lea edx, [eax + 0x30c]
je 0x414239
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414207
sub ecx, esi
sar ecx, 1
push ecx
push edx
call fcn.00414c10
push eax
push str.QUERYURL
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
mov eax, dword [ebp - 0x214]
cmp word [eax + 0xb0c], 0
lea edx, [eax + 0xb0c]
je 0x414282
mov ecx, edx
lea esi, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414250
sub ecx, esi
sar ecx, 1
push ecx
push edx
call fcn.00414c10
push eax
push str.STSURL
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
mov eax, dword [ebp - 0x214]
cmp word [eax + 0x100c], 0
lea edx, [eax + 0x100c]
je 0x4142c3
mov ecx, edx
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414297
sub ecx, esi
sar ecx, 1
push ecx
push edx
call fcn.00414c10
push eax
push str.TIMEOUT
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
push 0x5ed3f0
xor eax, eax
push 0x106
mov word [0x5ed3f0], ax
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
xor ecx, ecx
nop dword [eax]
movzx eax, word [ecx + 0x5ed3f0]
lea ecx, [ecx + 2]
mov word [ebp + ecx - 0x212], ax
test ax, ax
jne 0x4142e0
lea ecx, [ebp - 0x210]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414300
sub ecx, edx
sar ecx, 1
add ecx, 0xffffffff
js 0x414338
mov eax, 0x2f
nop dword [eax]
cmp word [ebp + ecx*2 - 0x210], 0x5c
jne 0x414333
mov word [ebp + ecx*2 - 0x210], ax
sub ecx, 1
jns 0x414320
cmp word [ebp - 0x210], 0
je 0x414382
lea ecx, [ebp - 0x210]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414350
sub ecx, edx
lea eax, [ebp - 0x210]
sar ecx, 1
push ecx
push eax
call fcn.00414c10
push eax
push str.SESSIONDIR
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
lea ecx, [ebp - 0x210]
call fcn.0040c570
cmp word [ebp - 0x210], 0
je 0x4143d2
lea ecx, [ebp - 0x210]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4143a0
sub ecx, edx
lea eax, [ebp - 0x210]
sar ecx, 1
push ecx
push eax
call fcn.00414c10
push eax
push str.VERSIONS
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
push dword [0x5ed354]
lea eax, [ebp - 0x210]
push 0x5c5c9c
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
cmp word [ebp - 0x210], 0
je 0x41442e
lea ecx, [ebp - 0x210]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414400
sub ecx, edx
lea eax, [ebp - 0x210]
sar ecx, 1
push ecx
push eax
call fcn.00414c10
push eax
push str.BITS
push edi
call ebx
mov dword [0x5e4aa8], eax
test eax, eax
jne 0x414457
push 1
push 0x5c5894
call fcn.00414c10
push eax
push str.ISBOOTSTRAPPER
push edi
call ebx
mov ecx, dword [ebp - 0x218]
xor edx, edx
test eax, eax
mov dword [0x5e4aa8], eax
cmove ecx, edx
jmp 0x41445d
mov ecx, dword [ebp - 0x218]
mov eax, ecx
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0054e183
mov esp, ebp
pop ebp
ret 8