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

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0xe4
mov eax, dword [0x4f4de0]
xor eax, ebp
mov dword [ebp + 0x74], eax
and dword [ebp - 0x68], 0
push ebx
push esi
push edi
mov esi, 0x4faa18
push esi
lea ecx, [ebp - 0x64]
call fcn.00404530
mov ebx, str.config.ini
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.004067a0
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.00404d30
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d30
test edi, edi
je 0x4886d5
cmp byte [0x4faa30], 0
jne 0x48870c
push esi
lea ecx, [ebp - 0x64]
call fcn.00404530
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.004067a0
push dword [eax]
call fcn.00485ed8
mov ecx, dword [ebp - 0x58]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.004067a0
mov edi, dword [eax]
add esp, 0xc
push 0x4faa14
lea ecx, [ebp - 0x64]
call fcn.00404530
push edi
push dword [ebp - 0x64]
mov edi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push str.language
push 0x4d9e58
call edi
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
mov eax, dword [eax]
add esp, 0xc
mov dword [ebp - 0x6c], eax
push 0x4c997c
lea eax, [ebp - 0x64]
push eax
mov ecx, 0x4fa998
call fcn.00473572
push dword [ebp - 0x6c]
push dword [eax]
push 0x4c997c
push 0x4d9e58
call edi
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
xor eax, eax
push 0xc6
push eax
mov word [ebp - 0x54], ax
lea eax, [ebp - 0x52]
push eax
call fcn.00497680
add esp, 0xc
cmp byte [0x4faa30], 0
je 0x488834
push esi
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x68], 3
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
lea eax, [ebp - 0x54]
push 0x64
push eax
push 0
push str.channel
push 0x4d9e58
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov byte [ebp - 0x5d], 0
test eax, eax
jne 0x488838
mov byte [ebp - 0x5d], 1
test byte [ebp - 0x68], 2
je 0x48884d
mov ecx, dword [ebp - 0x5c]
and dword [ebp - 0x68], 0xfffffffd
add ecx, 0xfffffff0
call fcn.00404d30
test byte [ebp - 0x68], 1
je 0x488862
mov ecx, dword [ebp - 0x58]
and dword [ebp - 0x68], 0xfffffffe
add ecx, 0xfffffff0
call fcn.00404d30
cmp byte [ebp - 0x5d], 0
je 0x48892a
push esi
lea ecx, [ebp - 0x64]
call fcn.00404530
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.004067a0
mov eax, dword [eax]
add esp, 0xc
push 0x4faa1c
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x5c], eax
call fcn.00404530
push dword [ebp - 0x5c]
push dword [ebp - 0x58]
push str.channel
push 0x4d9e58
call edi
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x64]
push eax
call fcn.004067a0
mov eax, dword [eax]
mov dword [ebp - 0x5c], eax
add esp, 0xc
lea eax, [ebp - 0x6c]
push eax
mov ecx, 0x4fa998
call fcn.004819a8
push dword [ebp - 0x5c]
push dword [eax]
push 0x4cd98c
push 0x4d9e58
call edi
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
cmp byte [0x4faa30], 0
je 0x4889d3
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
lea eax, [ebp - 0x54]
push 0x64
push eax
push 0
push 0x4cd98c
push 0x4d9e58
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.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
cmp byte [ebp - 0x5d], 0
je 0x4889d3
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
push 0x4d8c14
push 0x4cd98c
push 0x4d9e58
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
cmp byte [0x4faa53], 0
je 0x488a07
or dword [ebp - 0x68], 4
push 0x4faa1c
lea ecx, [ebp - 0x58]
call fcn.00404530
push 4
push dword [ebp - 0x58]
push str.ENT.
call fcn.004998d2
add esp, 0xc
mov byte [ebp - 0x5d], 1
test eax, eax
je 0x488a0b
mov byte [ebp - 0x5d], 0
test byte [ebp - 0x68], 4
je 0x488a1c
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
cmp byte [ebp - 0x5d], 0
je 0x488a7a
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.004067a0
mov ebx, dword [eax]
add esp, 0xc
push 0x4faa1c
lea ecx, [ebp - 0x5c]
call fcn.00404530
push ebx
mov ebx, dword [ebp - 0x5c]
push ebx
push str.channel
push 0x4d9e58
call edi
lea ecx, [ebx - 0x10]
call fcn.00404d30
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
mov ebx, str.i18ni18n.ini
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
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.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
cmp dword [ebp - 0x68], 0
je 0x488ac9
cmp byte [0x4faa30], 0
jne 0x488b3e
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push str.i18n
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
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.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
push dword [eax]
call fcn.00485ed8
mov ecx, dword [ebp - 0x5c]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x64]
call fcn.00404530
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.004067a0
mov eax, dword [eax]
add esp, 0xc
push 0x4faa14
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x5c], eax
call fcn.00404530
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.00404d30
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
push 0x4d7acc
push str.DefaultLanguage
push str.Main
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
push 0x4cf5ac
push str.Name1
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
push 0x4cf58c
push str.Size1
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
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.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
push 0x4cf58c
push str.Size2
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
push 0x4cf550
push str.Name3
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
lea eax, [ebp - 0x58]
push ebx
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
push 0x4cf58c
push str.Size3
push str.Font
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
mov ebx, str._softmgrAdvUtils.ini
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
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.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
cmp dword [ebp - 0x68], 0
je 0x488dc1
cmp byte [0x4faa30], 0
jne 0x488e36
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push str._softmgr
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
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.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
push dword [eax]
call fcn.00485ed8
mov ecx, dword [ebp - 0x5c]
add esp, 0x10
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x64]
call fcn.00404530
push ebx
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x6c]
push eax
call fcn.004067a0
mov eax, dword [eax]
add esp, 0xc
push 0x4faa14
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x5c], eax
call fcn.00404530
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.00404d30
mov ecx, dword [ebp - 0x6c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x64]
add ecx, 0xfffffff0
call fcn.00404d30
push esi
lea ecx, [ebp - 0x58]
call fcn.00404530
push ebx
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.004067a0
add esp, 0xc
push dword [eax]
push 0x4d7acc
push str.default_lang
push str.qurl
call edi
mov ecx, dword [ebp - 0x5c]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp - 0x58]
add ecx, 0xfffffff0
call fcn.00404d30
mov ecx, dword [ebp + 0x74]
pop edi
pop esi
xor ecx, ebp
mov al, 1
pop ebx
call fcn.00497941
add ebp, 0x78
leave
ret