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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
cmp dword [ebp + 8], 0x10
push ebx
push esi
mov esi, edx
mov ebx, ecx
mov dword [ebp - 4], esi
mov dword [ebp - 0x10], ebx
jae 0x4389cc
xor al, al
jmp 0x438c03
push edi
push dword [esi]
call dword [sym.imp.WS2_32.dll_ntohl]
cmp dword [ebp + 8], 0x17
mov edi, eax
mov dword [ebp - 0xc], edi
jae 0x4389e7
xor al, al
jmp 0x438c02
and dword [ebp - 8], 0
cmp dword [ebx + 0x24], 0
jbe 0x438a3c
mov eax, dword [ebx + 0x1c]
mov ecx, dword [ebp - 8]
mov esi, dword [eax + ecx*4]
push dword [ebp + 0xc]
mov ecx, esi
call fcn.0040252a
test al, al
jne 0x438a2e
mov edx, dword [ebp - 4]
mov al, byte [edx + 0x12]
cmp al, 3
jne 0x438a1e
cmp dword [esi + 0xa0], edi
je 0x438b1d
cmp al, 4
je 0x438a2e
cmp dword [esi + 0x9c], edi
je 0x438b57
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebx + 0x24]
jb 0x4389f1
mov esi, dword [ebp - 4]
mov al, byte [esi + 0x12]
cmp al, 3
je 0x438c00
cmp al, 4
je 0x438b8f
xor esi, esi
cmp dword [ebx + 0x30], esi
jbe 0x438a9e
mov dword [ebp + 8], esi
mov eax, dword [ebx + 0x28]
mov ecx, dword [ebp + 8]
add ecx, eax
cmp dword [ecx + 0x12], edi
jne 0x438a94
push dword [ebp + 0xc]
call fcn.0040252a
test al, al
jne 0x438a94
mov eax, dword [ebp - 4]
movzx eax, word [eax + 0x13]
push eax
call dword [sym.imp.WS2_32.dll_ntohs]
mov ecx, dword [ebx + 0x28]
mov edx, dword [ebp + 8]
movzx eax, ax
cmp ax, word [edx + ecx + 0x1a]
je 0x438b7f
add dword [ebp + 8], 0x1c
inc esi
cmp esi, dword [ebx + 0x30]
jb 0x438a59
cmp dword [ebx + 0x30], 0x3e8
ja 0x438c00
lea esi, [ebx + 0x28]
mov eax, dword [esi + 8]
cmp eax, dword [esi + 4]
jb 0x438abd
mov ecx, esi
call fcn.0040ddae
mov eax, dword [esi + 8]
mov ebx, eax
imul ebx, ebx, 0x1c
add ebx, dword [esi]
inc eax
mov dword [esi + 8], eax
mov esi, dword [ebp + 0xc]
mov eax, dword [ebp - 0xc]
mov edi, ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov edi, dword [ebp - 4]
mov esi, dword [sym.imp.WS2_32.dll_ntohs]
mov dword [ebx + 0x12], eax
movzx eax, word [edi + 0x13]
push eax
call esi
mov word [ebx + 0x1a], ax
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [ebx + 0x16], eax
movzx eax, word [edi + 0x13]
push eax
call esi
movzx esi, ax
call sub.MSVCRT.dll_rand
push eax
push esi
push dword [ebp - 0xc]
push dword [ebp + 0xc]
push dword [ebp - 0x10]
call fcn.004376e1
jmp 0x438c00
mov ecx, dword [esi + 0x64]
test ecx, ecx
je 0x438b4e
mov eax, dword [ebp + 8]
add eax, 0x1c
push eax
xor dl, dl
call dword [esi + 0x7c]
mov ecx, dword [esi + 0x64]
xor edx, edx
cmp byte [esi + 0x3c], 1
setne dl
dec edx
and edx, 7
add edx, 0x2746
call dword [esi + 0x78]
jmp 0x438c00
mov byte [esi + 0x3c], 8
jmp 0x438c00
mov edi, dword [ebp + 8]
push 0
push edi
mov ecx, esi
call fcn.00437f21
mov ecx, dword [esi + 0x64]
test ecx, ecx
je 0x438c00
sub edi, eax
add edi, 0x1c
push edi
xor dl, dl
call dword [esi + 0x7c]
jmp 0x438c00
imul esi, esi, 0x1c
add esi, ecx
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [esi + 0x16], eax
jmp 0x438c00
mov edx, dword [ebp + 0xc]
mov ecx, ebx
call fcn.00438851
mov ebx, dword [ebp - 4]
mov esi, eax
mov dword [esi + 0x98], edi
mov dword [esi + 0xa0], edi
inc edi
mov dword [esi + 0x9c], edi
movzx eax, word [ebx + 0x13]
push eax
call dword [sym.imp.WS2_32.dll_ntohs]
mov word [esi + 0x46], ax
mov byte [esi + 0x3c], 2
call sub.MSVCRT.dll_rand
mov edi, dword [ebp + 8]
push 1
push edi
mov edx, ebx
mov ecx, esi
mov word [esi + 0x48], ax
call fcn.00437f21
mov ecx, esi
mov ebx, eax
call fcn.00422b95
mov ecx, dword [esi + 0x64]
test ecx, ecx
je 0x438c00
sub edi, ebx
add edi, 0x1c
push edi
xor dl, dl
call dword [esi + 0x7c]
push 1
mov eax, esi
call fcn.004375b1
mov al, 1
pop edi
pop esi
pop ebx
leave
ret 8