Function at 0x4a3bee
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Get local ipv4 addresses
Get socket information
Send data
Send data on socket

Disassembly:
push ebp
or eax, 0xffffffff
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x11c
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x4a3e9e
cld
xor eax, eax
lea edi, [ebp - 0x11c]
mov ecx, 4
rep stosd dword es:[edi], eax
push 6
push 1
push 2
call sub.WSOCK32.DLL_socket
mov word [ebp - 0x11c], 2
mov dword [ebx + 0x30], eax
mov dword [ebp - 0x120], 0x10
cmp dword [ebx + 0x28], 0
je 0x4a3d88
lea esi, [ebp - 0xdc]
push str.PASV_r_n
push 0xc8
push esi
call sub.msvcrt.dll__snprintf
mov edi, esi
cld
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
push 0
lea eax, [ecx - 1]
push eax
push esi
push dword [ebx + 0x2c]
call sub.WSOCK32.DLL_send
add esp, 0xc
mov edi, eax
test eax, eax
js 0x4a3e58
mov eax, ebx
call fcn.004a3282
cmp eax, 2
je 0x4a3cac
cmp eax, 5
je 0x4a3e87
push dword [ebx + 0x30]
call sub.WSOCK32.DLL_closesocket
mov dword [ebx + 0x30], 0xffffffff
mov dword [ebx + 0x28], 0
mov eax, ebx
add eax, dword [ebx + 0x448]
lea edi, [eax + 0x3c]
mov dl, byte [eax + 0x3c]
lea eax, [edx - 0x30]
cmp al, 9
seta cl
xor eax, eax
test dl, dl
setne al
test eax, ecx
je 0x4a3cd2
inc edi
mov dl, byte [edi]
jmp 0x4a3cba
lea eax, [ebp - 0xf8]
lea edx, [ebp - 0x10c]
push eax
lea eax, [ebp - 0xfc]
push eax
lea eax, [ebp - 0x100]
push eax
lea eax, [ebp - 0x104]
push eax
lea eax, [ebp - 0x108]
push eax
push edx
push str._u__u__u__u__u__u
push edi
call sub.msvcrt.dll_sscanf
add esp, 0x20
xor edx, edx
cmp eax, 6
je 0x4a3d37
push str.Invalid_answer_to_PASV_n
push 0x7d0
push 9
call fcn.004472ec
mov eax, dword [ebx + 0x30]
add esp, 0xc
cmp eax, 0xffffffff
je 0x4a3e96
push eax
jmp 0x4a3e8a
mov eax, dword [ebp + edx*4 - 0x10c]
mov byte [edx + ebp - 0xec], al
inc edx
cmp edx, 5
jle 0x4a3d37
mov eax, dword [ebp - 0xec]
push dword [ebp - 0x120]
mov dword [ebp - 0x118], eax
mov eax, dword [ebp - 0xe8]
mov word [ebp - 0x11a], ax
lea eax, [ebp - 0x11c]
push eax
push dword [ebx + 0x30]
call sub.WSOCK32.DLL_connect
test eax, eax
jns 0x4a3e9b
push str.Failed_to_create_a_data_connection
jmp 0x4a3dbd
lea edi, [ebp - 0x11c]
lea esi, [ebp - 0x120]
push esi
push edi
push eax
call sub.WSOCK32.DLL_getsockname
mov word [ebp - 0x11a], 0
push dword [ebp - 0x120]
push edi
push dword [ebx + 0x30]
call sub.WSOCK32.DLL_bind
test eax, eax
jns 0x4a3dcb
push str.bind_failed
push 0
push 9
call fcn.004472ec
jmp 0x4a3e87
push esi
push edi
push dword [ebx + 0x30]
call sub.WSOCK32.DLL_getsockname
push 1
push dword [ebx + 0x30]
call sub.WSOCK32.DLL_listen
test eax, eax
jns 0x4a3dea
push str.listen_failed
jmp 0x4a3dbd
movzx eax, byte [ebp - 0x119]
push eax
lea esi, [ebp - 0xdc]
movzx eax, byte [ebp - 0x11a]
push eax
mov edi, esi
movzx eax, byte [ebp - 0x115]
push eax
movzx eax, byte [ebp - 0x116]
push eax
movzx eax, byte [ebp - 0x117]
push eax
movzx eax, byte [ebp - 0x118]
push eax
push str.PORT__d__d__d__d__d__d_r_n
push 0xc8
push esi
call sub.msvcrt.dll__snprintf
mov byte [ebp - 0x15], 0
cld
xor eax, eax
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
add esp, 0x24
lea eax, [ecx - 1]
push 0
push eax
push esi
push dword [ebx + 0x2c]
call sub.WSOCK32.DLL_send
mov edi, eax
test eax, eax
jns 0x4a3e79
push str.send_failed
push 0
push 9
call fcn.004472ec
push dword [ebx + 0x30]
call sub.WSOCK32.DLL_closesocket
mov eax, edi
mov dword [ebx + 0x30], 0xffffffff
jmp 0x4a3e9e
push ebx
call fcn.004a3485
mov edi, eax
pop eax
cmp edi, 2
je 0x4a3e9b
push dword [ebx + 0x30]
call sub.WSOCK32.DLL_closesocket
mov dword [ebx + 0x30], 0xffffffff
or eax, 0xffffffff
jmp 0x4a3e9e
mov eax, dword [ebx + 0x30]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret