PopPepIdleTimeoutRoutine

VOID __stdcall PopPepIdleTimeoutRoutine(VOID *Parameter){
  __int64 v1; 
  _ETHREAD *CurrentThread; 
  __int64 i; 
  unsigned __int64 v4; 
  unsigned int ready; 
  unsigned int j; 
  __int64 v7; 
  char v8; 
  __int64 v9; 
  unsigned __int64 v10; 
  int ResidencyIdleState; 
  _DWORD *v12; 
  unsigned int v13; 
  INT64 v14; 
  INT64 v15; 

  v1 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&PopIrpWorkerControlEvent + 356, 0i64);
  for( i = *(&PopIrpWorkerControlEvent + 336);
        (_UNKNOWN *)i != (_UNKNOWN *)((char *)&PopIrpWorkerControlEvent + 2688);
        i = *(_QWORD *)i )
  {
    if( (*(_BYTE *)(i + 16) & 1) == 0 )
    {
      v4 = (unsigned __int8)ExAcquireSpinLockExclusive((INT64 *)(i + 64));
      if( *(_BYTE *)(i + 136) )
      {
        ready = PopPepCountReadyActivities((unsigned int *)i, 0i64, 3);
        for( j = 0; j < *(_DWORD *)(i + 180); ++j )
        {
          v7 = 200i64 * j + i + 184;
          if( *(_DWORD *)(v7 + 176) == *(_DWORD *)(v7 + 188) - 1
            || **(_DWORD **)(v7 + 72)
            || (v8 = 1, **(_DWORD **)(v7 + 80)) )
          {
            v8 = 0;
          }
          if( v8 )
          {
            v9 = *(_QWORD *)(v7 + 136);
            if( v1 > v9 )
            {
              v10 = v1 - v9;
              if( (unsigned __int64)(v1 - v9) > *(_QWORD *)(v7 + 120) )
              {
                *(_QWORD *)(v7 + 120) = v10;
                ResidencyIdleState = PopPepComponentGetResidencyIdleState(v7, v10);
                if( v12[40] != ResidencyIdleState )
                {
                  v12[40] = ResidencyIdleState;
                  PopPepUpdateIdleState(i, v12, 1);
                }
              }
            }
          }
        }
        PopPepPromoteActivities(i, 0i64, 3);
        v13 = PopPepCountReadyActivities((unsigned int *)i, 0i64, 3);
        PopPepRequestWork(ready, v13, v14, v15);
        ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(i + 64));
      }
      else
      {
        ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)(i + 64));
      }
      __writecr8(v4);
    }
  }
  if( _InterlockedCompareExchange64((_QWORD *)&PopIrpWorkerControlEvent + 356, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((_EX_PUSH_LOCK *)&PopIrpWorkerControlEvent + 356);
  KeAbPostRelease((char *)&PopIrpWorkerControlEvent + 2848);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  PopPepArmIdleTimer(1u);
}

Referenced by:

No references.