Function at 0x48fb86
Capabilities:
Check if file exists
Create directory
Read .ini file

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0xe4
mov eax, dword [0x4ffeb0]
xor eax, ebp
mov dword [ebp + 0x74], eax
and dword [ebp - 0x68], 0
push ebx
push esi
push edi
mov esi, 0x505cb8
push esi
lea ecx, [ebp - 0x64]
call fcn.00404d20
mov ebx, str.config.ini
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
mov edi, eax
call fcn.00404d60
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d60
test edi, edi
je 0x48fbf3
cmp byte [0x505cd0], 0
jne 0x48fc2a
push esi
lea ecx, [ebp - 0x64]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.00406480
push dword [eax]
call fcn.0048d24f
mov ecx, dword [ebp - 0x58]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.00406480
mov edi, dword [eax]
add esp, 0xc
push 0x505cb4
lea ecx, [ebp - 0x64]
call fcn.00404d20
push edi
push dword [ebp - 0x64]
mov edi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push str.language
push 0x4e45fc
call edi
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
mov eax, dword [eax]
add esp, 0xc
mov dword [ebp - 0x6c], eax
push 0x4d395c
lea eax, [ebp - 0x64]
push eax
mov ecx, 0x505c38
call fcn.0047a44d
push dword [ebp - 0x6c]
push dword [eax]
push 0x4d395c
push 0x4e45fc
call edi
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
xor eax, eax
push 0xc6
push eax
mov word [ebp - 0x54], ax
lea eax, [ebp - 0x52]
push eax
call fcn.004a0bd0
add esp, 0xc
cmp byte [0x505cd0], 0
je 0x48fd52
push esi
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x68], 3
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
lea eax, [ebp - 0x54]
push 0x64
push eax
push 0
push str.channel
push 0x4e45fc
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov byte [ebp - 0x5d], 0
test eax, eax
jne 0x48fd56
mov byte [ebp - 0x5d], 1
test byte [ebp - 0x68], 2
je 0x48fd6b
mov ecx, dword [ebp - 0x5c]
and dword [ebp - 0x68], 0xfffffffd
add ecx, 0xfffffff0
call fcn.00404d60
test byte [ebp - 0x68], 1
je 0x48fd80
mov ecx, dword [ebp - 0x58]
and dword [ebp - 0x68], 0xfffffffe
add ecx, 0xfffffff0
call fcn.00404d60
cmp byte [ebp - 0x5d], 0
je 0x48fe48
push esi
lea ecx, [ebp - 0x64]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.00406480
mov eax, dword [eax]
add esp, 0xc
push 0x505cbc
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x5c], eax
call fcn.00404d20
push dword [ebp - 0x5c]
push dword [ebp - 0x58]
push str.channel
push 0x4e45fc
call edi
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.00406480
mov eax, dword [eax]
mov dword [ebp - 0x5c], eax
add esp, 0xc
lea eax, [ebp - 0x6c]
push eax
mov ecx, 0x505c38
call fcn.004886cf
push dword [ebp - 0x5c]
push dword [eax]
push 0x4d7a2c
push 0x4e45fc
call edi
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
cmp byte [0x505cd0], 0
je 0x48fef1
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
lea eax, [ebp - 0x54]
push 0x64
push eax
push 0
push 0x4d7a2c
push 0x4e45fc
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ecx, dword [ebp - 0x5c]
neg eax
sbb al, al
inc al
add ecx, 0xfffffff0
mov byte [ebp - 0x5d], al
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
cmp byte [ebp - 0x5d], 0
je 0x48fef1
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
push 0x4e35dc
push 0x4d7a2c
push 0x4e45fc
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
cmp byte [0x505cf3], 0
je 0x48ff25
or dword [ebp - 0x68], 4
push 0x505cbc
lea ecx, [ebp - 0x58]
call fcn.00404d20
push 4
push dword [ebp - 0x58]
push str.ENT.
call fcn.004a30d2
add esp, 0xc
mov byte [ebp - 0x5d], 1
test eax, eax
je 0x48ff29
mov byte [ebp - 0x5d], 0
test byte [ebp - 0x68], 4
je 0x48ff3a
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
cmp byte [ebp - 0x5d], 0
je 0x48ff98
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.00406480
mov ebx, dword [eax]
add esp, 0xc
push 0x505cbc
lea ecx, [ebp - 0x5c]
call fcn.00404d20
push ebx
mov ebx, dword [ebp - 0x5c]
push ebx
push str.channel
push 0x4e45fc
call edi
lea ecx, [ebx - 0x10]
call fcn.00404d60
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
mov ebx, str.i18ni18n.ini
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
mov dword [ebp - 0x68], eax
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
cmp dword [ebp - 0x68], 0
je 0x48ffe7
cmp byte [0x505cd0], 0
jne 0x49005c
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push str.i18n
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
push dword [eax]
call fcn.0048d24f
mov ecx, dword [ebp - 0x5c]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x64]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.00406480
mov eax, dword [eax]
add esp, 0xc
push 0x505cb4
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x5c], eax
call fcn.00404d20
push dword [ebp - 0x5c]
push dword [ebp - 0x58]
push str.Language
push str.Main
call edi
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
push 0x4e2370
push str.DefaultLanguage
push str.Main
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
push 0x4d97c0
push str.Name1
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
push 0x4d97a0
push str.Size1
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
push str.Tahoma
push str.Name2
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
push 0x4d97a0
push str.Size2
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
push 0x4d9764
push str.Name3
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
lea eax, [ebp - 0x58]
push ebx
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
push 0x4d97a0
push str.Size3
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
mov ebx, str._softmgrAdvUtils.ini
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
mov dword [ebp - 0x68], eax
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
cmp dword [ebp - 0x68], 0
je 0x4902df
cmp byte [0x505cd0], 0
jne 0x490354
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push str._softmgr
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push 0
push dword [eax]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
push dword [eax]
call fcn.0048d24f
mov ecx, dword [ebp - 0x5c]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x64]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.00406480
mov eax, dword [eax]
add esp, 0xc
push 0x505cb4
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x5c], eax
call fcn.00404d20
push dword [ebp - 0x5c]
push dword [ebp - 0x58]
push str.lang
push str.qurl
call edi
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d60
push esi
lea ecx, [ebp - 0x58]
call fcn.00404d20
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00406480
add esp, 0xc
push dword [eax]
push 0x4e2370
push str.default_lang
push str.qurl
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d60
mov ecx, dword [ebp + 0x74]
pop edi
pop esi
xor ecx, ebp
mov al, 1
pop ebx
call fcn.004a0e91
add ebp, 0x78
leave
ret