Function at 0x4a56c0c4
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Get socket status
Initialize winsock library
Resolve dns
Set socket configuration

Disassembly:
push ebp
mov ebp, esp
push ecx
mov ecx, 0x61
push 0
push 0
dec ecx
jne 0x4a56c0cd
push ecx
xchg dword [ebp - 4], ecx
push ebx
push esi
push edi
test dl, dl
je 0x4a56c0e7
add esp, 0xfffffff0
call fcn.4a506118
mov edi, ecx
mov byte [ebp - 0xd], dl
mov ebx, eax
xor eax, eax
push ebp
push 0x4a56c86a
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
mov eax, ebx
call fcn.4a505b48
lea eax, [ebp - 0x1bc]
push eax
push 0x101
call sub.wsock32.dll_WSAStartup
lea eax, [ebx + 4]
mov edx, edi
call fcn.4a5083c0
push 0
push 1
push 2
call sub.wsock32.dll_socket
mov esi, eax
mov dword [ebx + 0x50], esi
inc esi
je 0x4a56c7d8
mov eax, edi
call fcn.4a507f78
push eax
call sub.wsock32.dll_inet_addr
mov esi, eax
cmp esi, 0xffffffff
jne 0x4a56c163
mov eax, edi
call fcn.4a507f78
push eax
call sub.wsock32.dll_gethostbyname
test eax, eax
je 0x4a56c163
mov eax, dword [eax + 0xc]
mov eax, dword [eax]
mov esi, dword [eax]
cmp esi, 0xffffffff
je 0x4a56c7a8
cmp word [ebp + 0x18], 0
jne 0x4a56c1a1
cmp byte [ebp + 0x14], 0
je 0x4a56c181
mov word [ebp + 0x18], 0x1d1
jmp 0x4a56c1a1
cmp byte [ebp + 0x10], 0
je 0x4a56c19b
cmp dword [ebp + 0xc], 0
jne 0x4a56c193
cmp dword [ebp + 8], 0
je 0x4a56c19b
mov word [ebp + 0x18], 0x24b
jmp 0x4a56c1a1
mov word [ebp + 0x18], 0x19
mov word [ebp - 0x2c], 2
movzx eax, word [ebp + 0x18]
push eax
call sub.wsock32.dll_htons
mov word [ebp - 0x2a], ax
mov dword [ebp - 0x28], esi
mov esi, 0x10000
mov dword [ebx + 0x74], esi
push 4
push 0x1000
push esi
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov dword [ebx + 0x78], eax
mov dword [ebp - 0x14], 1
lea eax, [ebp - 0x14]
push eax
push 0x8004667e
mov eax, dword [ebx + 0x50]
push eax
call sub.wsock32.dll_ioctlsocket
push 0x10
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [ebx + 0x50]
push eax
call sub.wsock32.dll_connect
mov dword [ebp - 0x2c0], 1
mov eax, dword [ebx + 0x50]
mov dword [ebp - 0x2bc], eax
mov eax, dword [0x4a5e8454]
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x1c]
push eax
push 0
lea eax, [ebp - 0x2c0]
push eax
push 0
push 0
call sub.wsock32.dll_select
test eax, eax
jle 0x4a56c796
xor eax, eax
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x14]
push eax
push 0x8004667e
mov eax, dword [ebx + 0x50]
push eax
call sub.wsock32.dll_ioctlsocket
cmp byte [ebp + 0x14], 0
je 0x4a56c264
mov eax, ebx
call fcn.4a56cb60
test al, al
je 0x4a56c784
cmp dword [0x4a5e8450], 0
je 0x4a56c27d
lea eax, [ebp - 0xc]
mov edx, dword [0x4a5e8450]
call fcn.4a507abc
jmp 0x4a56c29b
lea eax, [ebp - 0x2c4]
call fcn.4a552bbc
mov edx, dword [ebp - 0x2c4]
lea eax, [ebp - 0xc]
mov ecx, 0
call fcn.4a508124
lea eax, [ebp - 4]
call fcn.4a50763c
mov ecx, eax
mov edx, 0x4a56c8a4
mov eax, ebx
call fcn.4a56d504
test al, al
je 0x4a56c720
lea eax, [ebp - 4]
call fcn.4a50763c
push eax
lea eax, [ebp - 0x2c8]
mov ecx, dword [ebp - 0xc]
mov edx, 0x4a56c8b4
call fcn.4a507dac
mov edx, dword [ebp - 0x2c8]
mov ecx, 0x4a56c8c8
mov eax, ebx
call fcn.4a56d398
test al, al
jne 0x4a56c321
lea eax, [ebp - 4]
call fcn.4a50763c
push eax
lea eax, [ebp - 0x2cc]
mov ecx, dword [ebp - 0xc]
mov edx, 0x4a56c8d8
call fcn.4a507dac
mov edx, dword [ebp - 0x2cc]
mov ecx, 0x4a56c8c8
mov eax, ebx
call fcn.4a56d398
test al, al
je 0x4a56c720
mov byte [ebx + 0x88], 1
cmp byte [ebp + 0x14], 0
jne 0x4a56c36e
push 0x7fffffff
mov esi, dword [0x4a5ed544]
mov esi, dword [esi]
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, 0x4a56c8ec
call esi
test eax, eax
jne 0x4a56c372
push 0x7fffffff
mov esi, dword [0x4a5ed544]
mov esi, dword [esi]
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, 0x4a56c908
call esi
test eax, eax
jne 0x4a56c372
xor eax, eax
jmp 0x4a56c374
mov al, 1
mov byte [ebx + 0x8a], al
cmp byte [ebx + 0x8a], 0
je 0x4a56c3cf
cmp byte [ebp + 0x10], 0
jne 0x4a56c3d3
cmp dword [ebp + 0xc], 0
je 0x4a56c3cf
push 0x7fffffff
mov esi, dword [0x4a5ed544]
mov esi, dword [esi]
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, 0x4a56c924
call esi
test eax, eax
jne 0x4a56c3cf
push 0x7fffffff
mov esi, dword [0x4a5ed544]
mov esi, dword [esi]
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, 0x4a56c93c
call esi
test eax, eax
je 0x4a56c3d3
xor eax, eax
jmp 0x4a56c3d5
mov al, 1
mov byte [ebx + 0x8b], al
cmp byte [ebx + 0x8b], 0
je 0x4a56c481
lea eax, [ebp - 4]
call fcn.4a50763c
push eax
mov ecx, 0x4a56c8a4
mov edx, 0x4a56c954
mov eax, ebx
call fcn.4a56d398
test al, al
je 0x4a56c69b
mov eax, ebx
call fcn.4a56cb60
test al, al
je 0x4a56c69b
lea eax, [ebp - 4]
call fcn.4a50763c
push eax
lea eax, [ebp - 0x2d0]
mov ecx, dword [ebp - 0xc]
mov edx, 0x4a56c8b4
call fcn.4a507dac
mov edx, dword [ebp - 0x2d0]
mov ecx, 0x4a56c8c8
mov eax, ebx
call fcn.4a56d398
test al, al
jne 0x4a56c481
lea eax, [ebp - 8]
call fcn.4a50763c
push eax
lea eax, [ebp - 0x2d4]
mov ecx, dword [ebp - 0xc]
mov edx, 0x4a56c8d8
call fcn.4a507dac
mov edx, dword [ebp - 0x2d4]
mov ecx, 0x4a56c8c8
mov eax, ebx
call fcn.4a56d398
test al, al
je 0x4a56c69b
mov byte [ebx + 0x8c], 1
mov byte [ebx + 0x8e], 1
push 0
mov esi, dword [0x4a5ed608]
mov esi, dword [esi]
lea eax, [ebp - 4]
mov ecx, 0x4a56c96c
mov edx, 0x4a56c97c
call esi
push 0
mov esi, dword [0x4a5ed608]
mov esi, dword [esi]
lea eax, [ebp - 4]
mov ecx, 0x4a56c96c
mov edx, 0x4a56c98c
call esi
push 0x7fffffff
mov esi, dword [0x4a5ed544]
mov esi, dword [esi]
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, 0x4a56c99c
call esi
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jle 0x4a56c7d8
mov ecx, dword [ebp - 0x14]
inc ecx
lea eax, [ebp - 4]
mov edx, 1
call fcn.4a507ff0
push 0x7fffffff
mov esi, dword [0x4a5ed5f4]
mov esi, dword [esi]
mov ecx, 1
mov edx, dword [ebp - 4]
mov eax, 0x4a56c9b4
call esi
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jle 0x4a56c530
lea eax, [ebp - 4]
mov ecx, 0x7fffffff
mov edx, dword [ebp - 0x14]
call fcn.4a507ff0
push 0x7fffffff
lea eax, [ebp - 0x2d8]
mov ecx, 0x4a56c96c
mov edx, dword [ebp - 4]
call fcn.4a507dac
mov edx, dword [ebp - 0x2d8]
mov esi, dword [0x4a5ed544]
mov esi, dword [esi]
mov ecx, 1
mov eax, 0x4a56c9c4
call esi
test eax, eax
jle 0x4a56c7d8
mov byte [ebx + 0x8d], 1
cmp dword [ebp + 0xc], 0
jne 0x4a56c581
cmp dword [ebp + 8], 0
je 0x4a56c61f
lea eax, [ebp - 4]
call fcn.4a50763c
push eax
mov ecx, 0x4a56c9d8
mov edx, 0x4a56c9e8
mov eax, ebx
call fcn.4a56d398
test al, al
je 0x4a56c61b
lea eax, [ebp - 4]
call fcn.4a50763c
push eax
lea edx, [ebp - 0x2e0]
mov eax, dword [ebp + 0xc]
call fcn.4a512318
mov eax, dword [ebp - 0x2e0]
lea edx, [ebp - 0x2dc]
call fcn.4a52438c
mov edx, dword [ebp - 0x2dc]
mov ecx, 0x4a56c9d8
mov eax, ebx
call fcn.4a56d398
test al, al
je 0x4a56c61b
lea eax, [ebp - 4]
call fcn.4a50763c
push eax
lea edx, [ebp - 0x2e8]
mov eax, dword [ebp + 8]
call fcn.4a512318
mov eax, dword [ebp - 0x2e8]
lea edx, [ebp - 0x2e4]
call fcn.4a52438c
mov edx, dword [ebp - 0x2e4]
mov ecx, 0x4a56ca00
mov eax, ebx
call fcn.4a56d398
test al, al
jne 0x4a56c61f
xor eax, eax
jmp 0x4a56c621
mov al, 1
mov byte [ebx + 0x8e], al
cmp byte [ebx + 0x8e], 0
jne 0x4a56c7d8
push 0x4a56ca10
lea eax, [ebp - 0x2f4]
push eax
mov esi, dword [0x4a5ed3b4]
mov esi, dword [esi]
mov cl, 0xa
mov edx, 1
mov eax, dword [ebp - 4]
call esi
mov eax, dword [ebp - 0x2f4]
mov esi, dword [0x4a5ed5a4]
mov esi, dword [esi]
lea edx, [ebp - 0x2f0]
call esi
mov edx, dword [ebp - 0x2f0]
lea eax, [ebp - 0x2ec]
call fcn.4a5083c0
push dword [ebp - 0x2ec]
push 0x4a56ca4c
lea eax, [ebx + 0x94]
mov edx, 3
call fcn.4a508570
jmp 0x4a56c7d8
cmp byte [ebx + 0x89], 0
jne 0x4a56c6b9
lea eax, [ebx + 0x94]
mov edx, 0x4a56ca5c
call fcn.4a5079d8
jmp 0x4a56c7d8
push 0x4a56ca80
lea eax, [ebp - 0x300]
push eax
mov esi, dword [0x4a5ed3b4]
mov esi, dword [esi]
mov cl, 0xa
mov edx, 1
mov eax, dword [ebp - 4]
call esi
mov eax, dword [ebp - 0x300]
mov esi, dword [0x4a5ed5a4]
mov esi, dword [esi]
lea edx, [ebp - 0x2fc]
call esi
mov edx, dword [ebp - 0x2fc]
lea eax, [ebp - 0x2f8]
call fcn.4a5083c0
push dword [ebp - 0x2f8]
push 0x4a56ca4c
lea eax, [ebx + 0x94]
mov edx, 3
call fcn.4a508570
jmp 0x4a56c7d8
push 0x4a56cab0
lea eax, [ebp - 0x30c]
push eax
mov esi, dword [0x4a5ed3b4]
mov esi, dword [esi]
mov cl, 0xa
mov edx, 1
mov eax, dword [ebp - 4]
call esi
mov eax, dword [ebp - 0x30c]
mov esi, dword [0x4a5ed5a4]
mov esi, dword [esi]
lea edx, [ebp - 0x308]
call esi
mov edx, dword [ebp - 0x308]
lea eax, [ebp - 0x304]
call fcn.4a5083c0
push dword [ebp - 0x304]
push 0x4a56ca4c
lea eax, [ebx + 0x94]
mov edx, 3
call fcn.4a508570
jmp 0x4a56c7d8
lea eax, [ebx + 0x94]
mov edx, 0x4a56cad8
call fcn.4a5079d8
jmp 0x4a56c7d8
lea eax, [ebx + 0x94]
mov edx, 0x4a56cafc
call fcn.4a5079d8
jmp 0x4a56c7d8
push 0x4a56cb38
call sub.wsock32.dll_WSAGetLastError
lea edx, [ebp - 0x310]
call fcn.4a511d04
push dword [ebp - 0x310]
push 0x4a56ca4c
lea eax, [ebx + 0x94]
mov edx, 3
call fcn.4a508570
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4a56c874
lea eax, [ebp - 0x310]
call fcn.4a507618
lea eax, [ebp - 0x30c]
mov edx, 2
call fcn.4a5076a8
lea eax, [ebp - 0x304]
call fcn.4a507618
lea eax, [ebp - 0x300]
mov edx, 2
call fcn.4a5076a8
lea eax, [ebp - 0x2f8]
call fcn.4a507618
lea eax, [ebp - 0x2f4]
mov edx, 2
call fcn.4a5076a8
lea eax, [ebp - 0x2ec]
call fcn.4a507618
lea eax, [ebp - 0x2e8]
mov edx, 9
call fcn.4a5076a8
lea eax, [ebp - 0x2c4]
call fcn.4a507618
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.4a5076a8
ret