Function at 0x41f950
Capabilities:
Get common file path
Get startup folder
Read .ini file
Read file on windows

Disassembly:
push 0x668
mov eax, 0x4378ad
call fcn.00435021
mov eax, dword [ebp + 8]
mov ebx, 0x206
xor edi, edi
push ebx
mov dword [ebp - 0x654], eax
lea eax, [ebp - 0x422]
push edi
push eax
mov word [ebp - 0x424], di
call sub.MSVCR80.dll_memset
mov eax, dword [0x44b724]
mov esi, 0x44b724
add esp, 0xc
mov ecx, esi
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x64c], eax
mov dword [ebp - 4], edi
mov eax, dword [0x44b724]
mov ecx, esi
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x638], eax
mov byte [ebp - 4], 1
mov eax, dword [0x44b724]
mov ecx, esi
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x634], eax
push 0x4398dc
lea eax, [ebp - 0x63c]
push eax
mov byte [ebp - 4], 2
call fcn.00402b38
push ebx
lea eax, [ebp - 0x21a]
push edi
mov byte [ebp - 4], 3
push eax
mov word [ebp - 0x21c], di
call sub.MSVCR80.dll_memset
add esp, 0xc
call fcn.00430d6b
push edi
push 5
cmp eax, 6
lea eax, [ebp - 0x21c]
push eax
push edi
jne 0x41fad1
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
cmp eax, edi
je 0x41fb3d
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x630]
push eax
call fcn.00402b38
push 0x5c
lea esi, [ebp - 0x630]
mov byte [ebp - 4], 4
call fcn.0040323c
mov ecx, eax
lea edx, [ebp - 0x650]
mov eax, esi
call fcn.004056cc
mov edi, esi
mov byte [ebp - 4], 5
call fcn.004057b0
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x650]
add eax, 0xfffffff0
call fcn.00401a71
push str.downloads
mov eax, esi
push eax
call fcn.004077fc
mov eax, dword [ebp - 0x630]
cmp dword [eax - 0xc], 0
jge 0x41fa97
push 0x80070057
call fcn.00402877
movzx esi, word [eax]
call fcn.0041ed0a
movsx eax, al
movzx ecx, si
cmp ecx, eax
jne 0x41fabb
lea eax, [ebp - 0x630]
push eax
mov eax, dword [ebp - 0x654]
call fcn.0041a0f6
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x630]
add eax, 0xfffffff0
call fcn.00401a71
xor edi, edi
jmp 0x41fb3d
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
cmp eax, edi
je 0x41fb3d
lea eax, [ebp - 0x21c]
push 0x43eac4
push eax
call dword [sym.imp.MSVCR80.dll_wcscat]
pop ecx
pop ecx
call fcn.0041ed0a
movzx ecx, word [ebp - 0x21c]
movsx eax, al
cmp ecx, eax
jne 0x41fb3d
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x648]
push eax
call fcn.00402b38
lea eax, [ebp - 0x648]
push eax
mov eax, dword [ebp - 0x654]
mov byte [ebp - 4], 6
call fcn.0041a0f6
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x648]
add eax, 0xfffffff0
call fcn.00401a71
push edi
push 0x1a
lea eax, [ebp - 0x424]
push eax
push edi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea eax, [ebp - 0x424]
push eax
lea eax, [ebp - 0x64c]
push eax
call fcn.00402c06
lea eax, [ebp - 0x424]
push eax
lea eax, [ebp - 0x638]
push eax
call fcn.00402c06
push str.MozillaFirefox
lea eax, [ebp - 0x638]
push eax
call fcn.004077fc
push str.MozillaFirefoxprofiles.ini
lea eax, [ebp - 0x64c]
push eax
call fcn.004077fc
push ebx
lea eax, [ebp - 0x62a]
push edi
push eax
mov word [ebp - 0x62c], di
call sub.MSVCR80.dll_memset
add esp, 0xc
mov dword [ebp - 0x660], edi
mov dword [ebp - 0x65c], edi
mov dword [ebp - 0x658], edi
mov byte [ebp - 4], 7
push dword [ebp - 0x64c]
lea eax, [ebp - 0x62c]
push 0x103
push eax
push edi
push str.Path
push str.Profile0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0x43e5dc
lea eax, [ebp - 0x638]
push eax
call fcn.004077fc
lea eax, [ebp - 0x62c]
push eax
lea eax, [ebp - 0x638]
push eax
call fcn.004077fc
push str.prefs.js
lea eax, [ebp - 0x638]
push eax
call fcn.004077fc
mov dword [ebp - 0x670], edi
mov dword [ebp - 0x66c], edi
mov dword [ebp - 0x668], edi
mov byte [ebp - 4], 8
push dword [ebp - 0x638]
call fcn.0041f303
mov esi, eax
cmp esi, edi
pop ecx
jbe 0x41ffb6
lea ebx, [esi + esi + 2]
push ebx
call fcn.00434611
cmp eax, edi
pop ecx
mov dword [ebp - 0x648], eax
je 0x41ffb6
push ebx
push edi
push eax
call sub.MSVCR80.dll_memset
add esp, 0xc
push str.rt_ccsUTF_8
push dword [ebp - 0x638]
call dword [sym.imp.MSVCR80.dll__wfopen]
cmp eax, edi
pop ecx
pop ecx
mov dword [ebp - 0x650], eax
je 0x41ff95
push eax
push esi
push 2
push dword [ebp - 0x648]
call dword [sym.imp.MSVCR80.dll_fread]
add esp, 0x10
cmp eax, edi
je 0x41ff95
lea eax, [ebp - 0x664]
push eax
push dword [ebp - 0x648]
call dword [sym.imp.MSVCR80.dll_wcslen]
pop ecx
push eax
push dword [ebp - 0x648]
call fcn.0041f347
mov esi, dword [ebp - 0x660]
mov ebx, dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
add esp, 0xc
cmp esi, dword [ebp - 0x65c]
jbe 0x41fce1
call ebx
lea eax, [ebp - 0x664]
mov dword [ebp - 0x644], eax
mov dword [ebp - 0x640], esi
mov esi, dword [ebp - 0x65c]
cmp dword [ebp - 0x660], esi
jbe 0x41fd03
call ebx
cmp dword [ebp - 0x644], edi
je 0x41fd19
lea eax, [ebp - 0x664]
cmp dword [ebp - 0x644], eax
je 0x41fd1b
call ebx
cmp dword [ebp - 0x640], esi
je 0x41fdf4
lea esi, [ebp - 0x644]
call fcn.004223ab
cmp dword [eax + 0x18], 8
jb 0x41fd3d
mov eax, dword [eax + 4]
jmp 0x41fd40
add eax, 4
push eax
lea eax, [ebp - 0x634]
push eax
call fcn.00402c06
push str.browser.download.dir
xor ecx, ecx
lea esi, [ebp - 0x634]
call fcn.00409988
cmp eax, 0xffffffff
jne 0x41fd71
lea esi, [ebp - 0x644]
call fcn.0042247e
jmp 0x41fcf3
push 0x43eb8c
xor ecx, ecx
lea esi, [ebp - 0x634]
call fcn.00409988
mov ecx, dword [ebp - 0x634]
mov ecx, dword [ecx - 0xc]
sub ecx, eax
lea eax, [ebp - 0x640]
push eax
sub ecx, 3
mov eax, esi
call fcn.00419f5d
mov edi, esi
mov byte [ebp - 4], 9
call fcn.004057b0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x640]
add eax, 0xfffffff0
call fcn.00401a71
push 0x43e938
xor ecx, ecx
call fcn.00409988
mov ecx, eax
lea edx, [ebp - 0x640]
mov eax, esi
call fcn.004056cc
mov byte [ebp - 4], 0xa
call fcn.004057b0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x640]
add eax, 0xfffffff0
call fcn.00401a71
xor edi, edi
mov ebx, dword [ebp - 0x634]
push 0x4398dc
push ebx
call dword [sym.imp.MSVCR80.dll__wcsicmp]
test eax, eax
pop ecx
pop ecx
jne 0x41fe63
lea esi, [ebp - 0x674]
mov byte [ebp - 4], 7
call fcn.00422386
lea esi, [ebp - 0x664]
mov byte [ebp - 4], 3
call fcn.00422386
mov eax, dword [ebp - 0x63c]
add eax, 0xfffffff0
call fcn.00401a71
lea eax, [ebx - 0x10]
call fcn.00401a71
mov eax, dword [ebp - 0x638]
add eax, 0xfffffff0
call fcn.00401a71
mov eax, dword [ebp - 0x64c]
add eax, 0xfffffff0
call fcn.00401a71
xor eax, eax
jmp 0x42000f
mov ecx, dword [ebx - 0xc]
xor esi, esi
cmp ecx, edi
jle 0x41ff1a
lea eax, [ebx + 2]
mov dword [ebp - 0x630], 1
mov dword [ebp - 0x640], eax
cmp esi, edi
jl 0x41fa8d
cmp esi, ecx
jg 0x41fa8d
movzx edx, word [ebx + esi*2]
movzx eax, dx
cmp ax, 0x5c
jne 0x41feea
cmp dword [ebp - 0x630], edi
jl 0x41fa8d
cmp dword [ebp - 0x630], ecx
jg 0x41fa8d
mov eax, dword [ebp - 0x640]
movzx eax, word [eax]
cmp ax, 0x5c
jne 0x41feea
push 0x43e5dc
lea eax, [ebp - 0x63c]
push eax
call fcn.004077fc
add dword [ebp - 0x630], 2
inc esi
inc esi
add dword [ebp - 0x640], 4
jmp 0x41ff0f
cmp esi, ecx
jg 0x41fa8d
movzx eax, dx
push eax
lea eax, [ebp - 0x63c]
call fcn.00411f18
inc esi
inc dword [ebp - 0x630]
add dword [ebp - 0x640], 2
mov ecx, dword [ebx - 0xc]
cmp esi, ecx
jl 0x41fe83
mov eax, dword [ebp - 0x63c]
cmp dword [eax - 0xc], edi
jl 0x41fa8d
movzx esi, word [eax]
call fcn.0041ed0a
movsx eax, al
movzx ecx, si
cmp ecx, eax
je 0x41ff83
mov eax, dword [ebp - 0x63c]
cmp dword [eax - 0xc], edi
jl 0x41fa8d
movzx esi, word [eax]
call fcn.0041ed0a
movsx eax, al
movzx ecx, si
sub eax, 0x20
cmp ecx, eax
je 0x41ff83
mov eax, dword [ebp - 0x63c]
cmp dword [eax - 0xc], edi
jl 0x41fa8d
movzx esi, word [eax]
call fcn.0041ed0a
movsx eax, al
movzx ecx, si
add eax, 0x20
cmp ecx, eax
jne 0x41ff95
lea eax, [ebp - 0x63c]
push eax
mov eax, dword [ebp - 0x654]
call fcn.0041a0f6
push dword [ebp - 0x648]
call sub.MSVCR80.dll_void___cdecl_operator_delete___void__
cmp dword [ebp - 0x650], edi
pop ecx
je 0x41ffb6
push dword [ebp - 0x650]
call dword [sym.imp.MSVCR80.dll_fclose]
pop ecx
lea esi, [ebp - 0x674]
mov byte [ebp - 4], 7
call fcn.00422386
lea esi, [ebp - 0x664]
mov byte [ebp - 4], 3
call fcn.00422386
mov eax, dword [ebp - 0x63c]
add eax, 0xfffffff0
call fcn.00401a71
mov eax, dword [ebp - 0x634]
add eax, 0xfffffff0
call fcn.00401a71
mov eax, dword [ebp - 0x638]
add eax, 0xfffffff0
call fcn.00401a71
mov eax, dword [ebp - 0x64c]
add eax, 0xfffffff0
call fcn.00401a71
xor eax, eax
inc eax
call fcn.004350a4
ret