Function at 0x46f0e0
Capabilities:
Act as tcp client
Connect socket
Connect tcp socket
Connect udp socket
Create tcp socket
Create udp socket
Receive data
Receive data on socket
Send data
Send data on socket
Set socket configuration

Disassembly:
push 0xffffffffffffffff
mov eax, dword fs:[0]
push 0x4a453a
push eax
mov eax, 0x283c
mov dword fs:[0], esp
call fcn.004999f0
push ebx
push ebp
push esi
push edi
mov ebp, ecx
mov al, byte [esp + 0x2870]
push 0
lea ecx, [esp + 0x18]
mov dword [esp + 0x2858], 1
mov byte [esp + 0x18], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea eax, [esp + 0x2870]
mov edx, dword [ecx]
lea ecx, [esp + 0x14]
push edx
push 0
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov edx, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov byte [esp + 0x2854], 2
test edi, edi
jne 0x46f160
mov edi, edx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
lea esi, [esp + 0x4c]
sub edi, ecx
mov eax, ecx
mov dword [esp + 0x48], esi
mov esi, edi
mov edi, dword [esp + 0x48]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x2860]
and ecx, 3
test eax, eax
rep movsb byte es:[edi], byte [esi]
jne 0x46f194
mov eax, edx
push eax
call dword [sym.imp.WS2_32.dll_inet_addr]
mov edx, dword [esp + 0x286c]
xor ecx, ecx
mov dword [esp + 0x24], ecx
push edx
mov dword [esp + 0x2c], ecx
mov esi, eax
mov dword [esp + 0x30], ecx
mov word [esp + 0x28], 2
mov dword [esp + 0x34], ecx
call dword [sym.imp.WS2_32.dll_htons]
push 0
push 1
push 2
mov word [esp + 0x32], ax
mov dword [esp + 0x34], esi
call dword [sym.imp.WS2_32.dll_socket]
mov esi, eax
lea eax, [esp + 0x34]
push eax
push 0x8004667e
push esi
mov dword [esp + 0x40], 1
call dword [sym.imp.WS2_32.dll_ioctlsocket]
lea ecx, [esp + 0x24]
push 0x10
push ecx
push esi
call dword [sym.imp.WS2_32.dll_connect]
mov edx, dword [ebp + 0xa8]
mov edi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0x14
push edx
call edi
test eax, eax
jne 0x46f259
push esi
call dword [sym.imp.WS2_32.dll_closesocket]
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x2858], 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x2860]
mov byte [esp + 0x2858], 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov dword [esp + 0x2854], 0xffffffff
jmp 0x46f328
push 0
lea eax, [esp + 0x50]
push ebx
push eax
push esi
call dword [sym.imp.WS2_32.dll_send]
mov ecx, dword [ebp + 0xa8]
push 0xc8
push ecx
call edi
test eax, eax
je 0x46f217
xor ebx, ebx
lea edx, [esp + 0x4c]
push ebx
mov ecx, 0xa00
xor eax, eax
lea edi, [esp + 0x50]
push 0x2800
push edx
rep stosd dword es:[edi], eax
push esi
call dword [sym.imp.WS2_32.dll_recv]
push esi
mov ebp, eax
call dword [sym.imp.WS2_32.dll_closesocket]
or esi, 0xffffffff
cmp ebp, esi
jne 0x46f2f2
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x2858], 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x2860]
mov byte [esp + 0x2858], bl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x2874]
mov dword [esp + 0x2858], esi
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
xor al, al
jmp 0x46f464
cmp ebp, ebx
jne 0x46f33e
push 1
lea ecx, [esp + 0x18]
mov byte [esp + 0x2858], 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x2860]
mov byte [esp + 0x2858], 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov dword [esp + 0x2854], esi
push 1
lea ecx, [esp + 0x2874]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
xor al, al
jmp 0x46f464
mov al, byte [esp + 0x13]
push ebx
lea ecx, [esp + 0x3c]
mov byte [esp + 0x3c], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
push ebp
lea ecx, [esp + 0x40]
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x46f386
mov edi, dword [esp + 0x3c]
mov ecx, ebp
mov edx, ecx
lea esi, [esp + 0x4c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x40], ebp
mov byte [eax + ebp], 0
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
lea eax, [esp + 0x38]
mov byte [esp + 0x2854], 3
mov edx, dword [ecx]
mov ecx, dword [esp + 0x2880]
push edx
push ebx
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov eax, dword [esp + 0x3c]
cmp eax, ebx
je 0x46f3cf
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x46f3c6
cmp al, 0xff
je 0x46f3c6
dec al
mov byte [ecx], al
jmp 0x46f3cf
push ecx
call fcn.00437568
add esp, 4
mov ecx, dword [esp + 0x18]
cmp ecx, ebx
je 0x46f3f3
mov al, byte [ecx - 1]
test al, al
je 0x46f3e9
cmp al, 0xff
je 0x46f3e9
dec al
mov byte [ecx - 1], al
jmp 0x46f3f3
dec ecx
push ecx
call fcn.00437568
add esp, 4
mov ecx, dword [esp + 0x2860]
mov dword [esp + 0x18], ebx
cmp ecx, ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
je 0x46f426
mov al, byte [ecx - 1]
test al, al
je 0x46f41c
cmp al, 0xff
je 0x46f41c
dec al
mov byte [ecx - 1], al
jmp 0x46f426
dec ecx
push ecx
call fcn.00437568
add esp, 4
mov ecx, dword [esp + 0x2874]
mov dword [esp + 0x2860], ebx
cmp ecx, ebx
mov dword [esp + 0x2864], ebx
mov dword [esp + 0x2868], ebx
je 0x46f462
mov al, byte [ecx - 1]
test al, al
je 0x46f458
cmp al, 0xff
je 0x46f458
dec al
mov byte [ecx - 1], al
jmp 0x46f462
dec ecx
push ecx
call fcn.00437568
add esp, 4
mov al, 1
mov ecx, dword [esp + 0x284c]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x2848
ret 0x28