CmpCompleteLazyWrite
INT64 __fastcall CmpCompleteLazyWrite(KTIMER *Timer, INT64 *a2){
UINT64 *p_QuadPart;
unsigned __int64 v5;
__int64 v6;
INT64 v7;
unsigned int v8;
INT64 result;
UINT64 UnbiasedInterruptTime;
UINT64 v11;
unsigned __int64 v12;
p_QuadPart = &Timer[2].DueTime.QuadPart;
v5 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(&Timer[2].DueTime.QuadPart);
if( !a2 && ((__int64)Timer[2].TimerListEntry.Blink & 7) != 3 )
{
v6 = 0i64;
goto LABEL_6;
}
v6 = 1i64;
if( a2 )
{
v7 = *a2;
}
else
{
v7 = 20000000i64;
v8 = 1000;
UnbiasedInterruptTime = KiQueryUnbiasedInterruptTime(1u);
if( UnbiasedInterruptTime >= v11 )
goto LABEL_5;
v12 = v11 - UnbiasedInterruptTime;
if( v12 <= 0x1312D00 )
goto LABEL_5;
v7 = v12;
}
v8 = *(_DWORD *)&Timer[2].Processor;
LABEL_5:
KeSetCoalescableTimer((INT64)Timer, -v7, 0i64, v8, (INT64)&Timer[1]);
LABEL_6:
Timer[2].TimerListEntry.Blink = (_LIST_ENTRY *)v6;
KxReleaseSpinLock(p_QuadPart);
result = (unsigned int)KiIrqlFlags;
__writecr8(v5);
return result;
}Referenced by:
CmpLazyWriteWorker