Function at 0x18016aed
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc8
mov eax, dword [0x180f51f0]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
push esi
push edi
mov ebx, ecx
push 9
pop ecx
push 6
mov esi, str.MozillaFirefox_
lea edi, [ebp - 0x9c]
rep movsd dword es:[edi], dword [esi]
pop ecx
mov esi, str.profiles.ini
lea edi, [ebp - 0x78]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, str.Profile0
lea edi, [ebp - 0x44]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, str.Name
lea edi, [ebp - 0x14]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
push 5
pop ecx
mov esi, str.IsRelative
lea edi, [ebp - 0x5c]
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov eax, dword [ebp + 8]
mov esi, str.Path
lea edi, [ebp - 0x20]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, str.Default
lea edi, [ebp - 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, eax
mov dword [ebp - 0xc0], eax
mov dword [ebp - 0xc4], ebx
call fcn.18004003
mov esi, ebx
call fcn.18004003
mov eax, dword [0x180fa268]
mov esi, 0x180fa268
mov ecx, esi
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xa4], eax
lea eax, [ebp - 0xa4]
push eax
push 0x1a
call fcn.18015099
pop ecx
pop ecx
test eax, eax
jge 0x18016bcf
mov esi, eax
mov eax, dword [ebp - 0xa4]
add eax, 0xfffffff0
call fcn.18004250
mov ecx, dword [ebp - 8]
pop edi
mov eax, esi
pop esi
xor ecx, ebp
pop ebx
call fcn.1809ccb5
leave
ret
lea eax, [ebp - 0x9c]
push eax
lea eax, [ebp - 0xa4]
push eax
call fcn.18003097
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0xa4]
lea ecx, [ebp - 0xa0]
call fcn.18002e5e
pop ecx
movzx ecx, byte [0x180fb8f9]
neg ecx
sbb ecx, ecx
and ecx, 0x180fbba0
push 1
pop edi
je 0x18016c4d
push 3
pop ebx
push ebx
push edi
mov dword [ebp - 0xbc], ecx
call fcn.18001d8a
mov dword [ebp - 0xb4], ebx
mov ebx, dword [ebp - 0xa0]
push ebx
mov dword [ebp - 0xb8], eax
lea eax, [ebp - 0xbc]
push str._FireFox_profile.ini___s_
push eax
mov dword [ebp - 0xb0], edi
call fcn.18001000
add esp, 0xc
jmp 0x18016c53
mov ebx, dword [ebp - 0xa0]
push ebx
call fcn.1800c3b2
pop ecx
test al, al
jne 0x18016cba
movzx ecx, byte [0x180fb8f9]
neg ecx
sbb ecx, ecx
and ecx, 0x180fbba0
je 0x18016ca8
push 0xfffffffffffffffe
pop esi
push esi
push edi
mov dword [ebp - 0xbc], ecx
call fcn.18001d8a
push ebx
mov dword [ebp - 0xb8], eax
lea eax, [ebp - 0xbc]
push str._File_does_not_exist___s_
push eax
mov dword [ebp - 0xb4], esi
mov dword [ebp - 0xb0], edi
call fcn.18001000
add esp, 0xc
lea eax, [ebx - 0x10]
call fcn.18004250
mov esi, 0x80070002
jmp 0x18016bb0
mov eax, dword [0x180fa268]
mov ecx, esi
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xa8], eax
push ebx
mov eax, 0x800
push eax
push eax
lea eax, [ebp - 0xa8]
call fcn.18002f62
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionNamesW]
mov ebx, eax
cmp ebx, 0x7fe
jne 0x18016d38
movzx ecx, byte [0x180fb8f9]
neg ecx
sbb ecx, ecx
and ecx, 0x180fbba0
je 0x18016d38
push 0xffffffffffffffff
push edi
mov dword [ebp - 0xbc], ecx
call fcn.18001d8a
or dword [ebp - 0xb4], 0xffffffff
mov dword [ebp - 0xb8], eax
lea eax, [ebp - 0xbc]
push str._FireFox_profile.ini_contains_too_many_sections_
push eax
mov dword [ebp - 0xb0], edi
call fcn.18001000
pop ecx
pop ecx
mov eax, ebx
lea esi, [ebp - 0xa8]
call fcn.18003fe5
mov esi, dword [ebp - 0xa8]
lea edi, [esi + ebx*2]
jmp 0x18016d82
xor ebx, ebx
cmp word [esi], bx
je 0x18016d86
push dword [ebp - 0xa0]
lea eax, [ebp - 0x30]
push ebx
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
test eax, eax
je 0x18016d7c
mov dword [ebp - 0xac], esi
jmp 0x18016d8f
cmp word [esi], bx
je 0x18016d80
inc esi
inc esi
cmp esi, edi
jb 0x18016d75
inc esi
inc esi
cmp esi, edi
jb 0x18016d50
lea eax, [ebp - 0x44]
mov dword [ebp - 0xac], eax
push dword [ebp - 0xa0]
mov eax, 0x100
push eax
push eax
mov eax, dword [ebp - 0xc0]
call fcn.18002f62
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push eax
mov ebx, 0x180c29a4
push ebx
lea eax, [ebp - 0x14]
push eax
push dword [ebp - 0xac]
call edi
mov esi, dword [ebp - 0xc0]
call fcn.18003fe5
push dword [ebp - 0xa0]
mov esi, dword [ebp - 0xc4]
mov eax, 0x400
push eax
push eax
mov eax, esi
call fcn.18002f62
push eax
push ebx
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0xac]
call edi
call fcn.18003fe5
mov eax, esi
call fcn.180062e4
mov edi, dword [ebp - 0xa0]
push edi
push 0
lea eax, [ebp - 0x5c]
push eax
push dword [ebp - 0xac]
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
test eax, eax
je 0x18016e32
mov eax, dword [esi]
cmp dword [eax - 0xc], 0
je 0x18016e32
push dword [ebp - 0xa4]
xor eax, eax
push esi
call fcn.1800a6bc
mov eax, dword [ebp - 0xa8]
add eax, 0xfffffff0
call fcn.18004250
lea eax, [edi - 0x10]
call fcn.18004250
xor esi, esi
jmp 0x18016bb0