Function at 0x449301
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 0x449323
cmp dword [ebp + 8], 0x14
jae 0x449323
xor al, al
jmp 0x4495fe
mov al, byte [ebx]
mov cl, al
and cl, 0xf
push edi
cmp cl, 1
jne 0x44935d
and al, 0xf0
cmp al, 0x50
jae 0x44935d
cmp byte [ebx + 1], 3
jae 0x44935d
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 0x449379
xor al, al
jmp 0x4495fd
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 0x449356
mov al, byte [ebx + 0x12]
jmp 0x449381
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 0x4493e5
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.00404aee
test al, al
jne 0x4493d5
cmp byte [ebp - 1], 3
jne 0x4493c3
cmp dword [esi + 0x104], edi
je 0x4494bf
cmp dword [esi + 0x100], edi
je 0x4494bf
cmp byte [ebp - 1], 4
je 0x4493d5
cmp dword [esi + 0x100], edi
je 0x44951d
inc dword [ebp - 8]
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
mov esi, eax
cmp ecx, dword [eax + 0x2c]
jb 0x44938e
cmp byte [ebp - 1], 3
je 0x4495fb
cmp byte [ebp - 0x10], 0
lea eax, [ebx + 0x13]
je 0x4493fb
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 0x44957a
xor ebx, ebx
cmp dword [esi + 0x38], ebx
jbe 0x449456
mov dword [ebp + 8], ebx
mov eax, dword [esi + 0x30]
mov ecx, dword [ebp + 8]
add ecx, eax
cmp dword [ecx + 0x12], edi
jne 0x44944c
push dword [ebp + 0xc]
call fcn.00404aee
test al, al
jne 0x44944c
mov eax, dword [esi + 0x30]
mov ecx, dword [ebp + 8]
movzx eax, word [ecx + eax + 0x1a]
cmp dword [ebp - 8], eax
je 0x449566
add dword [ebp + 8], 0x1c
inc ebx
cmp ebx, dword [esi + 0x38]
jb 0x44941f
cmp dword [esi + 0x38], 0x3e8
ja 0x4495fb
mov eax, dword [esi + 0x38]
add esi, 0x30
cmp eax, dword [esi + 4]
jb 0x449475
mov ecx, esi
call fcn.0045923b
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.00447660
jmp 0x4495fb
cmp dword [esi + 0x74], 0
je 0x449514
cmp dword [esi + 0x8c], 0
je 0x4494e9
push 2
mov ecx, esi
call fcn.00446a35
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 0x4495fb
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 0x4495fb
mov byte [esi + 0x3d], 8
jmp 0x4495fb
mov edi, dword [ebp + 8]
push 0
push edi
mov edx, ebx
mov ecx, esi
call fcn.00448003
cmp dword [esi + 0x74], 0
mov ebx, eax
je 0x4495fb
cmp dword [esi + 0x8c], 0
je 0x4495fb
push 4
mov ecx, esi
call fcn.00446a35
mov ecx, dword [esi + 0x74]
movzx eax, ax
sub edi, ebx
add eax, edi
push eax
xor dl, dl
call dword [esi + 0x8c]
jmp 0x4495fb
imul ebx, ebx, 0x1c
add ebx, dword [esi + 0x30]
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [ebx + 0x16], eax
jmp 0x4495fb
mov edx, dword [ebp + 0xc]
mov ecx, esi
call fcn.004490ec
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.00448003
mov ecx, esi
mov ebx, eax
call fcn.0042d12a
cmp dword [esi + 0x74], 0
je 0x4495fb
push 4
mov ecx, esi
call fcn.00446a35
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.0044747c
mov al, 1
pop edi
pop esi
pop ebx
leave
ret 8