PopRundownThermalRequests

VOID __stdcall PopRundownThermalRequests(){
  __int64 i; 
  __int64 *j; 

  PopAcquireRwLockExclusive(&PopCoolingExtensionLock);
  for( i = PopCoolingExtensionList; (__int64 *)i != &PopCoolingExtensionList; i = *(_QWORD *)i )
  {
    if( *(_BYTE *)(i + 64) )
    {
      PopAcquireRwLockExclusive((_POP_RW_LOCK *)(i + 32));
      PopDiagTraceCoolingExtension(i, (const _EVENT_DESCRIPTOR *)POP_ETW_EVENT_COOLING_EXTENSION_RUNDOWN);
      for( j = *(__int64 **)(i + 16); j != (__int64 *)(i + 16); j = (__int64 *)*j )
      {
        if( *((_BYTE *)j + 18) )
          PopDiagTraceThermalRequest(j, POP_ETW_EVENT_THERMAL_REQUEST_RUNDOWN);
      }
      PopReleaseRwLock((_POP_RW_LOCK *)(i + 32));
    }
  }
  PopReleaseRwLock(&PopCoolingExtensionLock);
}

Referenced by:

PopDiagTraceControlCallback