PopDiagTraceFxRundown

VOID __stdcall PopDiagTraceFxRundown(){
  _ETHREAD *CurrentThread; 
  UINT64 *i; 
  _POP_FX_DEVICE *j; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 497, 0i64);
  for( i = (UINT64 *)*(&stru_140C23628 + 493); i != (UINT64 *)((char *)&stru_140C23628 + 3944); i = (UINT64 *)*i )
    PopDiagTraceFxPluginRegistration(i, i[3], 1u);
  if( _InterlockedCompareExchange64((_QWORD *)&stru_140C23628 + 497, 0i64, 17i64) != 17 )
    ExfReleasePushLockShared((_EX_PUSH_LOCK *)&stru_140C23628 + 497);
  KeAbPostRelease((char *)&stru_140C23628 + 3976);
  ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 489, 0i64);
  for( j = (_POP_FX_DEVICE *)*(&stru_140C23628 + 485);
        j != (_POP_FX_DEVICE *)((char *)&stru_140C23628 + 3880);
        j = *(_POP_FX_DEVICE **)j )
  {
    if( *((_QWORD *)j + 6) )
    {
      PopFxTraceDeviceRegistration(j, 1u);
      PopDiagTraceDeviceVerboseRundown(j);
    }
  }
  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:

PopDiagTraceControlCallback