PopThermalWriteShutdownToRegistry

VOID __stdcall PopThermalWriteShutdownToRegistry(){
  VOID *v0; 
  __int64 v1; 
  WCHAR v2; 
  VOID *v3; 
  __int64 v4; 
  UINT64 DataSize; 
  UINT64 DataSizea; 
  _UNICODE_STRING DestinationString; 
  _UNICODE_STRING ValueName; 
  _UNICODE_STRING v9; 
  int Data; 
  VOID *KeyHandle; 

  KeyHandle = 0i64;
  v3 = v0;
  v4 = v1;
  DestinationString = 0i64;
  ValueName = 0i64;
  v9 = 0i64;
  if( (int)PopOpenThermalLoggingKey(0, &KeyHandle, v2) >= 0 )
  {
    RtlInitUnicodeString(&DestinationString, L"ShutdownOccurred");
    RtlInitUnicodeString(&ValueName, L"ShutdownSource");
    RtlInitUnicodeString(&v9, L"ShutdownTemperature");
    LODWORD(DataSize) = 4;
    Data = 1;
    ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 4ui64, &Data, DataSize);
    if( !PopThermalCriticalShutdownReported )
    {
      if( v4 )
      {
        LODWORD(DataSizea) = *(unsigned __int16 *)(v4 + 2);
        ZwSetValueKey(KeyHandle, &ValueName, 0i64, 1ui64, *(VOID **)(v4 + 8), DataSizea);
      }
      if( v3 )
      {
        LODWORD(DataSizea) = 4;
        ZwSetValueKey(KeyHandle, &v9, 0i64, 4ui64, v3, DataSizea);
      }
    }
    PopThermalCriticalShutdownReported = 1;
    if( KeyHandle )
      ZwClose((_HANDLE)KeyHandle);
  }
}

Referenced by:

PopCheckAndHandleThermalConditions
PopThermalProcessUsermodeEvent