Function at 0x52de4b
Capabilities:
Send data
Send data on socket

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov dword [ebp - 0x20], 0
mov eax, dword [ebp + 0x10]
movsx ecx, word [eax + 0x16]
mov dword [ebp - 0x44], ecx
cmp dword [ebp - 0x44], 0
je 0x52de77
cmp dword [ebp - 0x44], 1
je 0x52e115
jmp 0x52e19a
mov edx, dword [ebp + 0x10]
mov ax, word [ebp + 0x14]
mov word [edx + 0x1c], ax
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x10]
mov ax, word [edx + 0x1c]
mov word [ecx + 0x5a], ax
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x10]
mov ax, word [edx + 0x18]
mov word [ecx + 0x56], ax
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp + 0x10]
mov ax, word [edx + 0x1a]
mov word [ecx + 0x58], ax
mov ecx, dword [ebp + 0x10]
mov dx, word [ecx + 0x1a]
add dx, 1
mov eax, dword [ebp + 0x10]
mov word [eax + 0x1a], dx
mov ecx, dword [ebp + 0x10]
mov word [ecx + 0x5c], 0
mov dword [ebp - 0x1c], 0
mov edx, dword [ebp + 0x10]
add edx, 0x56
mov dword [ebp - 0x18], edx
mov eax, dword [ebp + 0x10]
mov cx, word [eax + 0x5a]
mov word [ebp - 0x24], cx
mov edx, dword [ebp + 0x10]
movsx eax, word [edx + 0x5a]
and eax, reloc.WS2_32.dll_accept
jns 0x52def5
dec eax
or eax, 0xfffffffe
inc eax
test eax, eax
je 0x52df43
mov ecx, dword [ebp + 0x10]
movsx edx, word [ecx + 0x5a]
add edx, 9
cmp edx, 0x1882
jbe 0x52df1c
mov eax, dword [ebp + 0x18]
mov dword [eax], 0x64
or eax, 0xffffffff
jmp 0x52e1bf
mov dword [ebp - 0x20], 1
movsx ecx, word [ebp + 0x14]
mov edx, dword [ebp + 0xc]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 4], al
mov byte [ebp - 3], 0
mov ecx, dword [ebp + 0x10]
movsx edx, word [ecx + 0x5a]
add edx, 1
mov word [ebp - 0x24], dx
mov ax, word [ebp - 0x24]
sar ax, 1
mov word [ebp - 0x24], ax
mov ecx, dword [ebp + 0x10]
add ecx, 0x56
mov dword [ebp - 8], ecx
lea edx, [ebp - 0x38]
mov dword [ebp - 0x3c], edx
mov word [ebp - 0x40], 0
jmp 0x52df71
mov ax, word [ebp - 0x40]
add ax, 1
mov word [ebp - 0x40], ax
movsx ecx, word [ebp - 0x40]
cmp ecx, 3
jg 0x52dfa1
push 2
mov edx, dword [ebp - 0x3c]
push edx
mov eax, dword [ebp - 8]
push eax
call dword [sym.imp.MSVCRT.dll__swab]
add esp, 0xc
mov ecx, dword [ebp - 8]
add ecx, 2
mov dword [ebp - 8], ecx
mov edx, dword [ebp - 0x3c]
add edx, 2
mov dword [ebp - 0x3c], edx
jmp 0x52df65
lea eax, [ebp - 0x38]
mov dword [ebp - 0x3c], eax
mov word [ebp - 0x10], 0
jmp 0x52dfbb
mov cx, word [ebp - 0x10]
add cx, 1
mov word [ebp - 0x10], cx
movsx edx, word [ebp - 0x10]
cmp edx, 4
jae 0x52dfdf
mov eax, dword [ebp - 0x3c]
xor ecx, ecx
mov cx, word [eax]
mov edx, dword [ebp - 0x1c]
add edx, ecx
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp - 0x3c]
add eax, 2
mov dword [ebp - 0x3c], eax
jmp 0x52dfaf
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x18], ecx
cmp dword [ebp - 0x20], 0
je 0x52e037
mov word [ebp - 0x10], 0
jmp 0x52dfff
mov dx, word [ebp - 0x10]
add dx, 1
mov word [ebp - 0x10], dx
movsx eax, word [ebp - 0x10]
movsx ecx, word [ebp - 0x24]
sub ecx, 1
cmp eax, ecx
jge 0x52e029
mov edx, dword [ebp - 0x18]
xor eax, eax
mov ax, word [edx]
mov ecx, dword [ebp - 0x1c]
add ecx, eax
mov dword [ebp - 0x1c], ecx
mov edx, dword [ebp - 0x18]
add edx, 2
mov dword [ebp - 0x18], edx
jmp 0x52dff3
movsx eax, word [ebp - 4]
mov ecx, dword [ebp - 0x1c]
add ecx, eax
mov dword [ebp - 0x1c], ecx
jmp 0x52e072
mov word [ebp - 0x10], 0
jmp 0x52e04b
mov dx, word [ebp - 0x10]
add dx, 1
mov word [ebp - 0x10], dx
movsx eax, word [ebp - 0x10]
movsx ecx, word [ebp - 0x24]
cmp eax, ecx
jge 0x52e072
mov edx, dword [ebp - 0x18]
xor eax, eax
mov ax, word [edx]
mov ecx, dword [ebp - 0x1c]
add ecx, eax
mov dword [ebp - 0x1c], ecx
mov edx, dword [ebp - 0x18]
add edx, 2
mov dword [ebp - 0x18], edx
jmp 0x52e03f
mov eax, dword [ebp - 0x1c]
shr eax, 0x10
mov ecx, dword [ebp - 0x1c]
and ecx, 0xffff
add eax, ecx
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x1c]
shr edx, 0x10
mov eax, dword [ebp - 0x1c]
add eax, edx
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x1c]
not ecx
and ecx, 0xffff
mov edx, dword [ebp + 0x10]
mov word [edx + 0x5c], cx
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x10]
mov dx, word [ecx + 0x5c]
mov word [eax + 0x1e], dx
mov eax, dword [ebp + 0x10]
mov cx, word [eax + 0x5c]
mov word [ebp - 0x32], cx
push 8
lea edx, [ebp - 0x38]
push edx
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 0x5e]
push ecx
call sub.MSVCRT.dll_memcpy
add esp, 0xc
mov edx, dword [ebp + 0x10]
movsx eax, word [edx + 0x5a]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + 0x5e]
add eax, 8
push eax
call sub.MSVCRT.dll_memcpy
add esp, 0xc
mov ecx, dword [ebp + 0x10]
mov word [ecx + 0x2e], 0
mov edx, dword [ebp + 0x10]
movsx eax, word [edx + 0x5a]
add eax, 8
mov ecx, dword [ebp + 0x10]
mov word [ecx + 0x2c], ax
mov edx, dword [ebp + 0x10]
mov word [edx + 0x16], 1
mov eax, dword [ebp + 0x10]
movsx ecx, word [eax + 0x2e]
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + 0x5e]
add eax, ecx
mov dword [ebp - 0xc], eax
jmp 0x52e144
mov ecx, dword [ebp - 0xc]
add ecx, dword [ebp - 0x14]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp + 0x10]
mov ax, word [edx + 0x2c]
sub ax, word [ebp - 0x14]
mov ecx, dword [ebp + 0x10]
mov word [ecx + 0x2c], ax
mov edx, dword [ebp + 0x10]
movsx eax, word [edx + 0x2c]
test eax, eax
jle 0x52e19a
push 0
mov ecx, dword [ebp + 0x10]
movsx edx, word [ecx + 0x2c]
push edx
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
push edx
call dword [sym.imp.WS2_32.dll_send]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
jg 0x52e198
call dword [sym.imp.WS2_32.dll_WSAGetLastError]
mov ecx, dword [ebp + 0x18]
mov dword [ecx], eax
mov edx, dword [ebp + 0x18]
cmp dword [edx], 0x2733
je 0x52e18d
or eax, 0xffffffff
jmp 0x52e1bf
mov dword [ebp - 0x14], 0
xor eax, eax
jmp 0x52e1bf
jmp 0x52e129
mov eax, dword [ebp + 0x10]
mov word [eax + 0x16], 0
mov ecx, dword [ebp + 0x10]
movsx edx, word [ecx + 0x5a]
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 0x26]
add ecx, edx
mov edx, dword [ebp + 0x10]
mov dword [edx + 0x26], ecx
mov eax, dword [ebp + 0x10]
movsx eax, word [eax + 0x5a]
mov esp, ebp
pop ebp
ret