KiUpdateSystemTime

UINT64 __fastcall KiUpdateSystemTime(INT64 a1, INT64 a2, CHAR a3){
  LARGE_INTEGER PerformanceCounter; 
  union _LARGE_INTEGER v7; 
  UINT64 result; 
  __int16 v9; 
  _disable();
  RtlWriteAcquireTickLock((INT64 *)&KUSER_SHARED_DATA.TimeUpdateLock);
  PerformanceCounter = KeQueryPerformanceCounter(0i64);
  v7.QuadPart = KiComputeNewSystemTime(PerformanceCounter.QuadPart);
  if( a1 )
  {
    *(_QWORD *)KiSystemTimeErrorAccumulator = 0i64;
    v7.QuadPart = a1 + *(_QWORD *)&KUSER_SHARED_DATA.SystemTime.LowPart;
  }
  KUSER_SHARED_DATA.BaselineSystemTimeQpc = PerformanceCounter.QuadPart;
  KUSER_SHARED_DATA.SystemTime.High2Time = v7.HighPart;
  *(union _LARGE_INTEGER *)&KUSER_SHARED_DATA.SystemTime.LowPart = v7;
  if( a2 )
  {
    KUSER_SHARED_DATA.QpcSystemTimeIncrement = *(_QWORD *)a2;
    KUSER_SHARED_DATA.QpcSystemTimeIncrementShift = *(_BYTE *)(a2 + 8);
  }
  result = ++KUSER_SHARED_DATA.TimeUpdateLock;
  if( (a3 & 1) == 0 )
  {
    if( (a3 & 4) != 0 )
    {
      KeBootTimeBias = 0i64;
      KeBootTime = v7;
    }
    else
    {
      KeBootTime.QuadPart += a1;
      KeBootTimeBias += a1;
    }
  }
  if( (v9 & 0x200) != 0 )
    _enable();
  return result;
}

Referenced by:

KeSetTimeAdjustment
KiCalibrateTimeAdjustment
KiSetSystemTimeDpc