PopDiagTracePassiveCooling

VOID __stdcall PopDiagTracePassiveCooling(
        _THERMAL_INFORMATION_EX *ThermalInfo,
        _DEVICE_OBJECT *DeviceObject,
        UINT8 PassiveCoolingEngaged,
        INT64 ThrottleDelta,
        _THERMAL_CHANNEL Channel){
  bool v8; 
  _DEVICE_OBJECT *DeviceAttachmentBaseRefWithTag; 
  _DEVICE_OBJECT *v10; 
  _WORD *DeviceNode; 
  unsigned int PassiveTripPoint; 
  unsigned int CurrentTemperature; 
  const _EVENT_DESCRIPTOR *v14; 
  int v15; 
  int v16; 
  __int64 v17; 
  _LARGE_INTEGER LocalTime; 
  _LARGE_INTEGER SystemTime; 
  _EVENT_DATA_DESCRIPTOR UserData; 
  __int64 v21; 
  __int64 v22; 
  _LARGE_INTEGER *p_LocalTime; 
  __int64 v24; 
  int *v25; 
  __int64 v26; 
  __int64 *v27; 
  __int64 v28; 
  __int64 v29; 
  __int64 v30; 
  unsigned int *p_ThermalConstant1; 
  __int64 v32; 
  unsigned int *p_ThermalConstant2; 
  __int64 v34; 
  unsigned int *p_SamplingPeriod; 
  __int64 v36; 
  int *v37; 
  __int64 v38; 
  unsigned int *p_MinimumThrottle; 
  __int64 v40; 
  int v41; 

  v41 = ThrottleDelta;
  LOWORD(v15) = 0;
  LocalTime.QuadPart = 0i64;
  v17 = 0i64;
  LOWORD(v16) = 0;
  if( PopDiagHandleRegistered && (Channel || EtwEventEnabled(PopDiagHandle, &POP_ETW_EVENT_PASSIVE_COOLING_DIAGNOSTIC)) )
  {
    v8 = (unsigned int)Channel <= Operational;
    if( Channel == Operational )
    {
      if( !EtwEventEnabled(PopDiagHandle, &POP_ETW_EVENT_PASSIVE_COOLING_OPERATIONAL) )
        return;
      v8 = (unsigned int)Channel <= Operational;
    }
    if( v8 )
    {
      DeviceAttachmentBaseRefWithTag = IoGetDeviceAttachmentBaseRefWithTag(DeviceObject, 0x67446F50ui64);
      v10 = DeviceAttachmentBaseRefWithTag;
      if( DeviceAttachmentBaseRefWithTag )
        DeviceNode = DeviceAttachmentBaseRefWithTag->DeviceObjectExtension->DeviceNode;
      else
        DeviceNode = 0i64;
      if( DeviceNode )
      {
        LOWORD(v15) = DeviceNode[64] >> 1;
        UserData.Ptr = (unsigned __int64)&v15;
        *(_QWORD *)&UserData.Size = 2i64;
        v21 = *((_QWORD *)DeviceNode + 17);
        v22 = 2 * (unsigned int)(unsigned __int16)v15;
        SystemTime = *(_LARGE_INTEGER *)&KUSER_SHARED_DATA.SystemTime.LowPart;
        ExSystemTimeToLocalTime(&SystemTime, &LocalTime);
        v24 = 8i64;
        p_LocalTime = &LocalTime;
        v27 = &v17;
        v26 = 2i64;
        v28 = 4i64;
        v30 = 4i64;
        LOWORD(v16) = PassiveCoolingEngaged != 0;
        v25 = &v16;
        PassiveTripPoint = ThermalInfo->PassiveTripPoint;
        v32 = 4i64;
        LODWORD(v17) = PassiveTripPoint / 0xA;
        CurrentTemperature = ThermalInfo->CurrentTemperature;
        v34 = 4i64;
        v29 = (__int64)&v17 + 4;
        p_ThermalConstant1 = &ThermalInfo->ThermalConstant1;
        p_ThermalConstant2 = &ThermalInfo->ThermalConstant2;
        p_SamplingPeriod = &ThermalInfo->SamplingPeriod;
        v37 = &v41;
        p_MinimumThrottle = &ThermalInfo->MinimumThrottle;
        HIDWORD(v17) = CurrentTemperature / 0xA;
        v14 = &POP_ETW_EVENT_PASSIVE_COOLING_DIAGNOSTIC;
        v36 = 4i64;
        v38 = 4i64;
        v40 = 4i64;
        if( Channel )
          v14 = &POP_ETW_EVENT_PASSIVE_COOLING_OPERATIONAL;
        EtwWrite(PopDiagHandle, v14, 0, 0xBu, &UserData);
      }
      if( v10 )
        ObfDereferenceObjectWithTag(v10, 0x67446F50ui64);
    }
  }
}

Referenced by:

PopThermalWorker