PopThermalWriteShutdownToRegistry

INT64 __stdcall PopThermalWriteShutdownToRegistry(){
  void *v0; 
  __int64 v1; 
  WCHAR v2; 
  void *v3; 
  __int64 v4; 
  INT64 result; 
  WCHAR v6; 
  WCHAR v7; 
  WCHAR v8; 
  UINT64 DataSize; 
  UINT64 DataSizea; 
  struct _UNICODE_STRING DestinationString; 
  struct _UNICODE_STRING ValueName; 
  UNICODE_STRING v13; 
  int Data; 
  HANDLE KeyHandle; 
  KeyHandle = 0i64;
  v3 = v0;
  v4 = v1;
  DestinationString = 0i64;
  ValueName = 0i64;
  v13 = 0i64;
  result = PopOpenThermalLoggingKey(0, &KeyHandle, v2);
  if( (int)result >= 0 )
  {
    RtlInitUnicodeString(&DestinationString, L"ShutdownOccurred", v6);
    RtlInitUnicodeString(&ValueName, L"ShutdownSource", v7);
    RtlInitUnicodeString(&v13, L"ShutdownTemperature", v8);
    LODWORD(DataSize) = 4;
    Data = 1;
    LODWORD(result) = ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 4ui64, &Data, DataSize);
    if( !PopThermalCriticalShutdownReported )
    {
      if( v4 )
      {
        LODWORD(DataSizea) = *(unsigned __int16 *)(v4 + 2);
        LODWORD(result) = ZwSetValueKey(KeyHandle, &ValueName, 0i64, 1ui64, *(PVOID *)(v4 + 8), DataSizea);
      }
      if( v3 )
      {
        LODWORD(DataSizea) = 4;
        LODWORD(result) = ZwSetValueKey(KeyHandle, &v13, 0i64, 4ui64, v3, DataSizea);
      }
    }
    PopThermalCriticalShutdownReported = 1;
    if( KeyHandle )
      LODWORD(result) = ZwClose(KeyHandle);
  }
  return result;
}

Referenced by:

PopCheckAndHandleThermalConditions
PopThermalProcessUsermodeEvent