Function at 0x4018a0
Capabilities:
Get socket status
Print debug messages
Receive data
Receive data on socket

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x96c
mov eax, dword [0x4a4300]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x3b8
lea eax, [ebp - 0x838]
mov esi, ecx
xorps xmm0, xmm0
mov dword [ebp - 0x95c], esi
push 0
push eax
movlpd qword [ebp - 0x840], xmm0
call fcn.00452270
add esp, 0xc
lea edi, [esi*4 + 0x4a8c88]
lea ebx, [ebp - 0x840]
xor esi, esi
mov edi, edi
mov eax, dword [esi + 0x4a8b50]
or eax, dword [esi + 0x4a8b54]
je 0x40199b
mov ecx, dword [edi]
test ecx, ecx
je 0x40199b
cmp dword [esi + 0x4a8c60], 0
je 0x40199b
call fcn.00401460
mov dword [ebx + 0xc], eax
mov eax, dword [esi + 0x4a8b50]
mov dword [ebx], eax
mov eax, dword [esi + 0x4a8b54]
mov dword [ebx + 4], eax
mov eax, dword [esi + 0x4a8b58]
push 0x1ff
mov dword [ebx + 8], eax
lea eax, [ebp - 0x207]
push 0
push eax
mov byte [ebp - 0x208], 0
call fcn.00452270
movzx eax, byte [edi + 3]
add esp, 0xc
push eax
movzx eax, byte [edi + 2]
push eax
movzx eax, byte [edi + 1]
push eax
movzx eax, byte [edi]
push eax
lea eax, [ebp - 0x208]
push 0x4826c4
push eax
call fcn.004573bf
add esp, 0x18
lea eax, [ebp - 0x208]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea eax, [ebp - 0x208]
push eax
call fcn.004580ba
add esp, 4
add esi, 0x160
add ebx, 0x20
add edi, 0x160
cmp esi, 0x2940
jb 0x4018f0
xor eax, eax
lea ecx, [ebp - 0x7f4]
lea edx, [eax + 5]
cmp dword [ecx - 0x40], 0
je 0x4019c8
inc eax
cmp dword [ecx - 0x20], 0
je 0x4019cf
inc eax
cmp dword [ecx], 0
je 0x4019d5
inc eax
cmp dword [ecx + 0x20], 0
je 0x4019dc
inc eax
cmp dword [ecx + 0x40], 0
je 0x4019e3
inc eax
cmp dword [ecx + 0x60], 0
je 0x4019ea
inc eax
add ecx, 0xc0
dec edx
jne 0x4019c1
test eax, eax
je 0x401f19
call fcn.0040fa20
mov dword [ebp - 0x954], eax
mov dword [ebp - 0x958], edx
mov ebx, dword [sym.imp.WS2_32.dll_WSAGetLastError]
lea eax, [ebp - 0x447]
push 0x3f
push 0
push eax
mov byte [ebp - 0x448], 0
call fcn.00452270
add esp, 0xc
lea esi, [ebp - 0x834]
mov edi, 0x1e
mov eax, dword [esi]
test eax, eax
je 0x401aad
push 0
push 0x40
lea ecx, [ebp - 0x448]
push ecx
push eax
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
jne 0x401a63
push dword [esi]
call dword [sym.imp.WS2_32.dll_closesocket]
mov dword [esi], 0
jmp 0x401aad
cmp eax, 0xffffffff
jne 0x401a8a
call ebx
cmp eax, 0x2733
je 0x401aad
call ebx
cmp eax, 0x2749
je 0x401aad
push dword [esi]
call dword [sym.imp.WS2_32.dll_closesocket]
mov dword [esi], 0
jmp 0x401aad
cmp eax, 0x14
jne 0x401aad
mov dword [esi + 0xc], 1
call fcn.0040fa20
sub eax, dword [ebp - 0x954]
mov dword [esi + 4], eax
sbb edx, dword [ebp - 0x958]
mov dword [esi + 8], edx
add esi, 0x20
dec edi
jne 0x401a37
xor eax, eax
lea ecx, [ebp - 0x7f4]
lea edx, [edi + 5]
mov edi, edi
cmp dword [ecx - 0x40], 0
je 0x401ac7
inc eax
cmp dword [ecx - 0x20], 0
je 0x401ace
inc eax
cmp dword [ecx], 0
je 0x401ad4
inc eax
cmp dword [ecx + 0x20], 0
je 0x401adb
inc eax
cmp dword [ecx + 0x40], 0
je 0x401ae2
inc eax
cmp dword [ecx + 0x60], 0
je 0x401ae9
inc eax
add ecx, 0xc0
dec edx
jne 0x401ac0
test eax, eax
je 0x401c46
call fcn.0040fa20
mov ebx, dword [ebp - 0x954]
sub eax, ebx
mov esi, dword [ebp - 0x958]
sbb edx, esi
mov dword [ebp - 0x964], edx
js 0x401b38
jg 0x401b1e
cmp eax, 0x64
jbe 0x401b38
xor ecx, ecx
lea eax, [ebp - 0x828]
cmp dword [eax], 1
je 0x401c46
inc ecx
add eax, 0x20
cmp ecx, 0x1e
jb 0x401b26
call fcn.0040fa20
sub eax, ebx
sbb edx, esi
test edx, edx
jg 0x401c46
jl 0x401b56
cmp eax, 0xbb8
ja 0x401c46
push 0x100
lea eax, [ebp - 0x10c]
push 0
push eax
call fcn.00452270
add esp, 0xc
lea eax, [ebp - 0x94c]
xor esi, esi
mov dword [ebp - 0x110], esi
push 0x100
push esi
push eax
call fcn.00452270
add esp, 0xc
lea edi, [ebp - 0x834]
xor edx, edx
lea ebx, [esi + 0x1e]
mov dword [ebp - 0x844], edx
mov dword [ebp - 0x950], edx
mov dword [ebp - 0x848], edx
mov dword [ebp - 0x844], 0x64
mov ecx, dword [edi]
test ecx, ecx
je 0x401c1e
cmp dword [edi + 0xc], 1
je 0x401c1e
xor eax, eax
test esi, esi
je 0x401bd0
cmp dword [ebp + eax*4 - 0x10c], ecx
je 0x401bd0
inc eax
cmp eax, esi
jb 0x401bc2
cmp eax, esi
jne 0x401bed
cmp esi, 0x40
jae 0x401bed
mov dword [ebp + eax*4 - 0x10c], ecx
mov esi, dword [ebp - 0x110]
inc esi
mov dword [ebp - 0x110], esi
xor eax, eax
test edx, edx
je 0x401c01
cmp dword [ebp + eax*4 - 0x94c], ecx
je 0x401c01
inc eax
cmp eax, edx
jb 0x401bf3
cmp eax, edx
jne 0x401c1e
cmp edx, 0x40
jae 0x401c1e
mov dword [ebp + eax*4 - 0x94c], ecx
mov edx, dword [ebp - 0x950]
inc edx
mov dword [ebp - 0x950], edx
add edi, 0x20
dec ebx
jne 0x401bb0
lea eax, [ebp - 0x848]
push eax
lea eax, [ebp - 0x950]
push eax
push ebx
lea eax, [ebp - 0x110]
push eax
push ebx
call dword [sym.imp.WS2_32.dll_select]
jmp 0x401a0c
xor esi, esi
lea ecx, [ebp - 0x840]
lea edx, [esi + 0x1e]
cmp dword [ecx + 0x18], 0
je 0x401c6f
test esi, esi
je 0x401c6d
mov eax, dword [ecx + 0x14]
cmp eax, dword [esi + 0x14]
jg 0x401c6f
jl 0x401c6d
mov eax, dword [ecx + 0x10]
cmp eax, dword [esi + 0x10]
jae 0x401c6f
mov esi, ecx
add ecx, 0x20
dec edx
jne 0x401c51
test esi, esi
je 0x401ef4
push 0x74
push edx
lea eax, [ebp - 0x47c]
mov dword [ebp - 0x480], edx
push eax
call fcn.00452270
add esp, 0xc
lea edx, [ebp - 0x478]
lea ecx, [ebp - 0x810]
mov ebx, 5
cmp dword [ecx - 0x18], 0
je 0x401cc9
mov edi, dword [esi + 0x10]
sub edi, dword [ecx - 0x20]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx - 0x1c]
test eax, eax
jg 0x401cc9
jl 0x401cc3
cmp edi, 0x14
ja 0x401cc9
lea eax, [ecx - 0x30]
mov dword [edx - 8], eax
cmp dword [ecx + 8], 0
je 0x401ceb
mov edi, dword [esi + 0x10]
sub edi, dword [ecx]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 4]
test eax, eax
jg 0x401ceb
jl 0x401ce5
cmp edi, 0x14
ja 0x401ceb
lea eax, [ecx - 0x10]
mov dword [edx - 4], eax
cmp dword [ecx + 0x28], 0
je 0x401d0d
mov edi, dword [esi + 0x10]
sub edi, dword [ecx + 0x20]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 0x24]
test eax, eax
jg 0x401d0d
jl 0x401d08
cmp edi, 0x14
ja 0x401d0d
lea eax, [ecx + 0x10]
mov dword [edx], eax
cmp dword [ecx + 0x48], 0
je 0x401d30
mov edi, dword [esi + 0x10]
sub edi, dword [ecx + 0x40]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 0x44]
test eax, eax
jg 0x401d30
jl 0x401d2a
cmp edi, 0x14
ja 0x401d30
lea eax, [ecx + 0x30]
mov dword [edx + 4], eax
cmp dword [ecx + 0x68], 0
je 0x401d53
mov edi, dword [esi + 0x10]
sub edi, dword [ecx + 0x60]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 0x64]
test eax, eax
jg 0x401d53
jl 0x401d4d
cmp edi, 0x14
ja 0x401d53
lea eax, [ecx + 0x50]
mov dword [edx + 8], eax
cmp dword [ecx + 0x88], 0
je 0x401d7f
mov edi, dword [esi + 0x10]
sub edi, dword [ecx + 0x80]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 0x84]
test eax, eax
jg 0x401d7f
jl 0x401d79
cmp edi, 0x14
ja 0x401d7f
lea eax, [ecx + 0x70]
mov dword [edx + 0xc], eax
add ecx, 0xc0
add edx, 0x18
dec ebx
jne 0x401ca6
xor ecx, ecx
lea edx, [ebp - 0x478]
lea esi, [ebx + 5]
lea ebx, [ebx]
mov eax, dword [edx - 8]
test eax, eax
je 0x401daf
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx - 4]
test eax, eax
je 0x401dbe
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx]
test eax, eax
je 0x401dcc
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx + 4]
test eax, eax
je 0x401ddb
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx + 8]
test eax, eax
je 0x401dea
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx + 0xc]
test eax, eax
je 0x401df9
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
add edx, 0x18
dec esi
jne 0x401da0
xor ebx, ebx
mov edx, dword [ebp + esi*4 - 0x480]
test edx, edx
je 0x401e29
cmp dword [edx + 8], ecx
jne 0x401e29
test ebx, ebx
je 0x401e27
mov eax, dword [edx + 0x14]
cmp eax, dword [ebx + 0x14]
jg 0x401e29
jl 0x401e27
mov eax, dword [edx + 0x10]
cmp eax, dword [ebx + 0x10]
jae 0x401e29
mov ebx, edx
inc esi
cmp esi, 0x1e
jb 0x401e01
test ebx, ebx
je 0x401ef4
mov edx, dword [ebx]
xor ecx, ecx
mov esi, dword [ebx + 4]
xor eax, eax
cmp dword [eax + 0x4a8b50], edx
jne 0x401e50
cmp dword [eax + 0x4a8b54], esi
je 0x401e5f
add eax, 0x160
inc ecx
cmp eax, 0x2940
jb 0x401e40
jmp 0x401e77
imul esi, ecx, 0x160
mov edi, 0x4ab498
mov ecx, 0x58
add esi, 0x4a8b50
rep movsd dword es:[edi], dword [esi]
push 0x1ff
lea eax, [ebp - 0x407]
mov byte [ebp - 0x408], 0
push 0
push eax
call fcn.00452270
mov ecx, dword [ebp - 0x95c]
add esp, 0xc
movzx eax, byte [ecx*4 + 0x4ab5d3]
push eax
movzx eax, byte [ecx*4 + 0x4ab5d2]
push eax
movzx eax, byte [ecx*4 + 0x4ab5d1]
push eax
movzx eax, byte [ecx*4 + 0x4ab5d0]
push eax
push dword [ebx + 0x14]
lea eax, [ebp - 0x408]
push dword [ebx + 0x10]
push str._DEBUG___u__
push eax
call fcn.004573bf
add esp, 0x20
lea eax, [ebp - 0x408]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea eax, [ebp - 0x408]
push eax
call fcn.004580ba
add esp, 4
lea esi, [ebp - 0x834]
mov edi, 0x1e
nop
mov eax, dword [esi]
test eax, eax
je 0x401f13
push eax
call dword [sym.imp.WS2_32.dll_closesocket]
mov dword [esi], 0
add esi, 0x20
dec edi
jne 0x401f00
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00451570
mov esp, ebp
pop ebp
ret