Function at 0x44a587
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 0x44a5a9
cmp dword [ebp + 8], 0x14
jae 0x44a5a9
xor al, al
jmp 0x44a884
mov al, byte [ebx]
mov cl, al
and cl, 0xf
push edi
cmp cl, 1
jne 0x44a5e3
and al, 0xf0
cmp al, 0x50
jae 0x44a5e3
cmp byte [ebx + 1], 3
jae 0x44a5e3
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 0x44a5ff
xor al, al
jmp 0x44a883
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 0x44a5dc
mov al, byte [ebx + 0x12]
jmp 0x44a607
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 0x44a66b
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.00404a5f
test al, al
jne 0x44a65b
cmp byte [ebp - 1], 3
jne 0x44a649
cmp dword [esi + 0x104], edi
je 0x44a745
cmp dword [esi + 0x100], edi
je 0x44a745
cmp byte [ebp - 1], 4
je 0x44a65b
cmp dword [esi + 0x100], edi
je 0x44a7a3
inc dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
mov esi, eax
cmp ecx, dword [eax + 0x2c]
jb 0x44a614
cmp byte [ebp - 1], 3
je 0x44a881
cmp byte [ebp - 0x10], 0
lea eax, [ebx + 0x13]
je 0x44a681
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 0x44a800
xor ebx, ebx
cmp dword [esi + 0x38], ebx
jbe 0x44a6dc
mov dword [ebp + 8], ebx
mov eax, dword [esi + 0x30]
mov ecx, dword [ebp + 8]
add ecx, eax
cmp dword [ecx + 0x12], edi
jne 0x44a6d2
push dword [ebp + 0xc]
call fcn.00404a5f
test al, al
jne 0x44a6d2
mov eax, dword [esi + 0x30]
mov ecx, dword [ebp + 8]
movzx eax, word [ecx + eax + 0x1a]
cmp dword [ebp - 8], eax
je 0x44a7ec
add dword [ebp + 8], 0x1c
inc ebx
cmp ebx, dword [esi + 0x38]
jb 0x44a6a5
cmp dword [esi + 0x38], 0x3e8
ja 0x44a881
mov eax, dword [esi + 0x38]
add esi, 0x30
cmp eax, dword [esi + 4]
jb 0x44a6fb
mov ecx, esi
call fcn.00448f4e
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.004488c6
jmp 0x44a881
cmp dword [esi + 0x74], 0
je 0x44a79a
cmp dword [esi + 0x8c], 0
je 0x44a76f
push 2
mov ecx, esi
call fcn.00447c36
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 0x44a881
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 0x44a881
mov byte [esi + 0x3d], 8
jmp 0x44a881
mov edi, dword [ebp + 8]
push 0
push edi
mov edx, ebx
mov ecx, esi
call fcn.004492db
cmp dword [esi + 0x74], 0
mov ebx, eax
je 0x44a881
cmp dword [esi + 0x8c], 0
je 0x44a881
push 4
mov ecx, esi
call fcn.00447c36
mov ecx, dword [esi + 0x74]
movzx eax, ax
sub edi, ebx
add eax, edi
push eax
xor dl, dl
call dword [esi + 0x8c]
jmp 0x44a881
imul ebx, ebx, 0x1c
add ebx, dword [esi + 0x30]
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [ebx + 0x16], eax
jmp 0x44a881
mov edx, dword [ebp + 0xc]
mov ecx, esi
call fcn.0044a386
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.004492db
mov ecx, esi
mov ebx, eax
call fcn.0042e123
cmp dword [esi + 0x74], 0
je 0x44a881
push 4
mov ecx, esi
call fcn.00447c36
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.004486e2
mov al, 1
pop edi
pop esi
pop ebx
leave
ret 8