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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x5c
push ebx
mov ebx, ecx
push esi
push edi
mov dword [esp + 0x20], ebx
cmp byte [ebx], 0
je 0x41dd14
mov ax, word [0x5a8a74]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea esi, [ebx + 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [0x5a8a5c]
mov edi, dword [0x5a8a58]
mov dword [esp + 0xc], eax
mov eax, dword [0x5a8a74]
mov byte [ebx], 1
mov dword [esp + 0x10], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x5a8a54]
and eax, 0x7fffffff
cmp eax, 0xc8
jbe 0x41de5d
lea eax, [esp + 0x48]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemTimeAsFileTime]
mov edx, dword [esp + 0xc]
mov eax, edi
or eax, edx
jne 0x41de45
lea eax, [esp + 0x38]
mov ecx, ebx
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.0041dbc0
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessTimes]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov dword [0x5a8a58], eax
mov eax, dword [esp + 0x28]
mov dword [0x5a8a5c], ecx
mov ecx, dword [esp + 0x2c]
mov dword [0x5a8a98], eax
mov eax, dword [esp + 0x30]
mov dword [0x5a8a9c], ecx
mov ecx, dword [esp + 0x34]
mov dword [0x5a8a60], eax
mov eax, dword [esp + 0x38]
mov dword [0x5a8a64], ecx
mov ecx, dword [esp + 0x3c]
mov dword [0x5a8a78], eax
mov eax, dword [esp + 0x40]
mov dword [0x5a8a7c], ecx
mov ecx, dword [esp + 0x44]
mov dword [0x5a8a68], eax
mov eax, dword [esp + 0x50]
mov dword [0x5a8a6c], ecx
mov ecx, dword [esp + 0x54]
mov dword [0x5a8ab8], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x5a8abc], ecx
mov dword [0x5a8a74], 0
call eax
cmp byte [ebx], 0
mov dword [0x5a8a54], eax
je 0x41de39
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [ebx], 0
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
sub eax, edi
mov dword [esp + 0x18], eax
sbb ecx, edx
or eax, ecx
mov dword [esp + 0x14], ecx
jne 0x41de78
cmp byte [ebx], 0
je 0x41de69
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ax, word [esp + 0x10]
mov byte [ebx], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x38]
mov ecx, ebx
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x30]
push eax
call fcn.0041dbc0
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x60]
push eax
lea eax, [esp + 0x6c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcessTimes]
mov esi, dword [esp + 0x30]
sub esi, dword [0x5a8a78]
mov edi, dword [esp + 0x34]
sbb edi, dword [0x5a8a7c]
sub esi, dword [0x5a8a60]
sbb edi, dword [0x5a8a64]
add esi, dword [esp + 0x38]
mov eax, esi
adc edi, dword [esp + 0x3c]
or eax, edi
je 0x41df0e
mov ecx, dword [0x5a8a98]
sub ecx, dword [esp + 0x28]
mov eax, dword [0x5a8a9c]
sbb eax, dword [esp + 0x2c]
add ecx, esi
push 0
push 0x64
adc eax, edi
push eax
push ecx
call fcn.0053d600
push edi
push esi
push edx
push eax
call fcn.0053d6b0
mov dword [esp + 0xc], eax
jmp 0x41df16
mov dword [esp + 0xc], 0
mov ecx, dword [esp + 0x40]
sub ecx, dword [0x5a8ab8]
mov eax, dword [esp + 0x44]
sbb eax, dword [0x5a8abc]
sub ecx, dword [0x5a8a68]
mov ebx, dword [esp + 0x50]
sbb eax, dword [0x5a8a6c]
add ecx, ebx
mov edi, dword [esp + 0x54]
push 0
push 0x64
adc eax, edi
push eax
push ecx
call fcn.0053d600
push dword [esp + 0x14]
push dword [esp + 0x1c]
push edx
push eax
call fcn.0053d6b0
mov esi, eax
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x28]
mov dword [0x5a8a98], eax
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x4c]
mov dword [0x5a8a9c], eax
mov eax, dword [esp + 0x30]
mov dword [0x5a8a60], eax
mov eax, dword [esp + 0x34]
mov dword [0x5a8a64], eax
mov eax, dword [esp + 0x38]
mov dword [0x5a8a78], eax
mov eax, dword [esp + 0x3c]
mov dword [0x5a8a7c], eax
mov eax, dword [esp + 0x40]
mov dword [0x5a8a68], eax
mov eax, dword [esp + 0x44]
mov dword [0x5a8a6c], eax
mov eax, dword [0x5a8a70]
mov dword [0x5a8a58], ecx
mov ecx, dword [esp + 0xc]
mov dword [0x5a8a5c], edx
mov dword [eax*4 + 0x5a8a80], ecx
lea ecx, [eax + 1]
mov dword [eax*4 + 0x5a8aa0], esi
mov eax, 0x66666667
mov esi, dword [0x5a8a94]
imul ecx
inc esi
mov dword [0x5a8ab8], ebx
sar edx, 1
xor ebx, ebx
mov eax, edx
mov dword [0x5a8abc], edi
shr eax, 0x1f
add eax, edx
mov dword [0x5a8a94], esi
lea eax, [eax + eax*4]
sub ecx, eax
xor eax, eax
mov dword [0x5a8a70], ecx
cmp esi, 5
jle 0x41e01e
mov esi, 5
mov dword [0x5a8a94], esi
jmp 0x41e083
test esi, esi
jle 0x41e083
xor ebx, ebx
xor eax, eax
cmp esi, 8
jb 0x41e083
mov ecx, esi
and ecx, 0x80000007
jns 0x41e03a
dec ecx
or ecx, 0xfffffff8
inc ecx
mov edx, esi
xorps xmm2, xmm2
sub edx, ecx
xorps xmm1, xmm1
movups xmm0, xmmword [eax*4 + 0x5a8aa0]
paddd xmm2, xmm0
movups xmm0, xmmword [eax*4 + 0x5a8ab0]
add eax, 8
paddd xmm1, xmm0
cmp eax, edx
jl 0x41e044
paddd xmm1, xmm2
movaps xmm0, xmm1
psrldq xmm0, 8
paddd xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
paddd xmm1, xmm0
movd ebx, xmm1
xor edx, edx
xor edi, edi
cmp eax, esi
jge 0x41e0c5
mov ecx, esi
sub ecx, eax
cmp ecx, 2
jl 0x41e0b5
lea ecx, [esi - 1]
nop word [eax + eax]
add edx, dword [eax*4 + 0x5a8aa0]
add edi, dword [eax*4 + 0x5a8aa4]
add eax, 2
cmp eax, ecx
jl 0x41e0a0
cmp eax, esi
jge 0x41e0c0
add ebx, dword [eax*4 + 0x5a8aa0]
lea ecx, [edi + edx]
add ebx, ecx
mov eax, ebx
cdq
idiv esi
mov edi, eax
mov eax, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x5a8a74], edi
call eax
mov esi, dword [esp + 0x20]
mov dword [0x5a8a54], eax
cmp byte [esi], 0
je 0x41e0f1
lea ecx, [esi + 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ax, di
mov byte [esi], 0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret