PopCoolingTelemetryWorker

VOID __stdcall PopCoolingTelemetryWorker(){
  _POP_COOLING_EXTENSION *i; 
  INT64 v1; 
  INT64 j; 
  PopAcquireRwLockExclusive(&PopCoolingExtensionLock);
  for( i = PopCoolingExtensionList;
        i != (_POP_COOLING_EXTENSION *)&PopCoolingExtensionList;
        i = (_POP_COOLING_EXTENSION *)i->Link.Flink )
  {
    if( i->Enabled )
    {
      PopAcquireRwLockExclusive(&i->Lock);
      for( j = (INT64)i->RequestListHead.Flink; (_LIST_ENTRY *)j != &i->RequestListHead; j = *(_QWORD *)j )
      {
        if( *(_BYTE *)(j + 18) )
        {
          if( i->Interface.PassiveCooling )
          {
            PopThermalUpdatePassiveTimeTracking((_POP_THERMAL_TELEMETRY_TRACKER *)(j + 40), *(_BYTE *)(j + 16));
            PopTraceThermalRequestPassiveHistogram(j);
          }
          if( i->Interface.ActiveCooling )
          {
            LOBYTE(v1) = *(_BYTE *)(j + 17) == 0;
            PopThermalUpdateActiveTimeTracking(j + 40, v1);
            PopTraceThermalRequestActiveActivity(j);
          }
        }
      }
      PopReleaseRwLock((UINT64)&i->Lock);
    }
  }
  PopReleaseRwLock((UINT64)&PopCoolingExtensionLock);
}

Referenced by:

PopThermalTelemetryWorker