PopTraceThermalRequestPassiveHistogram

void __fastcall PopTraceThermalRequestPassiveHistogram(__int64 a1){
  VOID **v2; 
  _DEVICE_OBJECT *DeviceAttachmentBaseRefWithTag; 
  UINT8 v4; 
  _DEVICE_OBJECT *v5; 
  _QWORD *DeviceNode; 
  VOID **PoolWithTag; 
  UINT8 v8; 
  const WCHAR *v9; 
  char v10; 
  UINT64 BufferSizePointer[2]; 
  _EVENT_DATA_DESCRIPTOR v12; 
  int *v13; 
  __int64 v14; 
  __int64 v15; 
  int v16[2]; 
  char v17[16]; 
  UINT64 *v18; 
  int v19; 
  int v20; 
  _BYTE *v21; 
  int v22; 
  int v23; 
  UINT64 TimeBuckets[12]; 

  BufferSizePointer[0] = 0i64;
  v2 = 0i64;
  DeviceAttachmentBaseRefWithTag = IoGetDeviceAttachmentBaseRefWithTag(
                                     *(_DEVICE_OBJECT **)(*(_QWORD *)(a1 + 32) + 48i64),
                                     0x67446F50ui64);
  v5 = DeviceAttachmentBaseRefWithTag;
  if( DeviceAttachmentBaseRefWithTag )
    DeviceNode = DeviceAttachmentBaseRefWithTag->DeviceObjectExtension->DeviceNode;
  else
    DeviceNode = 0i64;
  if( DeviceNode )
  {
    PoStoreDiagnosticContext(*(_DIAGNOSTIC_CONTEXT **)(a1 + 24), 0i64, BufferSizePointer, v4);
    PoolWithTag = ExAllocatePoolWithTag(1ui64, BufferSizePointer[0], 1346721364i64);
    v2 = PoolWithTag;
    if( PoolWithTag )
    {
      if( PoStoreDiagnosticContext(
             *(_DIAGNOSTIC_CONTEXT **)(a1 + 24),
             (_DIAGNOSTIC_BUFFER *)PoolWithTag,
             BufferSizePointer,
             v8) >= 0 )
      {
        v9 = (const WCHAR *)((char *)v2[2] + (_QWORD)v2);
        PopDiagSnapPassiveHistogram((_POP_THERMAL_TELEMETRY_TRACKER *)(a1 + 40), TimeBuckets);
        if( (v10 || PopThermalTelemetryVerbosity)
          && *(&stru_140C00F40 + 1194) > 5u
          && tlgKeywordOn((__int64)&stru_140C00F40 + 4776, 0x400000000000i64) )
        {
          v16[1] = 0;
          v13 = v16;
          v15 = DeviceNode[17];
          v16[0] = *((unsigned __int16 *)DeviceNode + 64);
          v14 = 2i64;
          tlgCreate1Sz_wchar_t((__int64)v17, v9);
          v20 = 0;
          v23 = 0;
          v21 = PopThermalTrackingThresholds;
          v18 = TimeBuckets;
          v19 = 84;
          v22 = 21;
          tlgWriteTransfer_EtwWriteTransfer(
            (__int64)&stru_140C00F40 + 4776,
            (unsigned __int8 *)byte_140026FF8,
            0i64,
            0i64,
            7u,
            &v12);
        }
      }
    }
  }
  if( v5 )
    ObfDereferenceObjectWithTag(v5, 0x67446F50ui64);
  if( v2 )
    ExFreePoolWithTag(v2, 0x50455654u);
}

Referenced by:

PopCoolingSxTransition
PopCoolingTelemetryWorker
PopDeactiveThermalRequest
PopOrphanCoolingExtension