ExpRefreshSystemTime

VOID __stdcall ExpRefreshSystemTime(){
  __int64 v0; 
  char v1; 
  int v2; 
  LARGE_INTEGER v3; 
  struct _TIME_FIELDS TimeFields; 
  union _LARGE_INTEGER SystemTime; 
  LARGE_INTEGER NewTime; 
  union _LARGE_INTEGER Time; 
  SystemTime.QuadPart = 0i64;
  NewTime.QuadPart = 0i64;
  Time.QuadPart = 0i64;
  TimeFields = 0i64;
  v0 = PsGetCurrentServerSiloGlobals()[133];
  ExAcquireTimeRefreshLock(1u);
  v1 = ExpSystemIsInCmosMode;
  if( (unsigned __int8)HalQueryRealTimeClock(&TimeFields) )
  {
    if( RtlTimeFieldsToTime(&TimeFields, &Time) )
    {
      v2 = *(_DWORD *)(v0 + 436);
      if( (unsigned __int8)ExpRefreshTimeZoneInformation() )
      {
        if( v2 != *(_DWORD *)(v0 + 436) )
        {
          v3 = *(LARGE_INTEGER *)&KUSER_SHARED_DATA.SystemTime.LowPart;
          SystemTime = *(union _LARGE_INTEGER *)&KUSER_SHARED_DATA.SystemTime.LowPart;
          if( !ExpRealTimeIsUniversal )
          {
            if( v1 )
            {
              ExLocalTimeToSystemTime(&Time, &NewTime);
              KeSetSystemTime(&NewTime, &SystemTime, 0i64);
              goto LABEL_9;
            }
            ExSystemTimeToLocalTime(&SystemTime, &Time);
            RtlTimeToTimeFields(&Time, &TimeFields);
            HalSetRealTimeClock(&TimeFields);
            v3 = SystemTime;
          }
          NewTime = v3;
LABEL_9:
          PoNotifySystemTimeSet(&NewTime, &SystemTime, 3ui64);
        }
      }
    }
  }
  ExReleaseResourceLite(&ExpTimeRefreshLock);
  KeLeaveCriticalRegion();
}

Referenced by:

CmCompleteRegistryInitialization
CmpFinishSystemHivesLoad