Function at 0x401eb0
Capabilities:
Get socket status
Receive data
Receive data on socket
Resolve dns
Send data
Send data on socket

Disassembly:
sub esp, 0x478
push ebx
push esi
mov esi, ecx
push edi
push 0
lea eax, [esp + 0x10]
mov ecx, dword [esi + 0xa8]
push 4
mov bl, 2
push eax
push ecx
mov dword [esp + 0x20], 3
mov dword [esp + 0x24], 0
mov byte [esp + 0x1c], 5
mov byte [esp + 0x1d], bl
mov byte [esp + 0x1e], 0
mov byte [esp + 0x1f], bl
call dword [sym.imp.WS2_32.dll_send]
mov ecx, 0x96
xor eax, eax
lea edi, [esp + 0x22c]
mov edx, dword [esi + 0xa8]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x10]
lea ecx, [esp + 0x24]
push eax
push 0
push 0
push ecx
push 0
mov dword [esp + 0x3c], edx
mov dword [esp + 0x38], 1
call dword [sym.imp.WS2_32.dll_select]
test eax, eax
jg 0x401f4c
mov edx, dword [esi + 0xa8]
push edx
call dword [sym.imp.WS2_32.dll_closesocket]
pop edi
pop esi
xor al, al
pop ebx
add esp, 0x478
ret 8
mov ecx, dword [esi + 0xa8]
push 0
lea eax, [esp + 0x230]
push 0x258
push eax
push ecx
call dword [sym.imp.WS2_32.dll_recv]
cmp byte [esp + 0x22c], 5
jne 0x402199
mov al, byte [esp + 0x22d]
test al, al
je 0x401f8b
cmp al, bl
jne 0x402199
jmp 0x401f93
cmp al, bl
jne 0x4020a5
mov edi, 0x41a060
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x4020a5
mov edi, 0x41a060
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, 0x41a160
mov ebx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ebp
mov ebp, ecx
mov ecx, 0x40
lea edi, [esp + 0x12c]
lea edx, [esp + 0x12e]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x41a060
push edx
mov byte [esp + 0x134], 5
mov byte [esp + 0x135], bl
call edi
lea eax, [esp + ebx + 0x12f]
push 0x41a160
push eax
mov dword [esp + ebx + 0x136], ebp
call edi
mov eax, dword [esi + 0xa8]
lea ecx, [ebx + ebp + 3]
push 0
lea edx, [esp + 0x130]
push ecx
push edx
push eax
call dword [sym.imp.WS2_32.dll_send]
lea edx, [esp + 0x14]
xor eax, eax
mov ecx, 0x96
lea edi, [esp + 0x230]
push edx
push eax
rep stosd dword es:[edi], eax
mov ecx, dword [esi + 0xa8]
push eax
lea eax, [esp + 0x34]
mov dword [esp + 0x38], ecx
push eax
push 0
mov dword [esp + 0x3c], 1
call dword [sym.imp.WS2_32.dll_select]
test eax, eax
pop ebp
jle 0x402199
mov eax, dword [esi + 0xa8]
push 0
lea edx, [esp + 0x230]
push 0x258
push edx
push eax
call dword [sym.imp.WS2_32.dll_recv]
cmp byte [esp + 0x22c], 5
jne 0x402199
mov al, byte [esp + 0x22d]
test al, al
jne 0x402199
mov edx, dword [esp + 0x488]
push edx
call dword [sym.imp.WS2_32.dll_gethostbyname]
test eax, eax
je 0x4021a6
mov byte [esp + 0x18], 5
mov byte [esp + 0x19], 1
mov byte [esp + 0x1a], 0
mov byte [esp + 0x1b], 1
mov eax, dword [eax + 0xc]
mov ecx, dword [eax]
mov eax, dword [esp + 0x48c]
push eax
mov edx, dword [ecx]
mov dword [esp + 0x20], edx
call dword [sym.imp.WS2_32.dll_ntohs]
mov edx, dword [esi + 0xa8]
push 0
lea ecx, [esp + 0x1c]
push 0xa
push ecx
push edx
mov word [esp + 0x30], ax
call dword [sym.imp.WS2_32.dll_send]
mov ecx, 0x96
xor eax, eax
lea edi, [esp + 0x22c]
lea edx, [esp + 0x24]
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0xa8]
lea ecx, [esp + 0x10]
push ecx
push 0
push 0
push edx
push 0
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], 1
call dword [sym.imp.WS2_32.dll_select]
test eax, eax
jg 0x40215a
mov eax, dword [esi + 0xa8]
push eax
call dword [sym.imp.WS2_32.dll_closesocket]
pop edi
pop esi
xor al, al
pop ebx
add esp, 0x478
ret 8
mov edx, dword [esi + 0xa8]
push 0
lea ecx, [esp + 0x230]
push 0x258
push ecx
push edx
call dword [sym.imp.WS2_32.dll_recv]
cmp byte [esp + 0x22c], 5
jne 0x40213f
mov al, byte [esp + 0x22d]
test al, al
jne 0x40213f
pop edi
pop esi
mov al, 1
pop ebx
add esp, 0x478
ret 8
mov ecx, dword [esi + 0xa8]
push ecx
call dword [sym.imp.WS2_32.dll_closesocket]
pop edi
pop esi
xor al, al
pop ebx
add esp, 0x478
ret 8