PopThermalPollingPowerSettingCallback

NTSTATUS __stdcall PopThermalPollingPowerSettingCallback(){
  char v0; 
  _ETHREAD *CurrentThread; 
  _POP_RW_LOCK *i; 
  void *v4; 
  void *v5; 
  void *v6; 

  PopAcquireRwLockExclusive(&PopThermalLock);
  v0 = !PopPdcIdleResiliency || *(&stru_140C23628 + 441) != 1;
  if( *(&stru_140C23628 + 579) && PopThermalPollingWakesAllowed != v0 )
  {
    PopThermalPollingWakesAllowed = v0;
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&PopPolicyDeviceLock, 0i64);
    for( i = (_POP_RW_LOCK *)*(&stru_140C23628 + 181);
          i != (_POP_RW_LOCK *)((char *)&stru_140C23628 + 1448);
          i = (_POP_RW_LOCK *)i->Lock._bf_0 )
    {
      PopAcquireRwLockExclusive(i + 27);
      if( LODWORD(i[14].Thread) || (i[4].Lock._bf_0 & 0x100) != 0 && LODWORD(i[6].Thread) )
        IoCancelIrp((_KDPC *)i[3].Thread, v4, v5, v6);
      PopReleaseRwLock(i + 27);
    }
    PopReleaseRwLock((_POP_RW_LOCK *)&PopPolicyDeviceLock);
  }
  PopReleaseRwLock(&PopThermalLock);
  return 0;
}

Referenced by:

No references.