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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
cmp dword [ebp + 8], 0x17
push ebx
push esi
mov esi, ecx
mov ebx, edx
mov dword [ebp - 0xc], esi
jae 0x44a5c8
cmp dword [ebp + 8], 0x14
jae 0x44a5c8
xor al, al
jmp 0x44a8a3
mov al, byte [ebx]
mov cl, al
and cl, 0xf
push edi
cmp cl, 1
jne 0x44a602
and al, 0xf0
cmp al, 0x50
jae 0x44a602
cmp byte [ebx + 1], 3
jae 0x44a602
movzx eax, word [ebx + 2]
push eax
mov byte [ebp - 0x10], cl
call dword [sym.imp.WS2_32.dll_ntohs]
cmp dword [ebp + 8], 0x14
movzx eax, ax
mov dword [ebp - 0x14], eax
jae 0x44a61e
xor al, al
jmp 0x44a8a2
push dword [ebx]
mov byte [ebp - 0x10], 0
call dword [sym.imp.WS2_32.dll_ntohl]
cmp dword [ebp + 8], 0x17
mov edi, eax
mov dword [ebp - 0x14], edi
jb 0x44a5fb
mov al, byte [ebx + 0x12]
jmp 0x44a626
mov al, byte [ebx]
mov edi, dword [ebp - 0x14]
shr al, 4
and dword [ebp - 8], 0
cmp dword [esi + 0x2c], 0
mov byte [ebp - 1], al
jbe 0x44a68a
mov eax, dword [esi + 0x24]
mov ecx, dword [ebp - 8]
mov esi, dword [eax + ecx*4]
push dword [ebp + 0xc]
mov ecx, esi
call fcn.00404a40
test al, al
jne 0x44a67a
cmp byte [ebp - 1], 3
jne 0x44a668
cmp dword [esi + 0x104], edi
je 0x44a764
cmp dword [esi + 0x100], edi
je 0x44a764
cmp byte [ebp - 1], 4
je 0x44a67a
cmp dword [esi + 0x100], edi
je 0x44a7c2
inc dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
mov esi, eax
cmp ecx, dword [eax + 0x2c]
jb 0x44a633
cmp byte [ebp - 1], 3
je 0x44a8a0
cmp byte [ebp - 0x10], 0
lea eax, [ebx + 0x13]
je 0x44a6a0
lea eax, [ebx + 0x10]
movzx eax, word [eax]
push eax
call dword [sym.imp.WS2_32.dll_ntohs]
cmp byte [ebp - 1], 4
movzx eax, ax
mov dword [ebp - 8], eax
je 0x44a81f
xor ebx, ebx
cmp dword [esi + 0x38], ebx
jbe 0x44a6fb
mov dword [ebp + 8], ebx
mov eax, dword [esi + 0x30]
mov ecx, dword [ebp + 8]
add ecx, eax
cmp dword [ecx + 0x12], edi
jne 0x44a6f1
push dword [ebp + 0xc]
call fcn.00404a40
test al, al
jne 0x44a6f1
mov eax, dword [esi + 0x30]
mov ecx, dword [ebp + 8]
movzx eax, word [ecx + eax + 0x1a]
cmp dword [ebp - 8], eax
je 0x44a80b
add dword [ebp + 8], 0x1c
inc ebx
cmp ebx, dword [esi + 0x38]
jb 0x44a6c4
cmp dword [esi + 0x38], 0x3e8
ja 0x44a8a0
mov eax, dword [esi + 0x38]
add esi, 0x30
cmp eax, dword [esi + 4]
jb 0x44a71a
mov ecx, esi
call fcn.0043c9b4
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 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 - 0x14]
mov esi, dword [ebp - 8]
mov dword [ebx + 0x12], edi
mov word [ebx + 0x1a], si
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
push dword [ebp - 0x10]
mov dword [ebx + 0x16], eax
call sub.MSVCRT.dll_rand
push eax
push esi
push edi
push dword [ebp + 0xc]
push dword [ebp - 0xc]
call fcn.004488e4
jmp 0x44a8a0
cmp dword [esi + 0x74], 0
je 0x44a7b9
cmp dword [esi + 0x8c], 0
je 0x44a78e
push 2
mov ecx, esi
call fcn.00447c54
mov ecx, dword [esi + 0x74]
movzx eax, ax
add eax, dword [ebp + 8]
xor dl, dl
push eax
call dword [esi + 0x8c]
mov eax, dword [esi + 0x88]
test eax, eax
je 0x44a8a0
mov ecx, dword [esi + 0x74]
xor edx, edx
cmp byte [esi + 0x3d], 1
setne dl
dec edx
and edx, 7
add edx, 0x2746
call eax
jmp 0x44a8a0
mov byte [esi + 0x3d], 8
jmp 0x44a8a0
mov edi, dword [ebp + 8]
push 0
push edi
mov edx, ebx
mov ecx, esi
call fcn.004492bf
cmp dword [esi + 0x74], 0
mov ebx, eax
je 0x44a8a0
cmp dword [esi + 0x8c], 0
je 0x44a8a0
push 4
mov ecx, esi
call fcn.00447c54
mov ecx, dword [esi + 0x74]
movzx eax, ax
sub edi, ebx
add eax, edi
push eax
xor dl, dl
call dword [esi + 0x8c]
jmp 0x44a8a0
imul ebx, ebx, 0x1c
add ebx, dword [esi + 0x30]
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [ebx + 0x16], eax
jmp 0x44a8a0
mov edx, dword [ebp + 0xc]
mov ecx, esi
call fcn.0044a3a5
mov esi, eax
mov ax, word [ebp - 8]
mov dword [esi + 0xfc], edi
mov dword [esi + 0x104], edi
inc edi
mov dword [esi + 0x100], edi
mov word [esi + 0x46], ax
mov byte [esi + 0x3d], 2
call sub.MSVCRT.dll_rand
mov edi, dword [ebp + 8]
mov word [esi + 0x48], ax
mov word [esi + 0x4c], ax
mov al, byte [ebp - 0x10]
push 1
push edi
mov edx, ebx
mov ecx, esi
mov byte [esi + 0x3c], al
call fcn.004492bf
mov ecx, esi
mov ebx, eax
call fcn.0042e138
cmp dword [esi + 0x74], 0
je 0x44a8a0
push 4
mov ecx, esi
call fcn.00447c54
mov ecx, dword [esi + 0x74]
movzx eax, ax
sub edi, ebx
add eax, edi
push eax
xor dl, dl
call dword [esi + 0x8c]
push 1
mov eax, esi
call fcn.00448700
mov al, 1
pop edi
pop esi
pop ebx
leave
ret 8