Function at 0x4017f0
Capabilities:
Get common file path
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x42616c
mov eax, dword fs:[0]
push eax
sub esp, 0x840
mov eax, dword [0x435028]
xor eax, esp
mov dword [esp + 0x83c], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x435028]
xor eax, esp
push eax
lea eax, [esp + 0x854]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x864]
lea eax, [esp + 0x238]
push eax
push 0
push 0
push 0x1a
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
mov edi, dword [sym.imp.MSVCR80.dll_wcscpy_s]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathAppendW]
jl 0x40187b
lea ecx, [esp + 0x238]
push ecx
lea edx, [esp + 0x34]
push 0x104
push edx
call edi
add esp, 0xc
push str.MozillaFirefoxprofiles.ini
lea eax, [esp + 0x34]
push eax
call ebx
lea esi, [esp + 0x30]
call fcn.0040ecd0
test al, al
je 0x401996
mov ecx, esi
push ecx
push 0xffffffffffffffff
push str.IsRelative
push str.Profile0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
lea edx, [esp + 0x30]
push edx
push 0x104
mov esi, eax
lea eax, [esp + 0x448]
push eax
push 0
push str.Path
push str.Profile0
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
cmp esi, 1
jne 0x401900
lea ecx, [esp + 0x238]
push ecx
lea edx, [esp + 0x34]
push 0x104
push edx
call edi
add esp, 0xc
push str.MozillaFirefox_
lea eax, [esp + 0x34]
push eax
call ebx
lea ecx, [esp + 0x440]
push ecx
lea edx, [esp + 0x34]
push edx
call ebx
jmp 0x401917
lea eax, [esp + 0x440]
push eax
lea ecx, [esp + 0x34]
push 0x104
push ecx
call edi
add esp, 0xc
push str.user_pref__browser.startup.homepage____
lea ecx, [esp + 0x18]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
push ebp
lea ecx, [esp + 0x18]
mov dword [esp + 0x860], 0
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_wchar_t_const__]
push 0x427b08
lea ecx, [esp + 0x18]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_wchar_t_const__]
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x64c]
push 0x104
push eax
call edi
add esp, 0xc
push 0x427b10
lea ecx, [esp + 0x64c]
push ecx
call ebx
lea esi, [esp + 0x648]
call fcn.0040ecd0
test al, al
jne 0x40199a
lea ecx, [esp + 0x14]
mov dword [esp + 0x85c], 0xffffffff
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
xor eax, eax
jmp 0x4019cc
cmp dword [esp + 0x2c], 8
mov edi, dword [esp + 0x18]
jae 0x4019a9
lea edi, [esp + 0x18]
lea ecx, [esp + 0x30]
call fcn.004014b0
lea ecx, [esp + 0x14]
mov dword [esp + 0x85c], 0xffffffff
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov eax, 1
mov ecx, dword [esp + 0x854]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x83c]
xor ecx, esp
call fcn.00422de8
add esp, 0x84c
ret