PopFxResumeDeviceAccounting

VOID __stdcall PopFxResumeDeviceAccounting(){
  _ETHREAD *CurrentThread; 
  UINT64 v1; 
  UINT64 *i; 
  unsigned __int64 v3; 
  unsigned int j; 
  __int64 v5; 
  unsigned __int64 v6; 

  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);
        memset(i + 91, 0i64, 0x60u);
        if( *((_BYTE *)i + 608) )
          i[78] = v1;
        KxReleaseSpinLock(i + 75);
        __writecr8(v3);
      }
      for( j = 0; j < *((_DWORD *)i + 207); ++j )
      {
        v5 = *(_QWORD *)(i[104] + 8i64 * j);
        v6 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)(v5 + 200));
        memset((VOID *)(v5 + 328), 0i64, 0x60u);
        if( *(_BYTE *)(v5 + 208) )
          *(_QWORD *)(v5 + 224) = v1;
        KxReleaseSpinLock((UINT64 *)(v5 + 200));
        __writecr8(v6);
      }
    }
  }
  PopFxSetGlobalDeviceAccountingEnabled(1);
  *(&stru_140C23628 + 4236) = 0;
  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