Function at 0x140015e10
Capabilities:
Get hostname
Initialize winsock library
Read .ini file

Disassembly:
push rsi
push rdi
push r14
sub rsp, 0x50
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x80], rbp
mov rsi, rdx
mov rdi, rcx
mov rbx, qword [rcx + 0xd740]
xor ebp, ebp
test rbx, rbx
je 0x140015e99
mov rcx, qword [rbx + 0x198]
call qword [sym.imp.WS2_32.dll_closesocket]
mov byte [rbx + 0x2f8], bpl
mov rcx, qword [rbx + 0x318]
test rcx, rcx
je 0x140015e68
call fcn.1400921a0
mov rcx, qword [rbx + 0x2f0]
test rcx, rcx
je 0x140015e7f
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov qword [rbx + 0x2f0], rbp
call qword [sym.imp.WS2_32.dll_WSACleanup]
mov edx, 0x320
mov rcx, rbx
call fcn.14011b120
mov ecx, 0x320
call fcn.14011b0e4
mov rbx, rax
mov qword [rsp + 0x30], rax
xor edx, edx
mov r8d, 0x198
mov rcx, rax
call fcn.14011fff0
mov qword [rbx + 0x198], 0xffffffffffffffff
mov qword [rbx + 0x1a0], 0xffffffffffffffff
mov qword [rbx + 0x1a8], 0xffffffffffffffff
mov qword [rbx + 0x1b0], 0xffffffffffffffff
mov dword [rbx + 0x1c8], ebp
lea rcx, [rbx + 0x1cc]
xor edx, edx
mov r8d, 0x11a
call fcn.14011fff0
mov qword [rbx + 0x2e8], 2
mov qword [rbx + 0x2f0], rbp
mov byte [rbx + 0x2f8], 0
mov dword [rbx + 0x2fc], ebp
xorps xmm0, xmm0
movups xmmword [rbx + 0x300], xmm0
mov dword [rbx + 0x314], ebp
mov qword [rbx + 0x318], rbp
mov eax, dword [0x14018783c]
mov dword [rbx + 0x310], eax
mov ecx, 0x202
mov rdx, rbx
call qword [sym.imp.WS2_32.dll_WSAStartup]
call fcn.140151210
nop
mov qword [rdi + 0xd740], rbx
lea rcx, [rdi + 0x2f0]
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov qword [rdi + 0x98], rbp
mov byte [rdi + 0xd770], 0
mov byte [rdi + 0xd68c], 0
mov word [rdi + 0xa8], 0
mov qword [rdi + 0x12b8], rbp
mov qword [rdi + 0x4ed8], rbp
mov qword [rdi + 0x4ee0], rbp
mov qword [rdi + 0xa0], 0xffffffffffffffff
mov byte [rdi + 0x1a3], 0
mov byte [rdi + 0x12b4], 0
mov qword [rdi + 0x1560], rbp
mov dword [rdi + 0x1568], ebp
mov qword [rdi + 0x16b0], rbp
mov dword [rdi + 0x16b8], ebp
mov qword [rdi + 0x52c0], 0xffffffffffffffff
mov qword [rdi + 0x720], rsi
mov dword [rdi + 0x52b4], ebp
mov qword [rdi + 0x4d18], rbp
mov qword [rdi + 0x4d20], rbp
mov byte [rdi + 0x4ee8], 0
mov byte [rdi + 0x4ef0], 0
mov byte [rdi + 0x4f10], 0
mov byte [rdi + 0x5010], 0
mov byte [rdi + 0x5110], 0
mov qword [rdi + 0x5278], rbp
mov qword [rdi + 0x5280], rbp
mov ecx, 0xf18
call fcn.14011b0e4
mov qword [rsp + 0x30], rax
mov rcx, rax
call fcn.14004b530
nop
mov qword [rdi + 0x4d28], rax
mov ecx, 0x120
call fcn.14011b0e4
mov qword [rsp + 0x30], rax
mov qword [rdi + 0x4d30], rax
mov rax, qword [rdi + 0x720]
add rax, 8
mov qword [rdi + 0xd748], rax
mov rax, qword [rdi + 0x4d28]
mov byte [rax + 0xf12], 0
mov rax, qword [rdi + 0x4d28]
mov byte [rax + 0xf13], 1
mov qword [rdi + 0x748], 0xffffffffffffffff
mov qword [rdi + 0x12ac], rbp
mov word [rdi + 0xd75c], 0
mov byte [rdi + 0x5238], 0
mov dword [rdi + 0x4d54], 1
mov ecx, 0x348
call fcn.14011b0e4
mov rbx, rax
mov qword [rsp + 0x30], rax
lea rax, vtable.CDSMPlugin.0
mov qword [rbx], rax
lea rcx, [rbx + 0x10]
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea rcx, [rbx + 0x320]
call qword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
mov word [rbx + 0x38], 0
mov dword [rbx + 8], ebp
mov qword [rbx + 0x310], rbp
mov qword [rbx + 0x318], rbp
lea rcx, [rbx + 0x3a]
lea rdx, str.Unknown
call fcn.14003c1f0
lea rcx, [rbx + 0xba]
lea rdx, str.0.0.0
call fcn.14003b910
lea rcx, [rbx + 0xca]
lea rdx, str.12_12_2002
call fcn.14003b910
lea rcx, [rbx + 0xda]
lea rdx, str.Someone
call fcn.14003c250
lea rcx, [rbx + 0x11a]
lea rdx, str.Plugin.dsm
call fcn.14003c1f0
mov qword [rbx + 0x1a0], rbp
mov qword [rbx + 0x2b0], rbp
mov qword [rbx + 0x2c0], rbp
mov qword [rbx + 0x2b8], rbp
mov qword [rbx + 0x2c8], rbp
mov qword [rbx + 0x2d0], rbp
mov qword [rbx + 0x2d8], rbp
mov qword [rbx + 0x2e0], rbp
mov qword [rbx + 0x2e8], rbp
mov qword [rbx + 0x2f0], rbp
mov qword [rbx + 0x2f8], rbp
mov qword [rbx + 0x300], rbp
mov qword [rbx + 0x308], rbp
mov qword [rdi + 0x4d58], rbx
mov byte [rdi + 0x4d60], 0
mov byte [rdi + 0x29d], 0
mov qword [rdi + 0x4d78], rbp
mov byte [rdi + 0x4d80], 0
mov qword [rdi + 0x4d84], rbp
mov dword [rdi + 0x4d8c], ebp
mov qword [rdi + 0x4d90], rbp
mov byte [rdi + 0x4d98], 0
mov qword [rdi + 0x4d9c], rbp
mov dword [rdi + 0x4da4], ebp
mov qword [rdi + 0x4da8], rbp
mov byte [rdi + 0x4db0], 0
mov qword [rdi + 0x4db4], rbp
mov dword [rdi + 0x4dbc], ebp
mov qword [rdi + 0x4d68], rbp
mov qword [rdi + 0x4d70], rbp
mov ecx, 0xf8
call fcn.14011b0e4
mov qword [rsp + 0x30], rax
mov dword [rax + 0xb0], 0
mov byte [rax + 0xb8], 0
mov qword [rdi + 0x16c0], rax
mov ecx, 0xf8
call fcn.14011b0e4
mov qword [rsp + 0x30], rax
mov dword [rax + 0xb0], 0
mov byte [rax + 0xb8], 0
mov qword [rdi + 0x16c8], rax
mov qword [rdi + 0x52a8], rbp
mov qword [rdi + 0x2c8], rbp
mov dword [rdi + 0x2c4], ebp
mov word [rdi + 0x52c9], 0
mov qword [rdi + 0x55fc], rbp
mov dword [rdi + 0x55f8], ebp
mov edx, 0x1000
mov rcx, rdi
call fcn.1400268d0
mov rsi, qword [rdi + 0x720]
lea rcx, [rsi + 0xfa0]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edx, ebp
mov rcx, rbp
lea rax, [rsi + 0xba0]
cmp qword [rax], 0
je 0x14001632a
inc edx
inc rcx
add rax, 8
cmp rcx, 0x80
jl 0x1400162d1
lea r8, str.Client_list_overflow__n
mov edx, 0xffffffff
lea rcx, vtable.Log.0
call fcn.1400153f0
mov r9d, reloc.WS2_32.dll_recv
lea r8, [0x1402bc190]
lea rdx, [0x1402bc450]
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxA]
mov ecx, 1
call qword [sym.imp.USER32.dll_PostQuitMessage]
jmp 0x14001634d
movsxd rax, edx
mov qword [rsi + rax*8 + 0xba0], rdi
lea r8, str.Registered_connection_with_app_n
mov edx, 4
lea rcx, vtable.Log.0
call fcn.1400153f0
lea rcx, [rsi + 0xfa0]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov qword [rdi + 0x5604], rbp
mov dword [rdi + 0x5610], ebp
call qword [sym.imp.WINMM.dll_timeGetTime]
mov dword [rdi + 0x560c], eax
mov word [rdi + 0x5614], 0
mov qword [rdi + 0x5618], rbp
mov qword [rdi + 0x5620], rbp
mov byte [rdi + 0x5628], 0
mov ecx, 0x40
call fcn.14011b0e4
mov qword [rsp + 0x30], rax
mov rcx, rax
call fcn.140091970
nop
mov qword [rdi + 0x5638], rax
mov ecx, 0x50
call fcn.14011b0e4
mov qword [rsp + 0x30], rax
mov rcx, rax
call fcn.140090a90
nop
mov qword [rdi + 0x5640], rax
mov ecx, 0x40
call fcn.14011b0e4
mov rbx, rax
mov qword [rsp + 0x30], rax
lea rax, vtable.rdr::xzInStream.0
mov qword [rbx], rax
mov qword [rbx + 0x18], rbp
mov qword [rbx + 0x20], 0x10000
mov qword [rbx + 0x28], rbp
mov dword [rbx + 0x30], ebp
mov ecx, 0x10000
call fcn.14011b4c0
mov qword [rbx + 0x38], rax
mov qword [rbx + 0x10], rax
mov qword [rbx + 8], rax
mov qword [rdi + 0x9650], rbx
mov byte [rdi + 0x1470], 0
mov qword [rdi + 0x14a0], rbp
mov ecx, 0xc90
call fcn.14011b0e4
mov qword [rsp + 0x30], rax
mov r8, rdi
mov rdx, qword [rdi + 0x720]
mov rcx, rax
call fcn.14003d740
nop
mov qword [rdi + 0x4d38], rax
mov qword [rdi + 0x16e0], rbp
mov dword [rdi + 0x16e8], ebp
mov qword [rdi + 0x16f0], rbp
mov dword [rdi + 0x16f8], ebp
mov ecx, WSACleanup
call fcn.14011b0e4
mov rbx, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [rdi + 0x720]
lea rax, vtable.TextChat.0
mov qword [rbx], rax
mov qword [rbx + 8], rcx
mov qword [rbx + 0x10], rdi
mov word [rbx + 0x28], 0
mov byte [rbx + 0x60], 0
mov ecx, 0x4000
call fcn.14011b4c0
mov qword [rbx + 0x30], rax
xor edx, edx
mov r8d, 0x4000
mov rcx, rax
call fcn.14011fff0
mov ecx, 0x4000
call fcn.14011b4c0
mov qword [rbx + 0x38], rax
xor edx, edx
mov r8d, 0x4000
mov rcx, rax
call fcn.14011fff0
mov ecx, 0x4000
call fcn.14011b4c0
mov qword [rbx + 0x40], rax
xor edx, edx
mov r8d, 0x4000
mov rcx, rax
call fcn.14011fff0
mov ecx, 0x80
call fcn.14011b4c0
mov qword [rbx + 0x48], rax
xorps xmm0, xmm0
movups xmmword [rax], xmm0
movups xmmword [rax + 0x10], xmm0
movups xmmword [rax + 0x20], xmm0
movups xmmword [rax + 0x30], xmm0
movups xmmword [rax + 0x40], xmm0
movups xmmword [rax + 0x50], xmm0
movups xmmword [rax + 0x60], xmm0
movups xmmword [rax + 0x70], xmm0
mov ecx, 0x80
call fcn.14011b4c0
mov qword [rbx + 0x50], rax
xorps xmm0, xmm0
movups xmmword [rax], xmm0
movups xmmword [rax + 0x10], xmm0
movups xmmword [rax + 0x20], xmm0
movups xmmword [rax + 0x30], xmm0
movups xmmword [rax + 0x40], xmm0
movups xmmword [rax + 0x50], xmm0
movups xmmword [rax + 0x60], xmm0
movups xmmword [rax + 0x70], xmm0
mov ecx, 0x4000
call fcn.14011b4c0
mov qword [rbx + 0x58], rax
xor edx, edx
mov r8d, 0x4000
mov rcx, rax
call fcn.14011fff0
mov dword [rsp + 0x38], 0x80
lea rdx, [rsp + 0x38]
mov rcx, qword [rbx + 0x50]
call qword [sym.imp.KERNEL32.dll_GetComputerNameA]
test eax, eax
je 0x1400165be
cmp dword [rsp + 0x38], 0x80
jb 0x1400165be
mov rax, qword [rbx + 0x50]
mov byte [rax + 0x7c], 0x2e
mov rax, qword [rbx + 0x50]
mov byte [rax + 0x7d], 0x2e
mov rax, qword [rbx + 0x50]
mov byte [rax + 0x7e], 0x2e
mov rax, qword [rbx + 0x50]
mov byte [rax + 0x7f], 0
lea rcx, str.RICHED32.DLL
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 0x68], rax
test rax, rax
jne 0x1400165ef
lea r9d, [rax + 0x30]
lea r8, [0x1402bd250]
lea rdx, [0x1402bddd0]
xor ecx, ecx
call qword [sym.imp.USER32.dll_MessageBoxA]
nop
mov qword [rdi + 0x4d40], rbx
mov word [rdi + 0x5239], 0
mov dword [rdi + 0x4d48], 1
mov dword [rdi + 0x4d4c], 3
mov byte [rdi + 0x2b0], 0
mov byte [rdi + 0x52e0], 0
mov qword [rdi + 0x55e4], rbp
mov dword [rdi + 0x55ec], ebp
mov qword [rdi + 0x12b8], rbp
mov qword [rdi + 0x12c0], rbp
mov qword [rdi + 0x12c8], rbp
mov qword [rdi + 0x12d0], rbp
mov qword [rdi + 0xd760], rbp
mov qword [rdi + 0x12d8], rbp
mov qword [rdi + 0x12e0], rbp
mov qword [rdi + 0x12e8], rbp
mov qword [rdi + 0x12f0], rbp
mov word [rdi + 0x1300], 0
mov dword [rdi + 0x1558], 0xffffffff
mov dword [rdi + 0x155c], 0xfffffffe
mov dword [rdi + 0x55f4], ebp
mov qword [rdi + 0xd660], rbp
mov qword [rdi + 0xd670], rbp
mov qword [rdi + 0xd678], rbp
mov qword [rdi + 0xd668], rbp
mov dword [rdi + 0xd680], ebp
lea r8, [0x14019581a]
mov edx, 0xfa
lea rcx, [rdi + 0x1a3]
call fcn.14012209c
xor r9d, r9d
xor r8d, r8d
xor edx, edx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_CreateEventA]
mov qword [rdi + 0x2a0], rax
xor r9d, r9d
xor edx, edx
xor ecx, ecx
lea r8d, [r9 + 1]
call qword [sym.imp.KERNEL32.dll_CreateEventA]
mov qword [rdi + 0x2a8], rax
mov qword [rdi + 0xd684], rbp
mov qword [rdi + 0x16d0], rbp
mov qword [rdi + 0x16e0], rbp
mov qword [rdi + 0x16f0], rbp
mov qword [rdi + 0x16b0], rbp
mov qword [rdi + 0x1480], rbp
mov qword [rdi + 0x1488], rbp
mov dword [rdi + 0x564c], 1
mov dword [rdi + 0x965c], 1
mov dword [rdi + 0x9658], ebp
mov rax, qword [rdi + 0xd748]
mov ecx, dword [rax + 0x7f0]
mov dword [rdi + 0xd754], ecx
mov qword [rdi + 0xd690], rbp
mov qword [rdi + 0x12f8], rbp
mov qword [rdi + 0x1478], rbp
mov byte [rdi + 0x4d50], 0
mov byte [rdi + 0xd698], 0
mov rcx, qword [rdi + 0x720]
mov dword [rsp + 0x28], 0x1010
mov dword [rsp + 0x20], ebp
xor r9d, r9d
xor r8d, r8d
lea rdx, str.tlbarbig.bmp
mov rcx, qword [rcx + 0xb98]
call qword [sym.imp.USER32.dll_LoadImageA]
mov qword [rdi + 0x728], rax
mov rcx, qword [rdi + 0x720]
mov dword [rsp + 0x28], 0x1010
mov dword [rsp + 0x20], ebp
xor r9d, r9d
xor r8d, r8d
lea rdx, str.tlbarsmall.bmp
mov rcx, qword [rcx + 0xb98]
call qword [sym.imp.USER32.dll_LoadImageA]
mov qword [rdi + 0x730], rax
mov rcx, qword [rdi + 0x720]
mov dword [rsp + 0x28], 0x1010
mov dword [rsp + 0x20], ebp
xor r9d, r9d
xor r8d, r8d
lea rdx, str.tlbarbigx.bmp
mov rcx, qword [rcx + 0xb98]
call qword [sym.imp.USER32.dll_LoadImageA]
mov qword [rdi + 0x738], rax
mov rcx, qword [rdi + 0x720]
mov dword [rsp + 0x28], 0x1010
mov dword [rsp + 0x20], ebp
xor r9d, r9d
xor r8d, r8d
lea rdx, str.tlbarsmallx.bmp
mov rcx, qword [rcx + 0xb98]
call qword [sym.imp.USER32.dll_LoadImageA]
mov qword [rdi + 0x740], rax
mov qword [rdi + 0xd768], rbp
mov qword [rdi + 0x5240], rbp
mov qword [rdi + 0x5250], rbp
mov qword [rdi + 0x5258], rbp
mov qword [rdi + 0x5248], rbp
mov dword [rdi + 0xd69c], ebp
mov dword [rdi + 0xd6a4], ebp
mov dword [rdi + 0xd6a8], 0x1388
mov dword [rdi + 0xd6a0], 0xbb7
mov dword [rdi + 0x52cc], ebp
mov dword [rdi + 0x52dc], ebp
mov byte [rdi + 0x52c8], 0
lea rcx, [rdi + 0x15e8]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov r9, qword [rdi + 0xd748]
add r9, 0x97e
lea r8, str.Saving_to__s_n
mov edx, 1
lea rcx, vtable.Log.0
call fcn.1400153f0
mov r9, qword [rdi + 0xd748]
add r9, 0x97e
mov r8d, 7
lea rdx, str.ClipboardPrefs
lea rcx, str.connection
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
or eax, 1
test al, 2
jne 0x140016908
mov dword [rdi + 0x14c8], ebp
test al, 4
jne 0x140016912
mov dword [rdi + 0x14cc], ebp
lea rcx, [rdi + 0x15e8]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov word [rdi + 0x4d61], 0
mov rax, qword [rdi + 0xd748]
mov ecx, dword [rax + 0x35c]
mov dword [rdi + 0x1320], ecx
mov byte [rdi + 0xd6b8], 0
mov ecx, 0xc0
call fcn.14011b0e4
mov rbx, rax
mov qword [rsp + 0x30], rax
lea rax, vtable.ViewerDirectxClass.0
mov qword [rbx], rax
mov byte [rbx + 0x84], 0
mov qword [rbx + 0x38], rbp
mov qword [rbx + 0x30], rbp
mov qword [rbx + 0x28], rbp
mov byte [rbx + 0xac], 1
mov qword [rbx + 0xb0], rbp
mov qword [rbx + 0xb8], rbp
lea rcx, str.d3d9
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rbx + 0xb0], rax
test rax, rax
je 0x1400169cf
lea rdx, str.Direct3DCreate9
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rbx + 0xb8], rax
test rax, rax
jne 0x1400169cf
mov rcx, qword [rbx + 0xb0]
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov qword [rbx + 0xb0], rbp
mov qword [rdi + 0xd6b0], rbx
mov ecx, 0x38
call fcn.14011b0e4
mov rbx, rax
mov qword [rsp + 0x30], rax
mov dword [rax + 0x18], ebp
mov qword [rax], rbp
mov qword [rax + 8], rbp
mov qword [rax + 0x10], rbp
mov dword [rax + 0x28], ebp
lea rdx, [rax + 0x2c]
call fcn.140065610
mov byte [rbx + 0x34], 0
mov qword [rdi + 0x718], rbx
mov qword [rbx + 0x20], rdi
mov ecx, 0xf8
call fcn.14011b0e4
mov qword [rsp + 0x30], rax
mov dword [rax + 0xb0], 0
mov byte [rax + 0xb8], 0
mov qword [rdi + 0x318], rax
mov byte [rdi + 0xd6f8], 1
mov dword [rdi + 0xd6fc], 0xffffffff
mov byte [rdi + 0xd700], 0
mov byte [rdi + 0xd771], 0
lea rcx, str.Shcore.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rdi + 0xd720], rax
test rax, rax
je 0x140016a87
lea rdx, str.GetDpiForMonitor
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0xd730], rax
mov rbx, qword [rdi + 0xd760]
cmp qword [rdi + 0xd730], 0
je 0x140016ad1
call fcn.140048680
test eax, eax
je 0x140016ab1
mov edx, 2
mov rcx, rbx
call qword [0x1402baca0]
jmp 0x140016ab6
mov eax, 0x42
lea r9, [rsp + 0x30]
lea r8, [rsp + 0x38]
xor edx, edx
mov rcx, rax
call qword [rdi + 0xd730]
mov eax, dword [rsp + 0x38]
jmp 0x140016ae8
mov rcx, rbx
call qword [sym.imp.USER32.dll_GetDC]
mov rcx, rax
mov edx, 0x58
call qword [sym.imp.GDI32.dll_GetDeviceCaps]
mov dword [rdi + 0xd714], eax
mov dword [rdi + 0xd718], eax
mov r9d, dword [rdi + 0xd714]
lea r8, str.DPI__d_n
mov edx, 2
lea rcx, vtable.Log.0
call fcn.1400153f0
mov byte [rdi + 0xd750], 0
lea rcx, str.user32.dll
call qword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov qword [rdi + 0xd728], rax
mov qword [rdi + 0xd738], rbp
mov rcx, qword [rdi + 0xd728]
test rcx, rcx
je 0x140016b55
lea rdx, str.AdjustWindowRectExForDpi
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov qword [rdi + 0xd738], rax
mov rbx, qword [rsp + 0x78]
mov rbp, qword [rsp + 0x80]
add rsp, 0x50
pop r14
pop rdi
pop rsi
ret