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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x24
push ebx
push esi
push edi
mov edi, ecx
xor ebx, ebx
mov eax, ebx
mov dword [esp + 0x24], edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x1c], ebx
cmp dword [edi + 4], 1
je 0x428180
cmp dword [edi + 0x5c], ebx
je 0x428185
cmp dword [ebp + 8], 0x20
ja 0x428179
call fcn.00437d27
test eax, eax
je 0x428172
call fcn.00437f66
test eax, eax
je 0x428172
cmp dword [edi + 4], 1
je 0x428180
lea eax, [edi + 0x30]
push eax
mov dword [esp + 0x30], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp dword [edi + 4], 1
jne 0x427da6
mov esi, 0x8007045b
jmp 0x42814e
mov esi, dword [ebp + 0x10]
test esi, esi
je 0x427dde
cmp dword [edi + 0x58], ebx
je 0x427dbf
push dword [edi + 0x58]
call dword [sym.imp.msvcrt.dll_void___cdecl_operator_delete_void__]
pop ecx
mov dword [edi + 0x58], ebx
cmp dword [edi + 0x50], ebx
je 0x427dde
push ebx
push esi
push dword [edi + 0x4c]
call dword [sym.imp.KERNEL32.dll_DeleteTimerQueueTimer]
cmp esi, dword [edi + 0x50]
je 0x427ddb
mov esi, ebx
jmp 0x42814e
mov dword [edi + 0x50], ebx
cmp dword [edi + 8], ebx
je 0x427dd4
mov eax, dword [ebp + 8]
xor ecx, ecx
push 4
add eax, 2
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004a8468
mov dword [esp + 0x20], eax
pop ecx
test eax, eax
jne 0x427e10
mov esi, 0x8007000e
jmp 0x42814e
xor eax, eax
mov esi, ebx
mov dword [esp + 0x18], esi
mov word [esp + 0xc], ax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, ebx
mov dword [esp + 0x20], eax
cmp dword [ebp + 8], edx
jle 0x427ee1
mov ecx, dword [edi + 0x2c]
mov eax, ebx
mov dword [esp + 0x28], ebx
test ecx, ecx
jle 0x427e72
mov ebx, dword [ebp + 0xc]
lea esi, [edi + 0xc]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x18]
mov ebx, dword [ebx + edx*4]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x14]
cmp dword [ebx], edi
je 0x427e68
inc eax
add ebx, 0x10
cmp eax, ecx
jl 0x427e5c
mov edi, dword [esp + 0x24]
xor ebx, ebx
mov dword [esp + 0x28], eax
cmp eax, ecx
jne 0x427e85
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x1c]
mov eax, dword [eax + edx*4]
mov dword [ecx + esi*4], eax
jmp 0x427ed2
mov ecx, eax
add ecx, ecx
cmp byte [edi + ecx*8 + 0x18], 1
jne 0x427eb1
mov eax, dword [esp + 0x20]
cmp eax, dword [edi + ecx*8 + 0x14]
jb 0x427eaa
mov eax, dword [edi + ecx*8 + 0x10]
mov esi, dword [esp + 0x18]
not eax
cmp dword [esp + 0x20], eax
jbe 0x427eb1
mov byte [edi + ecx*8 + 0x19], 1
jmp 0x427ed7
mov eax, dword [ebp + 0xc]
mov edi, dword [esp + 0x1c]
mov eax, dword [eax + edx*4]
mov dword [edi + esi*4], eax
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
mov byte [esp + eax + 0xc], 1
mov word [edi + ecx*8 + 0x18], 0
inc esi
mov dword [esp + 0x18], esi
inc edx
cmp edx, dword [ebp + 8]
jl 0x427e32
or edx, 0xffffffff
mov eax, ebx
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], eax
cmp dword [edi + 0x2c], ebx
jle 0x427f54
lea ecx, [edi + 0x19]
cmp byte [ecx], 0
je 0x427f43
mov edx, dword [esp + 0x20]
cmp edx, dword [ecx - 5]
mov edx, dword [esp + 0x14]
jb 0x427f37
mov eax, dword [ecx - 9]
not eax
cmp dword [esp + 0x20], eax
ja 0x427f33
mov edi, dword [esp + 0x1c]
mov eax, dword [ecx - 0xd]
mov dword [edi + esi*4], eax
inc esi
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x24]
mov word [ecx - 1], 0
mov byte [esp + eax + 0xc], 1
jmp 0x427f43
mov eax, dword [esp + 0x28]
cmp edx, dword [ecx - 9]
jbe 0x427f43
mov edx, dword [ecx - 9]
mov dword [esp + 0x14], edx
inc eax
add ecx, 0x10
mov dword [esp + 0x28], eax
cmp eax, dword [edi + 0x2c]
jl 0x427ef6
mov dword [esp + 0x18], esi
cmp dword [edi + 4], 1
je 0x427d9c
test esi, esi
jle 0x428009
mov eax, dword [edi + 8]
push ebx
push ebx
push ebx
mov esi, dword [eax]
push ebx
push eax
mov ecx, dword [esi + 0x14]
call dword [0x4bb544]
call dword [esi + 0x14]
lea eax, [esp + 0x28]
push eax
push 0x403c68
push dword [edi + 8]
call dword [sym.imp.ole32.dll_CoUnmarshalInterface]
mov dword [esp + 0x10], eax
test eax, eax
js 0x428050
mov eax, dword [esp + 0x28]
push dword [esp + 0x1c]
push dword [esp + 0x1c]
mov ecx, dword [eax]
push eax
mov esi, dword [ecx + 0xc]
mov ecx, esi
call dword [0x4bb544]
call esi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x4bb544]
call esi
mov eax, dword [esp + 0x10]
test eax, eax
js 0x428050
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
mov edx, ebx
cmp dword [edi + 0x2c], ebx
jle 0x428006
lea ecx, [edi + 0x14]
cmp byte [esp + edx + 0xc], 0
je 0x427ffd
mov eax, dword [ecx - 4]
add eax, esi
mov word [ecx + 4], 1
mov dword [ecx], eax
inc edx
add ecx, 0x10
cmp edx, dword [edi + 0x2c]
jl 0x427fe9
mov dword [edi + 0x48], ebx
mov ecx, dword [esp + 0x14]
cmp ecx, 0xffffffff
je 0x42814a
cmp dword [edi + 0x4c], 0xffffffff
je 0x42814a
cmp dword [edi + 0x50], 0
je 0x428098
mov eax, dword [esp + 0x20]
add eax, ecx
cmp eax, dword [edi + 0x54]
jae 0x427dd4
push ebx
push ecx
push dword [edi + 0x50]
push dword [edi + 0x4c]
call dword [sym.imp.KERNEL32.dll_ChangeTimerQueueTimer]
test eax, eax
jne 0x42814a
jmp 0x427dd4
mov ecx, dword [edi + 0x48]
lea eax, [ecx + 1]
mov dword [edi + 0x48], eax
cmp ecx, 3
jae 0x428006
mov eax, ebx
cmp dword [edi + 0x2c], ebx
jle 0x42808f
mov ebx, dword [esp + 0x14]
lea ecx, [edi + 0x18]
cmp byte [esp + eax + 0xc], 0
je 0x428080
mov word [ecx], 0x101
cmp ebx, 0x64
jbe 0x428080
push 0x64
pop ebx
inc eax
add ecx, 0x10
cmp eax, dword [edi + 0x2c]
jl 0x42806c
mov dword [esp + 0x14], ebx
xor ebx, ebx
mov dword [esp + 0x10], ebx
jmp 0x428009
cmp dword [edi + 4], 1
je 0x427d9c
cmp dword [edi + 0x58], 0
je 0x4280b5
push dword [edi + 0x58]
call dword [sym.imp.msvcrt.dll_void___cdecl_operator_delete_void__]
pop ecx
mov dword [edi + 0x58], ebx
push 8
call fcn.004a843f
mov esi, eax
mov dword [esp + 0x2c], esi
pop ecx
test esi, esi
je 0x4280cb
mov dword [esi], edi
jmp 0x4280d1
mov esi, ebx
mov dword [esp + 0x28], ebx
test esi, esi
je 0x427e06
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0x28
push ebx
push dword [esp + 0x1c]
mov dword [esp + 0x2c], eax
lea eax, [esi + 4]
push esi
push 0x428190
push dword [edi + 0x4c]
mov dword [edi + 0x58], esi
push eax
mov dword [esp + 0x40], eax
call dword [sym.imp.KERNEL32.dll_CreateTimerQueueTimer]
test eax, eax
jne 0x428136
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jle 0x42811d
movzx esi, si
or esi, 0x80070000
mov eax, dword [esp + 0x24]
mov dword [edi + 0x58], ebx
mov dword [eax], ebx
mov eax, dword [esp + 0x28]
push eax
mov dword [eax], ebx
call dword [sym.imp.msvcrt.dll_void___cdecl_operator_delete_void__]
pop ecx
jmp 0x42814e
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
mov dword [edi + 0x50], eax
mov eax, dword [esp + 0x14]
add eax, dword [esp + 0x20]
mov dword [edi + 0x54], eax
mov esi, dword [esp + 0x10]
push dword [esp + 0x2c]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x428168
push eax
call dword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void__]
pop ecx
test esi, esi
jns 0x42816e
mov ebx, esi
mov eax, ebx
jmp 0x428185
mov eax, 0x8000ffff
jmp 0x428185
mov eax, 0x80070057
jmp 0x428185
mov eax, 0x8007045b
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc