PopArmIdlePhaseWatchdog

VOID __stdcall PopArmIdlePhaseWatchdog(INT64 a1){
  __int64 v1; 
  __int64 v2; 
  int v3; 
  int v4; 
  UINT64 v5; 
  __int64 InputBuffer[14]; 
  int v7; 
  __int64 v8; 

  v8 = 0i64;
  v7 = 0;
  v1 = *(&PopIrpWorkerControlEvent + 244);
  v2 = (int)a1;
  if( *(&PopIrpWorkerControlEvent + 244) && PopPdcAreAllPhasesDisengaged() )
  {
    PopSnapSystemIdleContext(&v8, &v7);
    PopAcquireRwLockExclusive((_POP_RW_LOCK *)((char *)&PopIrpWorkerControlEvent + 1960));
    v3 = v7;
    *(&PopIrpWorkerControlEvent + 247) = v8;
    *(&PopIrpWorkerControlEvent + 496) = v7;
    PopReleaseRwLock((_POP_RW_LOCK *)((char *)&PopIrpWorkerControlEvent + 1960));
    if( (_DWORD)v2 == 12 || (unsigned int)(v2 - 5) <= 1 )
      v4 = PopIdleScanInterval + v3;
    else
      v4 = PopPdcIdlePhaseDefaultWatchdogTimeoutSeconds;
    memset(InputBuffer, 0i64, 0x60u);
    LODWORD(v5) = 0;
    LODWORD(InputBuffer[0]) = 21;
    InputBuffer[1] = v1;
    LODWORD(InputBuffer[3]) = 160;
    InputBuffer[4] = 2050i64;
    LODWORD(InputBuffer[2]) = 1000 * v4;
    InputBuffer[6] = (unsigned int)PopEventProcessorEnabled;
    InputBuffer[7] = (__int64)&PopIrpWorkerControlEvent + 1952;
    InputBuffer[10] = (__int64)InputBuffer;
    InputBuffer[9] = (__int64)PopIdlePhaseWatchdogCallback;
    InputBuffer[5] = v2;
    ZwPowerInformation(PowerInformationInternal, InputBuffer, 0x60ui64, 0i64, v5);
  }
}

Referenced by:

PopProcessSessionDisplayStateChange