Function at 0x50c6cc
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffec
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x14], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x50c98d
push dword fs:[eax]
mov dword fs:[eax], esp
call sub.kernel32.dll_GetTickCount_1
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], 0xffffffff
mov eax, dword [0x6c0524]
cmp byte [eax], 0
je 0x50c942
xor edx, edx
push ebp
push 0x50c8f5
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 4]
add eax, 4
push eax
call sub.kernel32.dll_EnterCriticalSection
xor edx, edx
push ebp
push 0x50c8e4
push dword fs:[edx]
mov dword fs:[edx], esp
mov dword [ebp - 0xc], 2
mov eax, dword [setsockopt]
cmp dword [eax + 0x108], 0
jle 0x50c7a6
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [ebp - 4]
sub eax, dword [edx + 0x2a8]
cmp eax, 0x64
jb 0x50c7a6
call sub.kernel32.dll_GetTickCount_1
mov edx, dword [ebp - 4]
mov dword [edx + 0x2a8], eax
xor esi, esi
mov edi, 0x6c9708
mov ebx, edi
cmp byte [ebx + 4], 0
je 0x50c79d
cmp dword [ebx + 0x34], 0
je 0x50c79d
mov ebx, dword [setsockopt]
mov ebx, dword [ebx + 0x108]
dec ebx
test ebx, ebx
jl 0x50c79d
inc ebx
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.0050ddb8
dec ebx
jne 0x50c790
inc esi
add edi, 0x6c
cmp esi, 0x10
jne 0x50c770
mov dword [ebp - 0xc], 3
xor esi, esi
mov edi, 0x6c9708
mov ebx, edi
mov dword [ebp - 0xc], 4
cmp byte [ebx + 4], 0
je 0x50c806
cmp dword [ebx + 0x34], 0
je 0x50c806
cmp dword [ebx], 0
je 0x50c806
mov dword [ebp - 0xc], 5
mov eax, dword [ebx + 0x34]
mov eax, dword [eax + 8]
mov dword [ebx + 0x4c], eax
mov eax, dword [ebx + 0x34]
push eax
mov ecx, ebx
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.0050cfe8
test al, al
je 0x50c7fd
mov eax, dword [ebx + 0x34]
mov eax, dword [eax + 8]
mov dword [ebx + 0x50], eax
jmp 0x50c806
mov eax, dword [ebx + 0x34]
mov eax, dword [eax + 8]
mov dword [ebx + 0x50], eax
inc esi
add edi, 0x6c
cmp esi, 0x10
jne 0x50c7b4
mov dword [ebp - 0xc], 6
xor esi, esi
mov edi, 0x6c9708
cmp dword [edi], 0
je 0x50c8bd
mov dword [ebp - 0xc], 7
mov ebx, edi
cmp byte [ebx + 4], 0
je 0x50c8bd
mov dword [ebp - 0xc], 8
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [ebx + 0x3c]
cmp eax, 0xea60
jb 0x50c862
mov eax, dword [ebx]
call fcn.004e0624
mov edx, dword [ebx]
mov eax, dword [ebp - 4]
call fcn.0050c1a8
jmp 0x50c8bd
mov dword [ebp - 0xc], 9
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [ebx + 0x54]
cmp eax, 0x3e8
jb 0x50c896
call sub.kernel32.dll_GetTickCount_1
mov dword [ebx + 0x54], eax
mov eax, dword [ebx + 0x5c]
mov dword [ebx + 0x58], eax
mov eax, dword [ebx + 0x64]
mov dword [ebx + 0x60], eax
xor eax, eax
mov dword [ebx + 0x5c], eax
xor eax, eax
mov dword [ebx + 0x64], eax
mov dword [ebp - 0xc], 0xa
cmp byte [ebx + 0x38], 0
je 0x50c8b6
mov byte [ebx + 0x38], 0
mov ecx, 3
mov edx, esi
mov eax, dword [ebp - 4]
call fcn.0050d9e8
mov dword [ebp - 0xc], 0xb
inc esi
add edi, 0x6c
cmp esi, 0x10
jne 0x50c81d
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50c8eb
mov eax, dword [ebp - 4]
add eax, 4
push eax
call sub.kernel32.dll_LeaveCriticalSection
ret
call sub.kernel32.dll_GetTickCount_1
sub eax, dword [ebp - 8]
mov edx, dword [0x6c0d7c]
mov dword [edx], eax
mov eax, dword [0x6c0d7c]
mov eax, dword [eax]
mov edx, dword [0x6c0ce4]
cmp eax, dword [edx]
jle 0x50c972
mov eax, dword [0x6c0d7c]
mov eax, dword [eax]
mov edx, dword [0x6c0ce4]
mov dword [edx], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x50c994
lea eax, [ebp - 0x14]
mov edx, 2
call fcn.004053b8
ret