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