Function at 0x404ba0
Capabilities:
Receive data
Receive data on socket

Disassembly:
sub esp, 0x20
push ebx
push ebp
xor eax, eax
push esi
push edi
mov edi, dword [esp + 0x2c]
xor ebx, ebx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], eax
xor ebp, ebp
jmp 0x404bc5
xor eax, eax
mov esi, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
push eax
mov eax, 0x8000
sub eax, ebp
sub eax, ebx
push eax
lea ecx, [ebx + ebp]
add ecx, esi
push ecx
push edx
call sub.WSOCK32.dll_recv
test eax, eax
jle 0x404e41
add ebp, eax
cmp ebp, 0x10
jl 0x404e2a
mov eax, ebp
and eax, 0x8000000f
jns 0x404c05
dec eax
or eax, 0xfffffff0
inc eax
mov ecx, dword [esp + 0x34]
sub ebp, eax
mov dword [esp + 0x20], eax
test ecx, ecx
je 0x404c39
cmp dword [ecx + 0x399], 0
je 0x404c39
mov ecx, dword [ecx + 0x399]
mov edx, dword [ecx + 0x290]
mov eax, esi
add eax, ebx
push eax
push eax
push ebp
push edx
add ecx, 0x150
push ecx
jmp 0x404c4c
mov ecx, dword [0x416a90]
mov eax, esi
add eax, ebx
push eax
push eax
push ebp
push ecx
push 0x416c20
call fcn.00403ce0
mov edx, dword [esp + 0x34]
add esp, 0x14
add ebx, ebp
mov dword [esp + 0x24], edx
je 0x404e0c
mov al, byte [esi]
cmp al, 0xff
je 0x404de5
cmp al, 0xfe
je 0x404de5
mov edx, dword [esp + 0x10]
test edx, edx
jne 0x404cb8
mov ebp, dword [esp + 0x44]
push ebp
call fcn.00405daa
push ebp
push 0
push eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], 0
lea edi, [eax + 8]
call fcn.00406350
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
add esp, 0x10
test ecx, ecx
je 0x404cbc
mov eax, edx
mov dword [ecx], eax
mov dword [eax + 4], ecx
jmp 0x404cbc
mov ecx, dword [esp + 0x14]
mov al, byte [esi]
test al, al
jne 0x404d1c
cmp ebx, 3
jl 0x404dce
movzx eax, word [esi + 1]
add eax, 3
cmp ebx, eax
jl 0x404dce
movsx ebp, word [esi + 1]
inc esi
lea ecx, [ebp + 1]
push ecx
add esi, 2
call fcn.00405daa
push ebp
push esi
push eax
mov dword [esp + 0x3c], eax
call fcn.00405e80
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x24]
mov edx, 0xfffffffd
mov byte [eax + ebp], 0
sub edx, ebp
mov dword [edi], eax
add esp, 0x10
add esi, ebp
add edi, 4
add ebx, edx
mov edx, dword [esp + 0x10]
jmp 0x404d99
movzx ebp, al
mov ebp, dword [ebp*4 + 0x415008]
inc ebp
cmp ebx, ebp
jl 0x404dce
cmp al, 1
jne 0x404d44
mov eax, dword [esi + 1]
inc esi
mov dword [edi], eax
add edi, 4
add esi, 4
sub ebx, 5
jmp 0x404d99
cmp al, 4
jne 0x404d5f
mov eax, dword [esi + 1]
inc esi
mov dword [edi], eax
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
add edi, 8
add esi, 8
sub ebx, 9
jmp 0x404d99
cmp al, 2
jne 0x404d74
fld qword [esi + 1]
inc esi
fstp qword [edi]
add edi, 8
add esi, 8
sub ebx, 9
jmp 0x404d99
cmp al, 3
jne 0x404d99
mov eax, dword [esi + 1]
inc esi
mov dword [edi], eax
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 8]
mov dword [edi + 8], eax
mov eax, dword [esi + 0xc]
mov dword [edi + 0xc], eax
add edi, 0x10
add esi, 0x10
sub ebx, 0x11
mov eax, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x1c], eax
cmp eax, dword [esp + 0x40]
jne 0x404dc4
xor eax, eax
cmp ecx, eax
jne 0x404db7
mov dword [esp + 0x18], edx
mov dword [edx + 4], eax
jmp 0x404dbc
mov dword [ecx], edx
mov dword [edx + 4], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
test ebx, ebx
jne 0x404c64
jmp 0x404e0c
mov eax, dword [esp + 0x3c]
cmp esi, eax
je 0x404de1
push ebx
push esi
push eax
call fcn.00405e80
add esp, 0xc
add esi, ebx
jmp 0x404e0c
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x404e02
mov eax, dword [ecx + 4]
test eax, eax
je 0x404dfa
mov dword [eax], 0
push ecx
call dword [esp + 0x4c]
add esp, 4
xor ebx, ebx
mov dword [esp + 0x28], 1
mov eax, dword [esp + 0x20]
test eax, eax
je 0x404e26
mov ecx, dword [esp + 0x3c]
push eax
lea edx, [ebx + ecx]
push esi
push edx
call fcn.00405e80
add esp, 0xc
mov ebp, dword [esp + 0x24]
cmp dword [esp + 0x28], 0
je 0x404bc3
mov eax, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov eax, dword [esp + 0x14]
test eax, eax
je 0x404e4f
mov dword [eax], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x404e5f
push eax
call dword [esp + 0x4c]
add esp, 4
mov eax, dword [esp + 0x38]
push 2
push eax
call sub.WSOCK32.dll_shutdown
mov eax, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret