Function at 0x40d530
Capabilities:
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x587b57
mov eax, dword fs:[0]
push eax
sub esp, 0x32c
mov eax, dword [0x5f50fc]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x324], edi
mov ebx, dword [ebp + 8]
push 0xe80
push 0
push ebx
call fcn.00568420
add esp, 0xc
call fcn.00423a43
mov ecx, eax
test ecx, ecx
je 0x40daa8
mov eax, dword [ecx]
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x330], esi
mov dword [ebp - 4], 0
call fcn.00423a43
mov ecx, eax
test ecx, ecx
je 0x40dab2
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x320], eax
mov eax, dword [edi + 0x658]
lea edx, [ebp - 0x32c]
push edx
lea edx, [ebp - 0x31c]
mov byte [ebp - 4], 1
lea ecx, [edi + 0x658]
mov dword [ebp - 0x32c], 0
push edx
push str.DisplayIconPath
push str._uninstall_info_
mov dword [ebp - 0x31c], 0
call dword [eax + 0x10]
test eax, eax
je 0x40d733
mov eax, dword [ebp - 0x31c]
test eax, eax
je 0x40d733
cmp dword [eax], 0
jle 0x40d6a1
push 0x208
lea eax, [ebp - 0x318]
push 0
push eax
call fcn.00568420
add esp, 0xc
lea eax, [ebp - 0x318]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov eax, dword [ebp - 0x31c]
lea ecx, [ebp - 0x320]
push dword [eax + 0x290]
call fcn.00408350
lea eax, [ebp - 0x318]
push eax
push str._SysFolder_
lea ecx, [ebp - 0x320]
call fcn.0040e190
push dword [edi + 0x644]
lea ecx, [ebp - 0x320]
push str._InsFolder_
call fcn.0040e190
mov edi, dword [ebp - 0x320]
lea eax, [ebx + 0x208]
push edi
push 0x104
push eax
call fcn.0056b3b9
add esp, 0xc
jmp 0x40d71a
lea eax, [ebp - 0x328]
mov ecx, edi
push eax
call fcn.0040cff0
push eax
lea ecx, [ebp - 0x330]
mov byte [ebp - 4], 3
call fcn.00406840
mov edx, dword [ebp - 0x328]
or eax, 0xffffffff
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40d6e1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x330]
lea eax, [ebp - 0x320]
push esi
push dword [edi + 0x644]
push str._s_s
push eax
call fcn.00406e60
mov edi, dword [ebp - 0x320]
lea eax, [ebx + 0x208]
push edi
push 0x104
push eax
call fcn.0056b3b9
add esp, 0x1c
mov ecx, dword [ebp - 0x324]
push dword [ebp - 0x31c]
add ecx, 0x658
mov eax, dword [ecx]
call dword [eax + 0x14]
jmp 0x40d7ac
lea eax, [ebp - 0x328]
mov ecx, edi
push eax
call fcn.0040cff0
push eax
lea ecx, [ebp - 0x330]
mov byte [ebp - 4], 2
call fcn.00406840
mov edx, dword [ebp - 0x328]
or eax, 0xffffffff
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40d773
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x330]
lea eax, [ebp - 0x320]
push esi
push dword [edi + 0x644]
push str._s_s
push eax
call fcn.00406e60
mov edi, dword [ebp - 0x320]
lea eax, [ebx + 0x208]
push edi
push 0x104
push eax
call fcn.0056b3b9
add esp, 0x1c
mov ecx, dword [ebp - 0x324]
lea edx, [ebp - 0x32c]
push edx
add ecx, 0x658
mov dword [ebp - 0x32c], 0
lea edx, [ebp - 0x31c]
mov dword [ebp - 0x31c], 0
push edx
push str.DisplayName
mov eax, dword [ecx]
push str._uninstall_info_
call dword [eax + 0x10]
test eax, eax
je 0x40d835
mov edx, dword [ebp - 0x31c]
cmp dword [edx], 0
jle 0x40d81a
push dword [edx + 0x290]
lea eax, [ebx + 0x410]
push 0x104
push eax
call fcn.0056b3b9
mov edx, dword [ebp - 0x31c]
add esp, 0xc
jmp 0x40d823
xor eax, eax
mov word [ebx + 0x410], ax
mov ecx, dword [ebp - 0x324]
add ecx, 0x658
push edx
mov eax, dword [ecx]
call dword [eax + 0x14]
mov ecx, dword [ebp - 0x324]
lea edx, [ebp - 0x32c]
push edx
add ecx, 0x658
lea edx, [ebp - 0x31c]
push edx
push str.UninstallName
push str._uninstall_info_
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
je 0x40d8a0
mov edx, dword [ebp - 0x31c]
cmp dword [edx], 0
jle 0x40d889
push dword [edx + 0x290]
push 0x104
push ebx
call fcn.0056b3b9
mov edx, dword [ebp - 0x31c]
add esp, 0xc
jmp 0x40d88e
xor eax, eax
mov word [ebx], ax
mov ecx, dword [ebp - 0x324]
add ecx, 0x658
push edx
mov eax, dword [ecx]
call dword [eax + 0x14]
mov ecx, dword [ebp - 0x324]
push dword [ecx + 0xdb04]
mov eax, dword [ecx + 0x644]
push eax
push dword [ecx + 0xdafc]
push eax
push str.__s_s___UninstallRemove__s_s
lea eax, [ebx + 0x618]
push 0x22c
push eax
call fcn.00402f80
add esp, 0x1c
call fcn.00423a43
mov ecx, eax
test ecx, ecx
je 0x40dabc
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x334], eax
lea eax, [ebp - 0x334]
mov byte [ebp - 4], 4
push 0x1388
push eax
call fcn.00406d10
push 0
push 0
push dword [ebp - 0x334]
call fcn.0056e2b3
movzx eax, ax
add esp, 0x14
and eax, 0x3ff
cmp eax, 1
jne 0x40d983
lea eax, [ebp - 0x338]
mov dword [ebp - 0x338], 0x202a
push eax
lea eax, [ebp - 0x110]
mov dword [ebp - 0x328], 0x202c
push 0x80
push eax
call fcn.0056b3b9
push 0x598f88
lea eax, [ebp - 0x110]
push 0x80
push eax
call fcn.0056cddc
lea eax, [ebp - 0x328]
push eax
lea eax, [ebp - 0x110]
push 0x80
push eax
call fcn.0056cddc
add esp, 0x24
jmp 0x40d99c
push 0x598f88
lea eax, [ebp - 0x110]
push 0x80
push eax
call fcn.0056b3b9
add esp, 0xc
lea eax, [ebp - 0x110]
push eax
lea eax, [ebx + 0xa70]
push 0x104
push eax
call fcn.0056b3b9
mov ecx, dword [ebp - 0x324]
lea edx, [ebp - 0x32c]
add esp, 0xc
add ecx, 0x658
mov eax, dword [ecx]
push edx
lea edx, [ebp - 0x31c]
push edx
push str.Version
push str._Startup_
call dword [eax + 0x10]
test eax, eax
je 0x40da2c
mov edx, dword [ebp - 0x31c]
cmp dword [edx], 0
jle 0x40da11
push dword [edx + 0x290]
lea eax, [ebx + 0xc78]
push 0x104
push eax
call fcn.0056b3b9
mov edx, dword [ebp - 0x31c]
add esp, 0xc
jmp 0x40da1a
xor eax, eax
mov word [ebx + 0xc78], ax
mov ecx, dword [ebp - 0x324]
add ecx, 0x658
push edx
mov eax, dword [ecx]
call dword [eax + 0x14]
mov edx, dword [ebp - 0x334]
or eax, 0xffffffff
mov byte [ebp - 4], 1
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40da4e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
mov byte [ebp - 4], 0
or edi, 0xffffffff
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40da6c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], edi
dec edi
test edi, edi
jg 0x40da88
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005663a7
mov esp, ebp
pop ebp
ret 4
push 0x80004005
call fcn.00406af0
push 0x80004005
call fcn.00406af0
push 0x80004005
call fcn.00406af0
int3