Function at 0x41cd1c
Capabilities:
Check if file exists
Get common file path
Get program files directory

Disassembly:
push ebp
lea ebp, [esp - 0x2a8]
sub esp, 0x328
mov eax, dword [0x4546e0]
xor eax, ebp
mov dword [ebp + 0x2a4], eax
mov eax, dword [ebp + 0x2b4]
push ebx
push esi
push edi
mov edi, dword [ebp + 0x2b0]
xor esi, esi
cmp dword [edi + 0x14], esi
mov dword [ebp - 0x10], eax
je 0x41cdf9
cmp dword [edi + 0x18], 8
jb 0x41cd5f
mov eax, dword [edi + 4]
jmp 0x41cd62
lea eax, [edi + 4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41cdf9
cmp dword [edi + 0x18], 8
jb 0x41cd7c
mov eax, dword [edi + 4]
jmp 0x41cd7f
lea eax, [edi + 4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x41cdf9
push edi
call fcn.0041a737
cmp eax, 1
pop ecx
mov dword [0x454358], eax
je 0x41cdf9
call fcn.00413884
push edi
lea ecx, [ebp + 0x64]
mov dword [0x455de8], eax
call fcn.00403d50
mov ebx, 0x446f58
push ebx
push esi
lea ecx, [ebp + 0x64]
call fcn.0041aee1
push ebx
lea ecx, [ebp + 0x64]
call fcn.00403dbd
push 7
pop ebx
push esi
lea ecx, [ebp + 0x2c]
mov dword [ebp + 0x44], ebx
call fcn.00401734
lea eax, [ebp + 0x2c]
push eax
call fcn.0041b2f4
test al, al
pop ecx
push esi
jne 0x41ce13
push 1
lea ecx, [ebp + 0x2c]
call fcn.00401f6b
push esi
push 1
lea ecx, [ebp + 0x64]
call fcn.00401f6b
xor al, al
mov ecx, dword [ebp + 0x2a4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0042b92a
add ebp, 0x2a8
leave
ret
lea ecx, [ebp + 0x48]
mov dword [ebp + 0x60], ebx
call fcn.00401734
push esi
lea ecx, [ebp - 0xc]
mov dword [ebp + 0xc], ebx
call fcn.00401734
lea eax, [ebp - 0xc]
push edi
push eax
call fcn.0041b372
test al, al
pop ecx
pop ecx
je 0x41ce5f
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x2c]
push edi
push eax
call fcn.00409f44
add esp, 0xc
push 0xffffffffffffffff
push esi
push eax
lea ecx, [ebp + 0x48]
call fcn.00403692
lea ecx, [ebp - 0x2c]
jmp 0x41cf43
push 0x206
lea eax, [ebp + 0x9e]
push esi
push eax
mov word [ebp + 0x9c], si
call fcn.0042b8b0
add esp, 0xc
push esi
lea ecx, [ebp + 0x80]
mov dword [ebp + 0x98], ebx
call fcn.00401734
mov ebx, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push esi
push 0x25
lea eax, [ebp + 0x9c]
push eax
push esi
call ebx
test eax, eax
lea eax, [ebp + 0x9c]
je 0x41cebd
push str.url.dll
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0x44a234
jmp 0x41cedf
push esi
push 0x26
push eax
push esi
call ebx
test eax, eax
je 0x41ceea
push str.Internet_Exploreriexplore.exe
lea eax, [ebp + 0x9c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0x44a23c
lea ecx, [ebp + 0x80]
call fcn.00403d76
lea eax, [ebp + 0x9c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41cf3d
lea eax, [ebp + 0x9c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsFileSpecW]
test eax, eax
jne 0x41cf3d
lea eax, [ebp + 0x80]
push eax
lea eax, [ebp + 0x9c]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.0041af64
add esp, 0xc
push 0xffffffffffffffff
push esi
push eax
lea ecx, [ebp + 0x48]
call fcn.00403692
push esi
push 1
lea ecx, [ebp - 0x2c]
call fcn.00401f6b
lea ecx, [ebp + 0x80]
push esi
push 1
call fcn.00401f6b
mov ecx, 0x455dec
call fcn.00404f79
mov eax, dword [str..htm]
xor ebx, ebx
jmp 0x41cf9a
push eax
lea ecx, [ebp + 0x80]
call fcn.004040fd
push dword [ebp - 0x10]
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x80]
push eax
call fcn.0041cc3d
add esp, 0x10
push esi
push 1
lea ecx, [ebp + 0x80]
call fcn.00401f6b
mov eax, dword [ebx*4 + 0x454294]
inc ebx
cmp eax, esi
jne 0x41cf5e
mov eax, dword [0x4542c8]
xor ebx, ebx
jmp 0x41cfe7
push eax
lea ecx, [ebp + 0x80]
call fcn.004040fd
push dword [ebp - 0x10]
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x2c]
push eax
lea eax, [ebp + 0x80]
push eax
call fcn.0041c609
add esp, 0x14
push esi
push 1
lea ecx, [ebp + 0x80]
call fcn.00401f6b
mov eax, dword [ebx*4 + 0x4542cc]
inc ebx
cmp eax, esi
jne 0x41cfa7
mov eax, dword [str.htmfile]
xor ebx, ebx
jmp 0x41d034
push eax
lea ecx, [ebp + 0x80]
call fcn.004040fd
push dword [ebp - 0x10]
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x2c]
push eax
lea eax, [ebp + 0x80]
push eax
call fcn.0041bf11
add esp, 0x14
push esi
push 1
lea ecx, [ebp + 0x80]
call fcn.00401f6b
mov eax, dword [ebx*4 + 0x4542dc]
inc ebx
cmp eax, esi
jne 0x41cff4
cmp dword [edi + 0x18], 8
jb 0x41d043
mov eax, dword [edi + 4]
jmp 0x41d046
lea eax, [edi + 4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindFileNameW]
cmp dword [edi + 0x18], 8
jb 0x41d058
mov ecx, dword [edi + 4]
jmp 0x41d05b
lea ecx, [edi + 4]
cmp eax, ecx
je 0x41d093
push eax
lea ecx, [ebp + 0x80]
call fcn.004040fd
mov ebx, dword [ebp - 0x10]
push ebx
push edi
lea eax, [ebp + 0x2c]
push eax
lea eax, [ebp + 0x80]
push eax
call fcn.0041b875
add esp, 0x10
push esi
push 1
lea ecx, [ebp + 0x80]
call fcn.00401f6b
jmp 0x41d096
mov ebx, dword [ebp - 0x10]
push ebx
push edi
call fcn.0041b9c8
push ebx
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x2c]
push eax
call fcn.0041c7a2
push ebx
call fcn.0041bc55
push ebx
push edi
call fcn.0041bb26
push ebx
push edi
call fcn.0041bbb7
mov eax, dword [0x454358]
add esp, 0x2c
sub eax, 3
je 0x41d217
dec eax
dec eax
je 0x41d1d7
dec eax
je 0x41d190
sub eax, 4
je 0x41d13d
sub eax, 4
jne 0x41d270
mov eax, dword [str..iqs]
xor edi, edi
jmp 0x41d134
push eax
lea ecx, [ebp + 0x80]
call fcn.004040fd
push ebx
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x80]
push eax
call fcn.0041cc3d
add esp, 0x10
push esi
push 1
lea ecx, [ebp + 0x80]
call fcn.00401f6b
mov eax, dword [edi*4 + 0x454328]
inc edi
cmp eax, esi
jne 0x41d0fa
jmp 0x41d270
push esi
lea ecx, [ebp + 0x10]
mov dword [ebp + 0x28], 7
call fcn.00401734
mov eax, dword [str..wgt]
xor edi, edi
jmp 0x41d187
push eax
lea ecx, [ebp - 0x80]
call fcn.004040fd
push ebx
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp - 0x80]
push eax
call fcn.0041cc3d
add esp, 0x10
push esi
push 1
lea ecx, [ebp - 0x80]
call fcn.00401f6b
mov eax, dword [edi*4 + 0x454318]
inc edi
cmp eax, esi
jne 0x41d156
jmp 0x41d265
mov eax, dword [str.FirefoxUrl]
xor edi, edi
jmp 0x41d1ce
push eax
lea ecx, [ebp - 0x64]
call fcn.004040fd
push ebx
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp + 0x2c]
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.0041bf11
add esp, 0x14
push esi
push 1
lea ecx, [ebp - 0x64]
call fcn.00401f6b
mov eax, dword [edi*4 + 0x454340]
inc edi
cmp eax, esi
jne 0x41d199
jmp 0x41d270
mov eax, dword [str..crx]
xor edi, edi
jmp 0x41d211
push eax
lea ecx, [ebp - 0x48]
call fcn.004040fd
push ebx
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.0041cc3d
add esp, 0x10
push esi
push 1
lea ecx, [ebp - 0x48]
call fcn.00401f6b
mov eax, dword [edi*4 + 0x454320]
inc edi
cmp eax, esi
jne 0x41d1e0
jmp 0x41d270
push esi
lea ecx, [ebp + 0x10]
mov dword [ebp + 0x28], 7
call fcn.00401734
mov eax, dword [str..m2f]
xor edi, edi
jmp 0x41d261
push eax
lea ecx, [ebp - 0x2c]
call fcn.004040fd
push ebx
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x48]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.0041cc3d
add esp, 0x10
push esi
push 1
lea ecx, [ebp - 0x2c]
call fcn.00401f6b
mov eax, dword [edi*4 + 0x454300]
inc edi
cmp eax, esi
jne 0x41d230
push esi
push 1
lea ecx, [ebp + 0x10]
call fcn.00401f6b
xor edi, edi
push esi
inc edi
push edi
lea ecx, [ebp - 0xc]
call fcn.00401f6b
push esi
push edi
lea ecx, [ebp + 0x48]
call fcn.00401f6b
push esi
push edi
lea ecx, [ebp + 0x2c]
call fcn.00401f6b
push esi
push edi
lea ecx, [ebp + 0x64]
call fcn.00401f6b
mov al, 1
jmp 0x41cdfb