Function at 0x40435d
Capabilities:
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c
mov eax, dword [0x421030]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov esi, edx
mov edi, ecx
call fcn.00402ca2
xor ebx, ebx
mov byte [esi + 0x224], 0
mov dword [esi + 0x228], edi
mov dword [esi + 0x22c], str.YourFileDownloader
mov dword [esi + 0x1aa0], ebx
mov dword [esi + 0x1aa4], ebx
mov dword [esi + 0x1cb0], ebx
cmp edi, ebx
je 0x4045f3
mov edi, 0x103
push edi
lea eax, [esi + 0x232]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x4045f3
push 1
push 0x1a
lea eax, [esi + 0x642]
push eax
push ebx
mov ebx, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
call ebx
test eax, eax
je 0x4045f3
push 1
push 0x16
lea eax, [esi + 0x84a]
push eax
push 0
call ebx
test eax, eax
je 0x4045f3
push 1
push 0x19
lea eax, [esi + 0xc5a]
push eax
push 0
call ebx
test eax, eax
je 0x4045f3
lea eax, [esi + 0x642]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40441b
sub eax, edx
sar eax, 1
push str.YourFileDownloader
mov ebx, 0x41e7a8
mov ecx, edi
sub ecx, eax
push ebx
push ecx
lea eax, [esi + eax*2 + 0x642]
push eax
call fcn.004083fd
lea eax, [esi + 0x84a]
add esp, 0x10
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x404453
sub eax, ecx
sar eax, 1
push str.YourFileDownloader
mov ecx, edi
sub ecx, eax
push ebx
push ecx
lea eax, [esi + eax*2 + 0x84a]
push eax
call fcn.004083fd
lea eax, [esi + 0x43a]
push eax
push str.install_dir
call fcn.00403ece
add esp, 0x18
test al, al
jne 0x4044e0
push 1
push 0x26
lea eax, [esi + 0x43a]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x4045f3
lea eax, [esi + 0x43a]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4044b6
sub eax, edx
sar eax, 1
push str.YourFileDownloader
mov ecx, edi
sub ecx, eax
push ebx
push ecx
lea eax, [esi + eax*2 + 0x43a]
push eax
call fcn.004083fd
add esp, 0x10
push str.uninstall.exe
lea eax, [esi + 0x43a]
push eax
push 0x41ddc8
lea eax, [esi + 0xa52]
push edi
push eax
call fcn.004083fd
add esp, 0x14
lea eax, [esi + 0x232]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x4045f3
push 0x41da30
mov ebx, 0x41e7b0
push ebx
lea eax, [esi + 0x188a]
push edi
push eax
call fcn.004083fd
push str.1.0.1
push ebx
lea eax, [esi + 0x1682]
push edi
push eax
call fcn.004083fd
lea eax, [ebp - 0x38]
push eax
call fcn.00408e9c
add esp, 0x24
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x28]
push eax
call fcn.00408b08
lea eax, [ebp - 0x28]
push eax
call fcn.00408af6
add esp, 0xc
mov dword [esi + 0x1a98], eax
lea eax, [esi + 0x1aa0]
push eax
push str.last_update_date
mov dword [esi + 0x1a9c], edx
call fcn.00403f07
mov eax, dword [ebp - 0x2c]
pop ecx
pop ecx
mov ecx, str.uninstall.exe
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4045b6
test dx, dx
je 0x4045b2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4045b6
add eax, 4
add ecx, 4
test dx, dx
jne 0x404590
xor eax, eax
jmp 0x4045bb
sbb eax, eax
sbb eax, 0xffffffff
mov edx, dword [ebp - 0x2c]
test eax, eax
sete al
mov ecx, esi
mov byte [esi + 0x230], al
call fcn.004041d0
push esi
call fcn.0040410a
push 0x208
lea eax, [esi + 0x1aa8]
push 0
push eax
call fcn.0040c280
add esp, 0xc
mov byte [esi + 0x224], 1
mov ecx, dword [ebp - 4]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.004083ee
leave
ret