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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
mov esi, 0xffffffff
push ebx
sub esp, 0x6c
mov edi, dword [ebp + 8]
call sub.KERNEL32.dll_GetTickCount
mov dword [esp], eax
lea edx, [ebp - 0x4c]
mov dword [esp + 4], edx
call fcn.00439a90
test eax, eax
jne 0x440433
lea eax, [ebp - 0x50]
mov ebx, 0xffffffff
mov dword [esp], eax
call fcn.0043c0d0
mov dword [ebp - 0x60], eax
mov eax, 4
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x50]
add eax, 2
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x60]
mov dword [esp], eax
call fcn.00403d50
mov dword [ebp - 0x60], eax
mov ecx, dword [0x4463a4]
mov edx, dword [ebp - 0x50]
cmp ecx, 0xffffffff
je 0x44029a
mov eax, edx
mov ebx, eax
mov eax, dword [ebp - 0x60]
inc edx
mov dword [eax + ebx*4], ecx
mov dword [ebp - 0x5c], 0xffffffff
cmp edi, 0xffffffff
je 0x4402b2
mov ecx, dword [ebp - 0x60]
mov eax, edx
inc edx
mov dword [ebp - 0x5c], eax
mov dword [ecx + eax*4], edi
mov dword [esp + 0xc], esi
mov eax, dword [ebp - 0x60]
xor edi, edi
mov dword [esp + 8], edi
mov dword [esp], edx
mov dword [esp + 4], eax
call sub.KERNEL32.dll_WaitForMultipleObjects
mov dword [ebp - 0x58], eax
sub esp, 0x10
cmp eax, dword [ebp - 0x50]
jb 0x440420
mov eax, ebx
not eax
shr eax, 0x1f
cmp dword [ebp - 0x58], ebx
sete dl
test edx, eax
jne 0x440325
mov eax, dword [ebp - 0x60]
mov dword [esp], eax
call fcn.00403f40
cmp dword [ebp - 0x58], 0x102
je 0x440304
call sub.KERNEL32.dll_GetTickCount
mov eax, dword [ebp - 0x5c]
mov edx, dword [ebp - 0x5c]
not eax
shr eax, 0x1f
cmp dword [ebp - 0x58], edx
sete dl
test edx, eax
setne al
lea esp, [ebp - 0xc]
movzx eax, al
pop ebx
pop esi
pop edi
pop ebp
ret
lea ebx, [ebp - 0x54]
xor edi, edi
mov dword [esp], ebx
call fcn.0043eb90
jmp 0x44033d
mov dword [esp], ebx
inc edi
call fcn.0043ebd0
inc eax
jne 0x440334
mov dword [esp], edi
mov esi, 4
mov dword [esp + 4], esi
call fcn.00403a80
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x68], 0
mov dword [esp], ebx
call fcn.0043eb90
jmp 0x44037a
mov edx, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x64]
mov dword [ecx + edx*4], eax
inc edx
mov dword [ebp - 0x68], edx
mov dword [esp], ebx
call fcn.0043ebd0
cmp eax, 0xffffffff
jne 0x440365
xor edi, edi
cmp edi, dword [ebp - 0x68]
jge 0x4403b9
lea esi, [esi]
lea edi, [edi]
mov eax, dword [ebp - 0x64]
lea edx, [ebp - 0x48]
xor ebx, ebx
mov esi, dword [eax + edi*4]
mov dword [esp + 8], edx
mov dword [esp + 4], ebx
mov dword [esp], esi
call dword [0x45a800]
sub esp, 0xc
test eax, eax
je 0x4403d0
inc edi
cmp edi, dword [ebp - 0x68]
jl 0x440390
mov ecx, dword [ebp - 0x64]
mov dword [esp], ecx
call fcn.00403f40
jmp 0x4402eb
mov dword [esp], esi
call fcn.0043ef80
mov eax, dword [ebp - 0x48]
xor ebx, ebx
mov dword [esp], eax
call fcn.0043ef80
jmp 0x4403ed
inc ebx
cmp ebx, 5
ja 0x4403b3
mov edx, dword [ebx*8 + 0x456454]
test dword [ebp - 0x48], edx
je 0x4403e7
mov dword [esp], esi
mov eax, dword [ebx*8 + 0x456450]
movzx edx, dx
movzx eax, word [ebp + eax*4 - 0x44]
shl eax, 0x10
or edx, eax
mov dword [esp + 4], edx
call fcn.0043e550
jmp 0x4403e7
mov ecx, dword [ebp - 0x60]
mov eax, dword [ecx + eax*4]
mov dword [esp], eax
call fcn.0043c240
jmp 0x4402eb
call sub.KERNEL32.dll_GetTickCount
mov edx, dword [ebp - 0x4c]
mov esi, edx
sub esi, eax
jns 0x44024d
xor esi, esi
jmp 0x44024d