Function at 0x401a00
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 0x401a9c
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 0x401ce9
mov al, byte [esp + 0x22d]
test al, al
je 0x401adb
cmp al, bl
jne 0x401ce9
jmp 0x401ae3
cmp al, bl
jne 0x401bf5
mov edi, 0x414c0c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x401bf5
mov edi, 0x414c0c
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, 0x414d0c
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 0x414c0c
push edx
mov byte [esp + 0x134], 5
mov byte [esp + 0x135], bl
call edi
lea eax, [esp + ebx + 0x12f]
push 0x414d0c
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 0x401ce9
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 0x401ce9
mov al, byte [esp + 0x22d]
test al, al
jne 0x401ce9
mov edx, dword [esp + 0x488]
push edx
call dword [sym.imp.WS2_32.dll_gethostbyname]
test eax, eax
je 0x401cf6
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 0x401caa
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 0x401c8f
mov al, byte [esp + 0x22d]
test al, al
jne 0x401c8f
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