CmpUpdateReorganizeRegistryValues

VOID __stdcall CmpUpdateReorganizeRegistryValues(){
  INT64 v0; 
  __int64 v1; 
  _UNICODE_STRING *Class; 
  UINT64 CreateOptions; 
  UINT64 CreateOptionsa; 
  UINT64 CreateOptionsb; 
  UINT64 CreateOptionsc; 
  VOID *KeyHandle; 
  _UNICODE_STRING DestinationString; 
  _LARGE_INTEGER LocalTime; 
  _TIME_FIELDS TimeFields; 
  _OBJECT_ATTRIBUTES ObjectAttributes; 
  __int16 Dst[16]; 

  *(&ObjectAttributes.Length + 1) = 0;
  *(&ObjectAttributes.Attributes + 1) = 0;
  DestinationString = 0i64;
  KeyHandle = 0i64;
  TimeFields = 0i64;
  LocalTime.QuadPart = 0i64;
  if( *(&stru_140CF2E80 + 935) )
  {
    if( CmpAccessBitForPhase == 2 )
    {
      RtlInitUnicodeString(
        &DestinationString,
        L"\\registry\\machine\\system\\CurrentControlSet\\Control\\Session Manager\\Configuration Manager\\Defrag");
      LODWORD(CreateOptions) = 0;
      ObjectAttributes.Length = 48;
      ObjectAttributes.RootDirectory = 0i64;
      ObjectAttributes.Attributes = 704;
      ObjectAttributes.ObjectName = &DestinationString;
      *(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
      if( ZwCreateKey(&KeyHandle, 2ui64, &ObjectAttributes, 0i64, 0i64, CreateOptions, 0i64) >= 0 )
      {
        ExSystemTimeToLocalTime(&CmpReorganizeLastRun, &LocalTime);
        RtlTimeToTimeFields((INT64 *)&LocalTime, (WORD *)&TimeFields, v0);
        LODWORD(CreateOptionsa) = TimeFields.Year % 10000;
        LODWORD(Class) = TimeFields.Day;
        v1 = -1i64;
        if( (unsigned int)swprintf_s(
                             (WCHAR *)Dst,
                             0x10ui64,
                             (WCHAR *)L"%02d:%02d:%04d",
                             (unsigned int)TimeFields.Month,
                             Class,
                             CreateOptionsa) != -1 )
        {
          RtlInitUnicodeString(&DestinationString, L"LastRun");
          do
            ++v1;
          while( Dst[v1] );
          LODWORD(CreateOptionsb) = 2 * v1;
          if( ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 1ui64, Dst, CreateOptionsb) >= 0 )
          {
            RtlInitUnicodeString(&DestinationString, L"TotalBytesSaved");
            LODWORD(CreateOptionsc) = 8;
            ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 0xBui64, (char *)&stru_140CF2E80 + 7480, CreateOptionsc);
          }
        }
        ZwClose((_HANDLE)KeyHandle);
      }
    }
  }
}

Referenced by:

CmpReorganizeHive
CmpUpdatePhaseAccessBit