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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xe0
mov eax, dword [0x7aa024]
xor eax, ebp
mov dword [esp + 0xd8], eax
pcmpeqd xmm0, xmm0
movdqa xmmword [esp + 0xc0], xmm0
mov dword [esp + 0xd0], 0xffffffff
movdqa xmmword [esp + 0xb0], xmm0
movdqa xmmword [esp + 0xa0], xmm0
movdqa xmmword [esp + 0x90], xmm0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x70], xmm0
movdqu xmmword [esp + 0x5c], xmm0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x40], xmm0
xor edi, edi
inc edi
test ecx, ecx
je 0x50f63e
cmp dword [ecx], 0xbab1e
jne 0x50f63e
mov edi, 8
cmp byte [ecx + 0xe2], 0
je 0x50f656
mov ecx, dword [esp + 0xd8]
xor ecx, ebp
call fcn.0064d372
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [ebp + 0xc], 0
js 0x50f758
mov dword [esp + 0x24], edx
mov dword [esp + 4], ecx
mov ecx, dword [ecx + 4]
mov dword [esp + 8], 0
mov esi, 0
test ecx, ecx
je 0x50f6e1
xor esi, esi
mov dword [esp], ecx
lea edx, [esp + 0xc0]
call fcn.0050f490
xor ecx, ecx
bt eax, ecx
jae 0x50f6a7
mov edi, dword [esp + ecx*4 + 0xc0]
xor ebx, ebx
cmp edi, 0xffffffff
setne bl
add esi, ebx
jmp 0x50f6aa
xor edi, edi
dec edi
mov ebx, eax
shr ebx, cl
bt ebx, 0x10
jae 0x50f6c8
mov ebx, dword [esp + ecx*4 + 0xc0]
xor edx, edx
cmp ebx, 0xffffffff
setne dl
cmovne edi, ebx
add esi, edx
cmp edi, 0xffffffff
je 0x50f6d7
lea edx, [ecx + 1]
cmp ecx, 4
mov ecx, edx
jb 0x50f68f
mov ecx, dword [esp]
mov ecx, dword [ecx + 4]
test ecx, ecx
jne 0x50f67e
mov bl, byte [ebp + 0x18]
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 4]
cmp byte [eax + 0xe4], 0
jne 0x50f7ba
mov ebx, dword [esp + 4]
cmp dword [ebx + 0x5c], 0
je 0x50f762
pcmpeqd xmm0, xmm0
lea edi, [esp + 0x30]
movdqa xmmword [edi], xmm0
push edi
call fcn.0051daf0
add esp, 4
mov eax, dword [ebx + 0x5c]
sub esp, 0x14
mov dword [esp + 0x10], eax
pxor xmm0, xmm0
movdqu xmmword [esp], xmm0
call fcn.0051c100
add esp, 0x14
mov dword [ebx + 0x5c], eax
mov ecx, dword [eax + 0x10]
mov ebx, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 8], 0
mov dword [esp], ecx
cmp ecx, ebx
mov ecx, dword [eax + 0x14]
mov edi, ecx
sbb edi, edx
jge 0x50f76e
mov bl, byte [ebp + 0x18]
jmp 0x50f7b7
mov edi, 0xa
jmp 0x50f63e
xor eax, eax
dec eax
mov dword [esp + 8], eax
mov bl, byte [ebp + 0x18]
jmp 0x50f7ba
cmp ebx, dword [esp]
sbb edx, ecx
mov bl, byte [ebp + 0x18]
jl 0x50f781
mov ecx, dword [eax + 0x18]
cmp ecx, dword [esp + 0x38]
jle 0x50f7b7
sub esp, 0x20
movaps xmm0, xmmword [esp + 0x50]
movups xmmword [esp + 0x10], xmm0
movdqu xmm0, xmmword [eax + 0x10]
movdqu xmmword [esp], xmm0
call fcn.0051dbd0
add esp, 0x20
xor edi, edi
inc edi
cmp eax, 2
mov ecx, edi
cmovae ecx, eax
test edx, edx
cmovg edi, eax
cmove edi, ecx
mov dword [esp + 8], edi
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov edi, dword [esp + 8]
cmp edi, edx
mov eax, edx
cmovl eax, edi
test edi, edi
cmovs eax, edx
mov dword [esp + 0x2c], eax
movzx eax, bl
add eax, ecx
add eax, esi
cmp eax, 0xb
mov dword [esp + 0x20], eax
jb 0x50f80b
mov ecx, dword [fcn.005f2b30]
lea edi, [eax*8]
call dword [section..00cfg]
push edi
call ecx
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
je 0x50fea2
mov ecx, dword [ebp + 8]
jmp 0x50f813
lea eax, [esp + 0x70]
mov dword [esp + 0x14], eax
xor edx, edx
test esi, esi
je 0x50f94e
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
test eax, eax
je 0x50f94e
cmp dword [esp + 0x20], 0xb
setb byte [esp + 0x28]
lea edi, [esp + 0xc0]
xor edx, edx
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], eax
mov ecx, eax
mov edx, edi
call fcn.0050f490
mov dword [esp + 8], eax
mov dword [esp], 0
mov eax, dword [esp + 8]
mov ecx, dword [esp]
bt eax, ecx
jae 0x50f894
mov eax, dword [esp + ecx*4 + 0xc0]
cmp eax, 0xffffffff
je 0x50f894
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov dword [edi + edx*8], eax
mov word [edi + edx*8 + 4], 0x300
inc edx
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], 0x29
jmp 0x50f89f
mov dword [esp + 0x18], 0
xor eax, eax
dec eax
mov edx, dword [esp + 8]
shr edx, cl
bt edx, 0x10
jae 0x50f8ec
mov edi, dword [esp + ecx*4 + 0xc0]
cmp edi, 0xffffffff
je 0x50f8ec
mov ebx, dword [esp + 0x18]
or ebx, 0x32
xor eax, eax
push eax
push eax
push eax
push edi
call dword [sym.imp.WS2_32.dll_send]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [eax + ecx*8], edi
mov word [eax + ecx*8 + 4], 0x10
inc ecx
mov dword [esp + 0x10], ecx
mov eax, edi
lea edi, [esp + 0xc0]
jmp 0x50f8fc
cmp eax, 0xffffffff
lea edi, [esp + 0xc0]
mov ebx, dword [esp + 0x18]
je 0x50f935
push ebx
mov ecx, dword [esp + 8]
push dword [ecx + 0xdc]
push eax
call dword [sym.imp.WS2_32.dll_WSAEventSelect]
test eax, eax
sete cl
or cl, byte [esp + 0x28]
je 0x50fed6
test eax, eax
jne 0x50feeb
mov eax, dword [esp]
inc eax
mov dword [esp], eax
cmp eax, 5
jne 0x50f85b
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
test eax, eax
mov bl, byte [ebp + 0x18]
mov edx, dword [esp + 0x10]
mov ecx, dword [ebp + 8]
jne 0x50f83f
test ecx, ecx
je 0x50fa3e
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], edx
lea eax, [eax + edx*8]
add eax, 4
xor ebx, ebx
mov edi, dword [esp + 0x24]
mov dword [esp], eax
movzx eax, word [edi + ebx*8 + 4]
mov ecx, eax
and ecx, 1
mov edx, 0x29
cmovne ecx, edx
mov edx, eax
and edx, 2
lea ecx, [ecx + edx*2]
test al, 4
je 0x50f9a4
or ecx, 0x32
mov dword [esp + 8], ecx
xor eax, eax
push eax
push eax
push eax
push dword [edi + ebx*8]
call dword [sym.imp.WS2_32.dll_send]
mov ecx, dword [esp + 8]
push ecx
mov eax, dword [esp + 8]
push dword [eax + 0xdc]
push dword [edi + ebx*8]
call dword [sym.imp.WS2_32.dll_WSAEventSelect]
test eax, eax
jne 0x50feac
mov eax, edi
lea edx, [ebx*4]
mov ecx, dword [edi + edx*2]
mov edi, dword [esp]
mov dword [edi + ebx*8 - 4], ecx
mov word [edi + ebx*8], 0
movzx ecx, word [eax + edx*2 + 4]
and ecx, 1
neg ecx
and ecx, 0x300
mov word [edi + ebx*8], cx
movzx eax, word [eax + edx*2 + 4]
mov dword [esp + 8], eax
test al, 2
jne 0x50fa00
mov eax, dword [esp + 8]
jmp 0x50fa16
movzx ecx, cx
or ecx, 0x400
mov word [edi + edx*2], cx
mov eax, dword [esp + 0x24]
movzx eax, word [eax + edx*2 + 4]
test al, 4
mov eax, dword [esp]
je 0x50fa27
movzx ecx, cx
or ecx, 0x10
mov word [eax + edx*2], cx
inc ebx
cmp dword [ebp + 8], ebx
mov edi, dword [esp + 0x24]
jne 0x50f96d
mov edx, dword [esp + 0x10]
add edx, ebx
mov bl, byte [ebp + 0x18]
mov eax, dword [esp + 0x20]
mov ecx, dword [ebp + 0x10]
test edx, edx
jne 0x50fa59
mov dword [esp + 0xc], 0
test bl, bl
je 0x50fd8b
xor edi, edi
mov eax, 0
mov dword [esp + 0x10], edx
test edx, edx
je 0x50fa88
xor eax, eax
push eax
mov dword [esp + 0x1c], 0
push eax
push dword [esp + 0x18]
push dword [esp + 0x20]
call fcn.00514b60
add esp, 0x10
test eax, eax
jg 0x50faaa
mov ebx, eax
mov eax, dword [esp + 4]
add eax, 0xdc
push edi
push dword [esp + 0x30]
push edi
push eax
push 1
call dword [sym.imp.WS2_32.dll_WSAWaitForMultipleEvents]
mov eax, ebx
mov cl, 1
mov dword [esp + 0x18], ecx
xor edi, edi
test eax, eax
cmovle eax, edi
mov dword [esp + 0xc], eax
cmp dword [ebp + 8], 0
je 0x50fb96
cmp dword [ebp + 0x10], 0
setne al
and al, byte [esp + 0x18]
mov byte [esp + 0x1f], al
mov eax, dword [esp + 0x14]
lea eax, [eax + esi*8]
add eax, 6
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
movzx eax, word [eax + edi*8]
mov dword [esp], eax
xor ecx, ecx
mov dword [esp + 0x40], ecx
lea eax, [esp + 0x40]
push eax
push ecx
push dword [edx + edi*8]
call dword [sym.imp.WS2_32.dll_WSAEnumNetworkEvents]
test eax, eax
je 0x50fb0e
mov dword [esp + 8], 0
jmp 0x50fb3e
mov eax, dword [esp + 0x40]
xor ecx, ecx
test al, 0x29
setne cl
lea edx, [ecx + 4]
test al, 0x32
cmove edx, ecx
mov ecx, eax
shr ecx, 1
and ecx, 2
or ecx, edx
mov dword [esp + 8], ecx
test eax, eax
setne al
and al, byte [esp + 0x1f]
movzx eax, al
add dword [esp + 0xc], eax
push 0
mov eax, dword [esp + 8]
push dword [eax + 0xdc]
mov ebx, dword [esp + 0x2c]
push dword [ebx + edi*8]
call dword [sym.imp.WS2_32.dll_WSAEventSelect]
mov edx, ebx
cmp byte [esp + 0x18], 0
jne 0x50fb8c
xor eax, eax
mov ebx, dword [esp]
test ebx, 0x300
setne al
mov ecx, ebx
shr ecx, 2
and ecx, 4
shr ebx, 9
and ebx, 2
or ebx, ecx
or ebx, eax
movzx eax, word [esp + 8]
or eax, ebx
mov word [edx + edi*8 + 6], ax
inc edi
cmp dword [ebp + 8], edi
jne 0x50fae0
test esi, esi
je 0x50fd6d
mov eax, dword [esp + 4]
mov ebx, dword [eax + 4]
test ebx, ebx
je 0x50fd6d
cmp dword [ebp + 0x10], 0
setne al
and al, byte [esp + 0x18]
mov byte [esp], al
xor esi, esi
mov ecx, ebx
lea edx, [esp + 0xc0]
call fcn.0050f490
test eax, 0x10001
je 0x50fd62
mov edi, eax
mov dword [esp + 0x40], esi
lea eax, [esp + 0x40]
push eax
push esi
push dword [esp + 0xc8]
call dword [sym.imp.WS2_32.dll_WSAEnumNetworkEvents]
test eax, eax
jne 0x50fc05
cmp dword [esp + 0x40], 0
setne al
and al, byte [esp]
movzx eax, al
add dword [esp + 0xc], eax
push 0
mov eax, dword [esp + 8]
push dword [eax + 0xdc]
push dword [esp + 0xc8]
call dword [sym.imp.WS2_32.dll_WSAEventSelect]
test edi, 0x20002
je 0x50fd62
mov dword [esp + 0x40], esi
lea eax, [esp + 0x40]
push eax
push esi
push dword [esp + 0xcc]
call dword [sym.imp.WS2_32.dll_WSAEnumNetworkEvents]
test eax, eax
jne 0x50fc57
cmp dword [esp + 0x40], 0
setne al
and al, byte [esp]
movzx eax, al
add dword [esp + 0xc], eax
push 0
mov eax, dword [esp + 8]
push dword [eax + 0xdc]
push dword [esp + 0xcc]
call dword [sym.imp.WS2_32.dll_WSAEventSelect]
test edi, 0x40004
je 0x50fd62
mov dword [esp + 0x40], esi
lea eax, [esp + 0x40]
push eax
push esi
push dword [esp + 0xd0]
call dword [sym.imp.WS2_32.dll_WSAEnumNetworkEvents]
test eax, eax
jne 0x50fca9
cmp dword [esp + 0x40], 0
setne al
and al, byte [esp]
movzx eax, al
add dword [esp + 0xc], eax
push 0
mov eax, dword [esp + 8]
push dword [eax + 0xdc]
push dword [esp + 0xd0]
call dword [sym.imp.WS2_32.dll_WSAEventSelect]
test edi, 0x80008
je 0x50fd62
mov dword [esp + 0x40], esi
lea eax, [esp + 0x40]
push eax
push esi
push dword [esp + 0xd4]
call dword [sym.imp.WS2_32.dll_WSAEnumNetworkEvents]
test eax, eax
jne 0x50fcfb
cmp dword [esp + 0x40], 0
setne al
and al, byte [esp]
movzx eax, al
add dword [esp + 0xc], eax
push 0
mov eax, dword [esp + 8]
push dword [eax + 0xdc]
push dword [esp + 0xd4]
call dword [sym.imp.WS2_32.dll_WSAEventSelect]
test edi, 0x100010
je 0x50fd62
mov dword [esp + 0x40], esi
lea eax, [esp + 0x40]
push eax
push esi
push dword [esp + 0xd8]
call dword [sym.imp.WS2_32.dll_WSAEnumNetworkEvents]
test eax, eax
jne 0x50fd49
cmp dword [esp + 0x40], 0
setne al
and al, byte [esp]
movzx eax, al
add dword [esp + 0xc], eax
push 0
mov eax, dword [esp + 8]
push dword [eax + 0xdc]
push dword [esp + 0xd8]
call dword [sym.imp.WS2_32.dll_WSAEventSelect]
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x50fbbd
mov eax, dword [esp + 4]
push dword [eax + 0xdc]
call dword [sym.imp.WS2_32.dll_WSAResetEvent]
mov bl, byte [ebp + 0x18]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
mov ecx, dword [ebp + 0x10]
cmp eax, 0xb
jb 0x50fdad
mov edi, ecx
mov ecx, dword [fcn.005f2b80]
mov esi, edx
call dword [section..00cfg]
push dword [esp + 0x14]
call ecx
mov ecx, edi
mov edx, esi
add esp, 4
mov al, byte [ebp + 0x14]
test ecx, ecx
je 0x50fdba
mov esi, dword [esp + 0xc]
mov dword [ecx], esi
xor edi, edi
test al, al
je 0x50f63e
test edx, edx
jne 0x50f63e
test bl, bl
jne 0x50f63e
mov ebx, dword [esp + 4]
cmp dword [ebx], 0xbab1e
jne 0x50f63e
cmp byte [ebx + 0xe2], 0
jne 0x50f63e
cmp byte [ebx + 0xe4], 0
jne 0x50f63e
cmp dword [ebx + 0x5c], 0
je 0x50fef5
pcmpeqd xmm0, xmm0
lea esi, [esp + 0x30]
movdqa xmmword [esi], xmm0
push esi
call fcn.0051daf0
add esp, 4
mov eax, dword [ebx + 0x5c]
sub esp, 0x14
mov dword [esp + 0x10], eax
pxor xmm0, xmm0
movdqu xmmword [esp], xmm0
call fcn.0051c100
add esp, 0x14
mov dword [ebx + 0x5c], eax
mov edx, dword [eax + 0x10]
mov ecx, dword [eax + 0x14]
mov ebx, dword [esi]
mov esi, dword [esi + 4]
cmp edx, ebx
mov dword [esp], ecx
sbb ecx, esi
jl 0x50f63e
cmp ebx, edx
sbb esi, dword [esp]
jl 0x50fe67
mov ecx, dword [eax + 0x18]
cmp ecx, dword [esp + 0x38]
jle 0x50f63e
sub esp, 0x20
movaps xmm0, xmmword [esp + 0x50]
movups xmmword [esp + 0x10], xmm0
movdqu xmm0, xmmword [eax + 0x10]
movdqu xmmword [esp], xmm0
call fcn.0051dbd0
add esp, 0x20
xor ecx, ecx
inc ecx
cmp eax, 2
mov esi, ecx
cmovae esi, eax
test edx, edx
cmovg ecx, eax
cmove ecx, esi
test ecx, ecx
jne 0x50fef8
jmp 0x50f63e
mov edi, 3
jmp 0x50f63e
mov edi, 4
cmp dword [esp + 0x20], 0xb
jb 0x50f63e
mov ecx, dword [fcn.005f2b80]
call dword [section..00cfg]
push dword [esp + 0x14]
call ecx
add esp, 4
jmp 0x50f63e
mov ecx, dword [fcn.005f2b80]
call dword [section..00cfg]
push dword [esp + 0x14]
call ecx
add esp, 4
mov edi, 4
jmp 0x50f63e
xor ecx, ecx
dec ecx
test ecx, ecx
mov eax, ecx
mov edx, dword [esp + 0x2c]
cmovs eax, edx
cmp ecx, edx
cmovg eax, edx
mov ecx, eax
sar ecx, 0x1f
push ecx
push eax
call fcn.005149b0
add esp, 8
jmp 0x50f63e