Function at 0x407c8e
Capabilities:
Check for time delay via gettickcount
Receive data
Receive data on socket

Disassembly:
push ebp
mov ebp, esp
push ebx
sub esp, 0x64
mov dword [ebp - 0x4c], ecx
mov eax, dword [ebp + 0x14]
mov edx, dword [eax]
mov eax, dword [0x41b700]
mov dword [esp + 0xc], 0
mov dword [esp + 8], edx
mov dword [esp + 4], 2
mov dword [esp], eax
call sub.USER32.dll_SetTimer
sub esp, 0x10
call sub.KERNEL32.dll_GetTickCount
mov dword [ebp - 0xc], eax
mov edx, dword [0x41b700]
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 4]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x8001
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.WS2_32.dll_WSAAsyncSelect
sub esp, 0x10
mov dword [esp + 8], 0x113
mov dword [esp + 4], 0x8001
lea eax, [ebp - 0x44]
mov dword [esp], eax
call fcn.00408ee3
mov edx, dword [ebp - 0x44]
mov eax, dword [0x41b700]
cmp edx, eax
je 0x407d20
jmp 0x407e49
mov eax, dword [ebp - 0x40]
cmp eax, 0x8001
jne 0x407de8
mov eax, dword [0x41b700]
mov dword [esp + 4], 2
mov dword [esp], eax
call sub.USER32.dll_KillTimer
sub esp, 8
mov eax, dword [ebp + 0x14]
mov ebx, dword [eax]
call sub.KERNEL32.dll_GetTickCount
sub eax, dword [ebp - 0xc]
cmp ebx, eax
jae 0x407d5e
mov eax, dword [ebp + 0x14]
mov eax, dword [eax]
jmp 0x407d66
call sub.KERNEL32.dll_GetTickCount
sub eax, dword [ebp - 0xc]
mov edx, eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax]
sub eax, edx
mov edx, eax
mov eax, dword [ebp + 0x14]
mov dword [eax], edx
mov edx, dword [0x41b700]
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 4]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.WS2_32.dll_WSAAsyncSelect
sub esp, 0x10
mov dword [ebp - 0x28], 0x10
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 4]
lea ecx, [ebp - 0x28]
mov dword [esp + 0x14], ecx
lea ecx, [ebp - 0x24]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], 0
mov dword [esp + 8], edx
mov edx, dword [ebp + 8]
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.WS2_32.dll_recvfrom
sub esp, 0x18
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
js 0x407e4e
jmp 0x407e58
mov eax, dword [ebp - 0x40]
cmp eax, 0x113
jne 0x407e49
mov eax, dword [ebp - 0x3c]
cmp eax, 2
je 0x407dfc
jmp 0x407e49
mov eax, dword [0x41b700]
mov dword [esp + 4], 2
mov dword [esp], eax
call sub.USER32.dll_KillTimer
sub esp, 8
mov edx, dword [0x41b700]
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 4]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.WS2_32.dll_WSAAsyncSelect
sub esp, 0x10
mov eax, 0xffffffff
jmp 0x407f06
jmp 0x407cf4
mov eax, 0xffffffff
jmp 0x407f06
mov eax, 0x16
cmp eax, dword [ebp - 0x10]
jle 0x407e67
jmp 0x407f01
mov eax, dword [ebp + 8]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0x14]
movzx eax, byte [eax]
cmp al, 1
je 0x407e7c
jmp 0x407f01
mov eax, dword [ebp - 0x4c]
lea edx, [eax + 0x38]
mov eax, dword [ebp - 0x14]
add eax, 2
mov dword [esp + 8], 6
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x407ea2
jmp 0x407f01
mov edx, dword [ebp + 0x18]
mov eax, edx
add eax, eax
add eax, edx
add eax, eax
mov edx, dword [ebp - 0x4c]
add eax, edx
lea edx, [eax + 8]
mov eax, dword [ebp - 0x14]
add eax, 8
mov dword [esp + 8], 6
mov dword [esp + 4], edx
mov dword [esp], eax
call sub.msvcrt.dll_memcmp
test eax, eax
je 0x407ed5
jmp 0x407f01
mov eax, dword [ebp - 0x14]
movzx eax, word [eax + 0x10]
movzx edx, ax
mov eax, dword [ebp - 0x4c]
mov eax, dword [eax + 0x48]
cmp edx, eax
je 0x407eeb
jmp 0x407f01
mov eax, dword [ebp - 0x14]
movzx eax, byte [eax + 1]
movzx eax, al
cmp eax, dword [ebp + 0x10]
je 0x407efc
jmp 0x407f01
mov eax, dword [ebp - 0x10]
jmp 0x407f06
jmp 0x407cc9
mov ebx, dword [ebp - 4]
leave
ret 0x14