Function at 0x415f00
Capabilities:
Create directory
Get common file path
Read .ini file
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40c
mov dword [ebp - 0x304], 0
push 0x100
push 0
mov eax, dword [0x437cf8]
push eax
call fcn.0041b260
add esp, 0xc
push 0x100
push 0
mov ecx, dword [0x437cfc]
push ecx
call fcn.0041b260
add esp, 0xc
push 0x100
push 0
mov edx, dword [0x437d00]
push edx
call fcn.0041b260
add esp, 0xc
push 0x100
push 0
mov eax, dword [0x437d04]
push eax
call fcn.0041b260
add esp, 0xc
push 0x100
push 0
mov ecx, dword [0x437d08]
push ecx
call fcn.0041b260
add esp, 0xc
push 0x100
push 0
mov edx, dword [0x437d0c]
push edx
call fcn.0041b260
add esp, 0xc
push 0x100
push 0
push 0x4468cc
call fcn.0041b260
add esp, 0xc
push 0x100
push 0
mov eax, dword [0x437d10]
push eax
call fcn.0041b260
add esp, 0xc
push 0x100
push 0
mov ecx, dword [0x437d14]
push ecx
call fcn.0041b260
add esp, 0xc
push 0x100
push 0
mov edx, dword [0x437d18]
push edx
call fcn.0041b260
add esp, 0xc
push 0x181
push 0
push 0x447b80
call fcn.0041b260
add esp, 0xc
mov eax, dword [0x437cfc]
push eax
push 0x100
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov dword [ebp - 0x30c], 0
jmp 0x41602a
mov ecx, dword [ebp - 0x30c]
add ecx, 1
mov dword [ebp - 0x30c], ecx
mov edx, dword [0x437cfc]
push edx
call fcn.0041b2c0
add esp, 4
cmp dword [ebp - 0x30c], eax
ja 0x416065
mov eax, dword [0x437cfc]
add eax, dword [ebp - 0x30c]
movsx ecx, byte [eax]
cmp ecx, 0x5c
jne 0x416063
mov edx, dword [0x437cfc]
add edx, dword [ebp - 0x30c]
mov byte [edx], 0x2f
jmp 0x41601b
push 0x100
push 0
lea eax, [ebp - 0x100]
push eax
call fcn.0041b260
add esp, 0xc
mov ecx, dword [0x437cfc]
push ecx
push str._s_zxssbc.ini
lea edx, [ebp - 0x100]
push edx
call fcn.0041b1f9
add esp, 0xc
lea eax, [ebp - 0x100]
push eax
push 0x447bfe
call fcn.0041b0c0
add esp, 8
lea ecx, [ebp - 0x100]
push ecx
push 0
push str.LanguageID
push 0x437d38
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [0x447bda], eax
push 0x100
push 0
lea edx, [ebp - 0x200]
push edx
call fcn.0041b260
add esp, 0xc
lea eax, [ebp - 0x100]
push eax
push 0x100
lea ecx, [ebp - 0x200]
push ecx
push 0
push 0x437d40
push 0x437d48
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov dword [ebp - 0x304], eax
cmp dword [ebp - 0x304], 0
jne 0x41611c
mov dword [0x447b91], 0
lea edx, [ebp - 0x200]
push edx
call sub.WSOCK32.dll_inet_addr
mov dword [0x447b91], eax
cmp dword [0x447b91], 0xffffffff
jne 0x416140
mov dword [0x447b91], 0
lea eax, [ebp - 0x100]
push eax
push 0x2382
push 0x437d50
push 0x437d5c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov word [0x447b95], ax
lea ecx, [ebp - 0x100]
push ecx
push 0x26ac
push 0x437d64
push 0x437d70
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov word [0x447b97], ax
push 0x100
push 0
lea edx, [ebp - 0x200]
push edx
call fcn.0041b260
add esp, 0xc
lea eax, [ebp - 0x100]
push eax
push 0x100
lea ecx, [ebp - 0x200]
push ecx
push str._Local_
push 0x437d80
push 0x437d8c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x1e
lea edx, [ebp - 0x200]
push edx
push 0x447bde
call fcn.0041baf0
add esp, 0xc
lea eax, [ebp - 0x100]
push eax
push 0x100
mov ecx, dword [0x437cf8]
push ecx
push 0x446bcc
push str.CurVersion
push str.Version
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
jne 0x416229
push 0x100
push str.Single
mov edx, dword [0x437cf8]
push edx
call fcn.0041baf0
add esp, 0xc
mov eax, dword [0x437cfc]
mov dword [0x437d00], eax
jmp 0x416262
lea ecx, [ebp - 0x100]
push ecx
push 0x100
mov edx, dword [0x437d00]
push edx
push 0x446bd0
push str.RootPath
mov eax, dword [0x437cf8]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
jne 0x416262
mov ecx, dword [0x437cfc]
mov dword [0x437d00], ecx
lea edx, [ebp - 0x100]
push edx
push 0x100
mov eax, dword [0x437d04]
push eax
push 0x446bd4
push str.WorkPath
push 0x437dc8
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
jne 0x416299
mov ecx, dword [0x437d00]
mov dword [0x437d04], ecx
mov edx, dword [0x437d04]
push edx
push str._s_GC_MGT.ini
mov eax, dword [0x437d0c]
push eax
call fcn.0041b1f9
add esp, 0xc
push 0x100
push 0
lea ecx, [ebp - 0x300]
push ecx
call fcn.0041b260
add esp, 0xc
mov edx, dword [0x437d04]
push edx
push str._s_log
lea eax, [ebp - 0x300]
push eax
call fcn.0041b1f9
add esp, 0xc
push 0
lea ecx, [ebp - 0x300]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea edx, [ebp - 0x300]
push edx
push str._s_except
mov eax, dword [0x437d08]
push eax
call fcn.0041b1f9
add esp, 0xc
push 0
mov ecx, dword [0x437d08]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov edx, dword [0x437d04]
push edx
push str._s_module.ini
mov eax, dword [0x437d10]
push eax
call fcn.0041b1f9
add esp, 0xc
mov ecx, dword [0x437d04]
push ecx
push str._s_log_SYSTrace.log
mov edx, dword [0x437d14]
push edx
call fcn.0041b1f9
add esp, 0xc
mov eax, dword [0x437d04]
push eax
push str._s_log_CFGTrace.log
push 0x4468cc
call fcn.0041b1f9
add esp, 0xc
mov ecx, dword [0x437d04]
push ecx
push str._s_log_COMTrace.log
mov edx, dword [0x437d18]
push edx
call fcn.0041b1f9
add esp, 0xc
lea eax, [ebp - 0x100]
push eax
push 0x12c
push 0x437e40
push 0x437e4c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push eax
call fcn.0041ab95
add esp, 4
mov word [0x447b80], ax
xor ecx, ecx
mov cx, word [0x447b80]
cmp ecx, 1
jl 0x4163ce
xor edx, edx
mov dx, word [0x447b80]
cmp edx, 0x1f4
jle 0x4163f5
xor eax, eax
mov ax, word [0x447b80]
cmp eax, 0x3e9
jl 0x4163ee
xor ecx, ecx
mov cx, word [0x447b80]
cmp ecx, 0x7530
jle 0x4163f5
xor al, al
jmp 0x4166da
lea edx, [ebp - 0x100]
push edx
push 1
push 0x437e54
push 0x437e60
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push eax
call fcn.0041ab95
add esp, 4
mov byte [0x447b82], al
xor eax, eax
mov al, byte [0x447b82]
cmp eax, 1
jl 0x416438
xor ecx, ecx
mov cl, byte [0x447b82]
cmp ecx, 0xfe
jle 0x41643f
xor al, al
jmp 0x4166da
lea edx, [ebp - 0x100]
push edx
push 1
push str.IsLeft
push 0x437e70
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
sub eax, 1
neg eax
sbb eax, eax
inc eax
mov byte [0x447bd9], al
lea eax, [ebp - 0x100]
push eax
push 0x578
push 0x437e78
push str.SYSTEM
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov word [0x447b8d], ax
xor ecx, ecx
mov cx, word [0x447b8d]
cmp ecx, 0x5dc
jle 0x4164a1
mov word [0x447b8d], 0x5dc
xor edx, edx
mov dx, word [0x447b8d]
cmp edx, 0x1f4
jge 0x4164bb
mov word [0x447b8d], 0x1f4
xor eax, eax
mov ax, word [0x447b80]
cmp eax, 1
jl 0x4164ff
xor ecx, ecx
mov cx, word [0x447b80]
cmp ecx, 0x1f4
jg 0x4164ff
mov word [0x447b8f], 8
mov word [0x447b83], 0x14
mov word [0x447b87], 0x3e8
mov word [0x447b85], 0
jmp 0x416523
mov word [0x447b8f], 4
mov word [0x447b83], 0
mov word [0x447b87], 0xa
mov word [0x447b85], 6
mov dword [ebp - 0x308], 0
jmp 0x41653e
mov edx, dword [ebp - 0x308]
add edx, 1
mov dword [ebp - 0x308], edx
xor eax, eax
mov ax, word [0x447b8f]
sub eax, 1
cmp dword [ebp - 0x308], eax
jge 0x4166ae
push 0x100
push 0
lea ecx, [ebp - 0x40c]
push ecx
call fcn.0041b260
add esp, 0xc
mov edx, dword [ebp - 0x308]
add edx, 1
push edx
push str.Extern__d
lea eax, [ebp - 0x40c]
push eax
call fcn.0041b1f9
add esp, 0xc
push 0x100
push 0
lea ecx, [ebp - 0x200]
push ecx
call fcn.0041b260
add esp, 0xc
lea edx, [ebp - 0x100]
push edx
push 0x100
lea eax, [ebp - 0x200]
push eax
push 0
push str.LocalIP
lea ecx, [ebp - 0x40c]
push ecx
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov dword [ebp - 0x304], eax
cmp dword [ebp - 0x304], 0
jne 0x4165e8
mov edx, dword [ebp - 0x308]
mov dword [edx*8 + 0x447b99], 0xffffffff
jmp 0x416601
lea eax, [ebp - 0x200]
push eax
call sub.WSOCK32.dll_inet_addr
mov ecx, dword [ebp - 0x308]
mov dword [ecx*8 + 0x447b99], eax
lea edx, [ebp - 0x100]
push edx
push 0xffff
push str.TCPSvrPort
lea eax, [ebp - 0x40c]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov ecx, dword [ebp - 0x308]
mov word [ecx*8 + 0x447b9d], ax
lea edx, [ebp - 0x100]
push edx
push 0xffff
push str.UDPSvrPort
lea eax, [ebp - 0x40c]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov ecx, dword [ebp - 0x308]
mov word [ecx*8 + 0x447b9f], ax
mov edx, dword [ebp - 0x308]
xor eax, eax
mov ax, word [edx*8 + 0x447b9d]
cmp eax, 0xffff
jne 0x4166a9
mov ecx, dword [ebp - 0x308]
xor edx, edx
mov dx, word [ecx*8 + 0x447b9f]
cmp edx, 0xffff
jne 0x4166a9
mov eax, dword [ebp - 0x308]
cmp dword [eax*8 + 0x447b99], 0xffffffff
jne 0x4166a9
mov ecx, dword [ebp - 0x308]
mov dword [ecx*8 + 0x447b99], 0
jmp 0x41652f
push 0x447cff
call fcn.00418c03
add esp, 4
test eax, eax
jne 0x4166d1
mov word [0x447cff], 0xffff
mov byte [0x447cfe], 0
jmp 0x4166d8
mov byte [0x447cfe], 1
mov al, 1
mov esp, ebp
pop ebp
ret