PopFxPauseDeviceAccounting

VOID __stdcall PopFxPauseDeviceAccounting(){
  _ETHREAD *CurrentThread; 
  UINT64 v1; 
  UINT64 *i; 
  unsigned __int64 v3; 
  _QWORD *v4; 
  unsigned int j; 
  UINT64 *v6; 
  unsigned __int64 v7; 
  _QWORD *v8; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 489, 0i64);
  v1 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  for( i = (UINT64 *)*(&stru_140C23628 + 485); i != (UINT64 *)((char *)&stru_140C23628 + 3880); i = (UINT64 *)*i )
  {
    if( i[6] )
    {
      if( *(&stru_140C23628 + 1058) < 0 )
      {
        v3 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(i + 75);
        PopFxUpdateAccountingActiveTime((INT64)(i + 75), v1, 0x47868C00ui64);
        PopFxMergeActiveTimeAccounting(v4);
        KxReleaseSpinLock(i + 75);
        __writecr8(v3);
      }
      for( j = 0; j < *((_DWORD *)i + 207); ++j )
      {
        v6 = (UINT64 *)(*(_QWORD *)(i[104] + 8i64 * j) + 200i64);
        v7 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(v6);
        PopFxUpdateAccountingActiveTime((INT64)v6, v1, 0x47868C00ui64);
        PopFxMergeActiveTimeAccounting(v8);
        KxReleaseSpinLock(v6);
        __writecr8(v7);
      }
    }
  }
  PopFxSetGlobalDeviceAccountingEnabled(0);
  *(&stru_140C23628 + 4236) = 1;
  if( _InterlockedCompareExchange64((_QWORD *)&stru_140C23628 + 489, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((_EX_PUSH_LOCK *)&stru_140C23628 + 489);
  KeAbPostRelease((char *)&stru_140C23628 + 3912);
  KeLeaveCriticalRegionThread(KeGetCurrentThread());
}

Referenced by:

PdcPoCurrentPdcPhase
PopPdcIdleResiliencyCallback