PopDeepSleepEvaluateCallback

VOID __stdcall PopDeepSleepEvaluateCallback(VOID *Context){
  unsigned __int8 i; 
  UINT64 v2; 
  unsigned __int8 v3; 
  bool v4; 

  for( i = KeAcquireSpinLockRaiseToDpc((UINT64 *)&PopIrpWorkerControlEvent + 27);
        ;
        i = KeAcquireSpinLockRaiseToDpc((UINT64 *)&PopIrpWorkerControlEvent + 27) )
  {
    v3 = i;
    LOBYTE(v2) = -PopDeepSleepEnforced;
    v4 = *(&PopIrpWorkerControlEvent + 52) == 0;
    if( *(&PopIrpWorkerControlEvent + 193) == (*(&PopIrpWorkerControlEvent + 52) == 0) )
      break;
    if( *(&PopIrpWorkerControlEvent + 52) )
      PopDiagTraceIdleResiliencyEnd(v2);
    else
      PopDiagTraceIdleResiliencyStart(v2, (unsigned int)(PopDeepSleepEnforced != 0) + 2);
    *(&PopIrpWorkerControlEvent + 193) = v4;
    KxReleaseSpinLock((UINT64 *)&PopIrpWorkerControlEvent + 27);
    __writecr8(v3);
    PpmAcquireLock((_PPM_LOCK *)((char *)&stru_140C23628 + 4728));
    PoFxSendSystemLatencyUpdate();
    PpmReleaseLock((INT64 *)&stru_140C23628 + 591);
  }
  *(&PopIrpWorkerControlEvent + 144) = 0;
  KxReleaseSpinLock((UINT64 *)&PopIrpWorkerControlEvent + 27);
  __writecr8(v3);
}

Referenced by:

No references.