PpmEventThermalCapChange

VOID __stdcall PpmEventThermalCapChange(_KPRCB *Prcb, UINT64 Cap){
  bool v2; 
  const _EVENT_DESCRIPTOR *v4; 
  const _EVENT_DESCRIPTOR *v5; 
  REGHANDLE v6; 
  INT64 v7; 
  int v8; 
  __int128 DataPtr; 
  __int128 *p_DataPtr; 
  int v11; 
  int v12; 
  INT64 UserData[2]; 
  int *v14; 
  int v15; 
  int v16; 

  LODWORD(v7) = 0;
  v2 = BYTE4(Prcb->PriorityState) == 0;
  v8 = Cap;
  DataPtr = 0i64;
  if( !v2 )
  {
    *((_QWORD *)&DataPtr + 1) = *(_QWORD *)&Prcb[-1].StaticAffinity.KeFlushTbDeepIdleAffinity.Count;
    LODWORD(DataPtr) = Cap;
    if( (xmmword_140CFB490 & 0x8000) != 0 )
    {
      v12 = 0;
      p_DataPtr = &DataPtr;
      v11 = 16;
      EtwTraceKernelEvent((__int64)&p_DataPtr, 1u, 0x80008000, 0x1236u, 0x401802u);
    }
    if( WmiThermalEventEnabled )
      PpmFireWmiEvent(&Prcb[-1].PrcbPad141[503], (_GUID *)&PPM_THERMALCONSTRAINT_GUID, 0x10ui64, &DataPtr);
  }
  LODWORD(v4) = PpmEventGetEventDescriptorAndProcessorId(
                  (INT64)Prcb,
                  (INT64)&PPM_ETW_THERMAL_CAP_CHANGE,
                  (INT64)&PPM_ETW_THERMAL_CAP_CHANGE_HV,
                  (INT64)&v7,
                  (INT64)UserData);
  v5 = v4;
  if( PpmEtwRegistered )
  {
    v6 = PpmEtwHandle;
    if( EtwEventEnabled(PpmEtwHandle, v4) )
    {
      v16 = 0;
      v14 = &v8;
      v15 = 4;
      EtwWriteEx(v6, v5, 0i64, 0, 0, 0, 2u, (PEVENT_DATA_DESCRIPTOR)UserData);
    }
  }
}

Referenced by:

PpmRegisterPerfCap