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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x6dc
mov eax, dword [0x4a3300]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0x3b8
lea eax, [ebp - 0x4a0]
mov esi, ecx
xorps xmm0, xmm0
mov dword [ebp - 0x6cc], esi
push 0
push eax
movlpd qword [ebp - 0x4a8], xmm0
call fcn.00453200
add esp, 0xc
lea edi, [esi*4 + 0x4a7c58]
lea ebx, [ebp - 0x4a8]
xor esi, esi
mov edi, edi
mov eax, dword [esi + 0x4a7b20]
or eax, dword [esi + 0x4a7b24]
je 0x401b86
mov ecx, dword [edi]
test ecx, ecx
je 0x401b86
cmp dword [esi + 0x4a7c30], 0
je 0x401b86
mov edx, 0xfff0
call fcn.004017a0
mov dword [ebx + 0xc], eax
mov eax, dword [esi + 0x4a7b20]
mov dword [ebx], eax
mov eax, dword [esi + 0x4a7b24]
mov dword [ebx + 4], eax
mov eax, dword [esi + 0x4a7b28]
push 0x63
mov dword [ebx + 8], eax
lea eax, [ebp - 0xd7]
push 0
push eax
mov byte [ebp - 0xd8], 0
call fcn.00453200
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 - 0xd8]
push 0x48168c
push eax
call fcn.004582cf
add esp, 0x18
lea eax, [ebp - 0xd8]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
add esi, 0x160
add ebx, 0x20
add edi, 0x160
cmp esi, 0x2940
jb 0x401af0
xor eax, eax
lea ecx, [ebp - 0x45c]
lea edx, [eax + 5]
lea esp, [esp]
cmp dword [ecx - 0x40], 0
je 0x401bb7
inc eax
cmp dword [ecx - 0x20], 0
je 0x401bbe
inc eax
cmp dword [ecx], 0
je 0x401bc4
inc eax
cmp dword [ecx + 0x20], 0
je 0x401bcb
inc eax
cmp dword [ecx + 0x40], 0
je 0x401bd2
inc eax
cmp dword [ecx + 0x60], 0
je 0x401bd9
inc eax
add ecx, 0xc0
dec edx
jne 0x401bb0
test eax, eax
je 0x4020ea
call fcn.00409e10
mov dword [ebp - 0x6c4], eax
mov dword [ebp - 0x6c8], edx
mov ebx, dword [sym.imp.WS2_32.dll_WSAGetLastError]
lea eax, [ebp - 0xaf]
push 0x3f
push 0
push eax
mov byte [ebp - 0xb0], 0
call fcn.00453200
add esp, 0xc
lea esi, [ebp - 0x49c]
mov edi, 0x1e
mov eax, dword [esi]
test eax, eax
je 0x401c9c
push 0
push 0x40
lea ecx, [ebp - 0xb0]
push ecx
push eax
call dword [sym.imp.WS2_32.dll_recv]
test eax, eax
jne 0x401c52
push dword [esi]
call dword [sym.imp.WS2_32.dll_closesocket]
mov dword [esi], 0
jmp 0x401c9c
cmp eax, 0xffffffff
jne 0x401c79
call ebx
cmp eax, 0x2733
je 0x401c9c
call ebx
cmp eax, 0x2749
je 0x401c9c
push dword [esi]
call dword [sym.imp.WS2_32.dll_closesocket]
mov dword [esi], 0
jmp 0x401c9c
cmp eax, 0x10
jne 0x401c9c
mov dword [esi + 0xc], 1
call fcn.00409e10
sub eax, dword [ebp - 0x6c4]
mov dword [esi + 4], eax
sbb edx, dword [ebp - 0x6c8]
mov dword [esi + 8], edx
add esi, 0x20
dec edi
jne 0x401c26
xor eax, eax
lea ecx, [ebp - 0x45c]
lea edx, [edi + 5]
lea ecx, [ecx]
cmp dword [ecx - 0x40], 0
je 0x401cb7
inc eax
cmp dword [ecx - 0x20], 0
je 0x401cbe
inc eax
cmp dword [ecx], 0
je 0x401cc4
inc eax
cmp dword [ecx + 0x20], 0
je 0x401ccb
inc eax
cmp dword [ecx + 0x40], 0
je 0x401cd2
inc eax
cmp dword [ecx + 0x60], 0
je 0x401cd9
inc eax
add ecx, 0xc0
dec edx
jne 0x401cb0
test eax, eax
je 0x401e36
call fcn.00409e10
mov ebx, dword [ebp - 0x6c4]
sub eax, ebx
mov esi, dword [ebp - 0x6c8]
sbb edx, esi
mov dword [ebp - 0x6d4], edx
js 0x401d28
jg 0x401d0e
cmp eax, 0x64
jbe 0x401d28
xor ecx, ecx
lea eax, [ebp - 0x490]
cmp dword [eax], 1
je 0x401e36
inc ecx
add eax, 0x20
cmp ecx, 0x1e
jb 0x401d16
call fcn.00409e10
sub eax, ebx
sbb edx, esi
test edx, edx
jg 0x401e36
jl 0x401d46
cmp eax, 0x1f4
ja 0x401e36
push 0x100
lea eax, [ebp - 0x5b4]
push 0
push eax
call fcn.00453200
add esp, 0xc
lea eax, [ebp - 0x6bc]
xor esi, esi
mov dword [ebp - 0x5b8], esi
push 0x100
push esi
push eax
call fcn.00453200
add esp, 0xc
lea edi, [ebp - 0x49c]
xor edx, edx
lea ebx, [esi + 0x1e]
mov dword [ebp - 0x4ac], edx
mov dword [ebp - 0x6c0], edx
mov dword [ebp - 0x4b0], edx
mov dword [ebp - 0x4ac], 0x64
mov ecx, dword [edi]
test ecx, ecx
je 0x401e0e
cmp dword [edi + 0xc], 1
je 0x401e0e
xor eax, eax
test esi, esi
je 0x401dc0
cmp dword [ebp + eax*4 - 0x5b4], ecx
je 0x401dc0
inc eax
cmp eax, esi
jb 0x401db2
cmp eax, esi
jne 0x401ddd
cmp esi, 0x40
jae 0x401ddd
mov dword [ebp + eax*4 - 0x5b4], ecx
mov esi, dword [ebp - 0x5b8]
inc esi
mov dword [ebp - 0x5b8], esi
xor eax, eax
test edx, edx
je 0x401df1
cmp dword [ebp + eax*4 - 0x6bc], ecx
je 0x401df1
inc eax
cmp eax, edx
jb 0x401de3
cmp eax, edx
jne 0x401e0e
cmp edx, 0x40
jae 0x401e0e
mov dword [ebp + eax*4 - 0x6bc], ecx
mov edx, dword [ebp - 0x6c0]
inc edx
mov dword [ebp - 0x6c0], edx
add edi, 0x20
dec ebx
jne 0x401da0
lea eax, [ebp - 0x4b0]
push eax
lea eax, [ebp - 0x6c0]
push eax
push ebx
lea eax, [ebp - 0x5b8]
push eax
push ebx
call dword [sym.imp.WS2_32.dll_select]
jmp 0x401bfb
xor esi, esi
lea ecx, [ebp - 0x4a8]
lea edx, [esi + 0x1e]
cmp dword [ecx + 0x18], 0
je 0x401e5f
test esi, esi
je 0x401e5d
mov eax, dword [ecx + 0x14]
cmp eax, dword [esi + 0x14]
jg 0x401e5f
jl 0x401e5d
mov eax, dword [ecx + 0x10]
cmp eax, dword [esi + 0x10]
jae 0x401e5f
mov esi, ecx
add ecx, 0x20
dec edx
jne 0x401e41
test esi, esi
je 0x4020c6
push 0x74
push edx
lea eax, [ebp - 0xe4]
mov dword [ebp - 0xe8], edx
push eax
call fcn.00453200
add esp, 0xc
lea edx, [ebp - 0xe0]
lea ecx, [ebp - 0x478]
mov ebx, 5
cmp dword [ecx - 0x18], 0
je 0x401eb9
mov edi, dword [esi + 0x10]
sub edi, dword [ecx - 0x20]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx - 0x1c]
test eax, eax
jg 0x401eb9
jl 0x401eb3
cmp edi, 0x14
ja 0x401eb9
lea eax, [ecx - 0x30]
mov dword [edx - 8], eax
cmp dword [ecx + 8], 0
je 0x401edb
mov edi, dword [esi + 0x10]
sub edi, dword [ecx]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 4]
test eax, eax
jg 0x401edb
jl 0x401ed5
cmp edi, 0x14
ja 0x401edb
lea eax, [ecx - 0x10]
mov dword [edx - 4], eax
cmp dword [ecx + 0x28], 0
je 0x401efd
mov edi, dword [esi + 0x10]
sub edi, dword [ecx + 0x20]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 0x24]
test eax, eax
jg 0x401efd
jl 0x401ef8
cmp edi, 0x14
ja 0x401efd
lea eax, [ecx + 0x10]
mov dword [edx], eax
cmp dword [ecx + 0x48], 0
je 0x401f20
mov edi, dword [esi + 0x10]
sub edi, dword [ecx + 0x40]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 0x44]
test eax, eax
jg 0x401f20
jl 0x401f1a
cmp edi, 0x14
ja 0x401f20
lea eax, [ecx + 0x30]
mov dword [edx + 4], eax
cmp dword [ecx + 0x68], 0
je 0x401f43
mov edi, dword [esi + 0x10]
sub edi, dword [ecx + 0x60]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 0x64]
test eax, eax
jg 0x401f43
jl 0x401f3d
cmp edi, 0x14
ja 0x401f43
lea eax, [ecx + 0x50]
mov dword [edx + 8], eax
cmp dword [ecx + 0x88], 0
je 0x401f6f
mov edi, dword [esi + 0x10]
sub edi, dword [ecx + 0x80]
mov eax, dword [esi + 0x14]
sbb eax, dword [ecx + 0x84]
test eax, eax
jg 0x401f6f
jl 0x401f69
cmp edi, 0x14
ja 0x401f6f
lea eax, [ecx + 0x70]
mov dword [edx + 0xc], eax
add ecx, 0xc0
add edx, 0x18
dec ebx
jne 0x401e96
xor ecx, ecx
lea edx, [ebp - 0xe0]
lea esi, [ebx + 5]
lea ebx, [ebx]
mov eax, dword [edx - 8]
test eax, eax
je 0x401f9f
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx - 4]
test eax, eax
je 0x401fae
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx]
test eax, eax
je 0x401fbc
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx + 4]
test eax, eax
je 0x401fcb
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx + 8]
test eax, eax
je 0x401fda
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
mov eax, dword [edx + 0xc]
test eax, eax
je 0x401fe9
mov eax, dword [eax + 8]
cmp eax, ecx
cmovg ecx, eax
add edx, 0x18
dec esi
jne 0x401f90
xor ebx, ebx
mov edx, dword [ebp + esi*4 - 0xe8]
test edx, edx
je 0x402019
cmp dword [edx + 8], ecx
jne 0x402019
test ebx, ebx
je 0x402017
mov eax, dword [edx + 0x14]
cmp eax, dword [ebx + 0x14]
jg 0x402019
jl 0x402017
mov eax, dword [edx + 0x10]
cmp eax, dword [ebx + 0x10]
jae 0x402019
mov ebx, edx
inc esi
cmp esi, 0x1e
jb 0x401ff1
test ebx, ebx
je 0x4020c6
mov edx, dword [ebx]
xor ecx, ecx
mov esi, dword [ebx + 4]
xor eax, eax
cmp dword [eax + 0x4a7b20], edx
jne 0x402040
cmp dword [eax + 0x4a7b24], esi
je 0x40204f
add eax, 0x160
inc ecx
cmp eax, 0x2940
jb 0x402030
jmp 0x402067
imul esi, ecx, 0x160
mov edi, 0x522668
mov ecx, 0x58
add esi, 0x4a7b20
rep movsd dword es:[edi], dword [esi]
push 0x63
lea eax, [ebp - 0x6f]
mov byte [ebp - 0x70], 0
push 0
push eax
call fcn.00453200
mov ecx, dword [ebp - 0x6cc]
add esp, 0xc
movzx eax, byte [ecx*4 + 0x5227a3]
push eax
movzx eax, byte [ecx*4 + 0x5227a2]
push eax
movzx eax, byte [ecx*4 + 0x5227a1]
push eax
movzx eax, byte [ecx*4 + 0x5227a0]
push eax
push dword [ebx + 0x14]
lea eax, [ebp - 0x70]
push dword [ebx + 0x10]
push 0x4816b0
push eax
call fcn.004582cf
add esp, 0x20
lea eax, [ebp - 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea esi, [ebp - 0x49c]
mov edi, 0x1e
mov eax, dword [esi]
test eax, eax
je 0x4020e4
push eax
call dword [sym.imp.WS2_32.dll_closesocket]
mov dword [esi], 0
add esi, 0x20
dec edi
jne 0x4020d1
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004524fc
mov esp, ebp
pop ebp
ret