Function at 0x40efd9
Capabilities:
Check for time delay via gettickcount
Send data
Send data on socket

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x130
push ebx
push esi
test edi, edi
je 0x40f21a
mov eax, dword [edi + 0x18]
test eax, eax
je 0x40f21a
push eax
mov ax, word [edi + 0x1c]
call fcn.00430766
mov dword [esp + 0x2c], eax
test eax, eax
je 0x40f21a
mov eax, dword [edi + 8]
and dword [edi + 0x10], 0
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x24], eax
mov eax, dword [edi]
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x24]
mov ecx, 0x80000
shr eax, 3
mov dword [esp + 8], ecx
cmp eax, ecx
ja 0x40f03f
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
mov dword [esp + 0x10], 0x400
call fcn.0042c055
mov dword [esp + 0x14], eax
test eax, eax
je 0x40f204
cmp dword [esp + 8], 0
je 0x40f204
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
call ebx
mov dword [edi + 0x28], eax
jmp 0x40f1e9
call ebx
mov dword [edi + 0x2c], eax
call fcn.0042d75d
mov dword [esp + 0x18], eax
push 4
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0x38]
call fcn.0042d83d
push dword [esp + 8]
mov edx, eax
push dword [esp + 0x18]
call fcn.0042d92d
and dword [esp + 0x18], 0
test dword [edi + 0x24], 0xfffffff8
jbe 0x40f165
xor esi, esi
cmp dword [esp + 8], esi
jbe 0x40f14b
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
sub eax, esi
mov dword [esp + 0xc], eax
cmp eax, ecx
jb 0x40f0d8
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0x2c]
mov edx, dword [eax]
test edx, edx
je 0x40f109
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x40f109
mov eax, dword [esp + 0x14]
push 0x10
push ecx
push 0
push dword [esp + 0x18]
add eax, esi
push eax
push edx
call dword [sym.imp.WS2_32.dll_sendto]
cmp eax, dword [esp + 0xc]
sete al
jmp 0x40f12c
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x40f12a
mov eax, dword [eax + 0xc]
test eax, eax
je 0x40f12a
push 0x1c
push eax
mov eax, dword [esp + 0x1c]
push 0
push dword [esp + 0x18]
add eax, esi
push eax
push ecx
jmp 0x40f0fa
xor al, al
cmp al, 1
jne 0x40f13d
mov eax, dword [esp + 0x10]
add dword [esp + 0x20], eax
adc dword [esp + 0x24], 0
add esi, dword [esp + 0x10]
cmp esi, dword [esp + 8]
jb 0x40f0c2
mov eax, dword [esp + 0x18]
add eax, dword [esp + 8]
mov ecx, dword [edi + 0x24]
shr ecx, 3
mov dword [esp + 0x18], eax
cmp eax, ecx
jb 0x40f0b6
call ebx
mov esi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0
mov dword [edi + 0x34], eax
push dword [0x43716c]
call esi
cmp eax, 0x102
jne 0x40f1ff
push 0
push dword [edi + 0x38]
call esi
cmp eax, 0x102
jne 0x40f1ff
mov eax, dword [edi + 0x34]
sub eax, dword [edi + 0x2c]
mov ecx, 0x3e8
cmp eax, ecx
jae 0x40f1a7
sub ecx, eax
push ecx
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [edi + 0x34]
push dword [esp + 0x24]
sub eax, dword [edi + 0x2c]
push dword [esp + 0x24]
add dword [esp + 0x24], eax
push dword [esp + 0x24]
mov eax, edi
call fcn.0040ee9e
call ebx
mov ecx, eax
sub ecx, dword [edi + 0x14]
cmp ecx, 0x3a98
jbe 0x40f1e9
mov dword [edi + 0x14], eax
push 0x200
mov eax, 0x400
call fcn.0042d7a9
mov dword [esp + 0x10], eax
call ebx
mov ecx, dword [edi + 0x20]
sub eax, dword [edi + 0x28]
imul ecx, ecx, 0x3e8
cmp eax, ecx
jb 0x40f077
call ebx
mov dword [edi + 0x30], eax
push dword [esp + 0x14]
call fcn.0042c085
mov esi, dword [esp + 0x2c]
call fcn.00430adb
mov al, 1
jmp 0x40f21c
xor al, al
pop esi
pop ebx
mov esp, ebp
pop ebp
ret