PopFxResidentTimeoutRoutine

VOID __stdcall PopFxResidentTimeoutRoutine(VOID *Parameter){
  _ETHREAD *CurrentThread; 
  __int64 v2; 
  POHANDLE v3; 
  __int64 v4; 
  unsigned int i; 
  __int64 v6; 
  INT64 CurrentQpc; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 489, 0i64);
  if( (_UNKNOWN *)*(&stru_140C23628 + 485) != (_UNKNOWN *)((char *)&stru_140C23628 + 3880) )
  {
    LODWORD(v2) = RtlGetInterruptTimePrecise(&CurrentQpc);
    v3 = (POHANDLE)*(&stru_140C23628 + 485);
    v4 = v2;
    while( v3 != (POHANDLE)((char *)&stru_140C23628 + 3880) )
    {
      for( i = 0; i < *((_DWORD *)v3 + 207); ++i )
      {
        v6 = *(_QWORD *)(*((_QWORD *)v3 + 104) + 8i64 * i);
        if( *(int *)(v6 + 96) > 0
          && v4 - *(_QWORD *)(v6 + 144) >= (unsigned __int64)(unsigned int)PopFxActiveIdleThreshold )
        {
          _InterlockedAdd((volatile signed __int32 *)(v6 + 96), 0xFFFFFFFF);
          _InterlockedAdd((_DWORD *)&stru_140C23628 + 990, 0xFFFFFFFF);
          PopFxIdleComponent((POHANDLE *)v3, i, 1ui64, 0i64);
        }
      }
      v3 = *(POHANDLE *)v3;
    }
  }
  if( _InterlockedCompareExchange64((_QWORD *)&stru_140C23628 + 489, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((_EX_PUSH_LOCK *)&stru_140C23628 + 489);
  KeAbPostRelease((char *)&stru_140C23628 + 3912);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
  PopFxArmResidentTimer(1u);
}

Referenced by:

No references.