ObReferenceObjectSafeWithTag

UINT8 __stdcall ObReferenceObjectSafeWithTag(PVOID Object, UINT64 Tag){
  signed __int64 *v2; 
  signed __int64 v3; 
  signed __int64 v4; 
  v2 = (signed __int64 *)((char *)Object - 48);
  _m_prefetchw(v2);
  v3 = *v2;
  if( !*v2 )
    return 0;
  while( 1 )
  {
    v4 = v3;
    v3 = _InterlockedCompareExchange64(v2, v3 + 1, v3);
    if( v4 == v3 )
      break;
    if( !v3 )
      return 0;
  }
  if( ObpTraceFlags )
    ObpPushStackInfo((INT64)v2, 1, 1i64, (unsigned int)Tag);
  return 1;
}

Referenced by:

AlpcpLookasidePacketCallbackRoutine
ExpGetNextCallback
ExpGetProcessInformation
HalpDmaFindAdapterByDeviceObject
IoNotifyQuotaState
KiAbProcessContextSwitch
KiAbProcessThreadLocks
KiMonitorCacheErrata
MiCapturePfnVm
MiEmptyPageAccessLog
MiSelectSessionAttachProcess
MiViewMayContainPage
PopEtGetNextEnergyTracker
PsGetNextPartitionUnsafe
PsGetNextProcess
PsGetNextProcessThread
PsGetPreviousProcess
PspAddProcessToWorkingSetChangeList
PspEnforceLimitsProcessCallback
PspEnumJobsAndProcessesInJobHierarchy
PspExitThread
PspGetNextChildJob
PspGetNextJob
PspGetPreviousProcessThread
PspJobCycleTimeNotificationDpcRoutine
PspQueryProcessInterferenceCountCallback
SepCleanupLUIDDeviceMapDirectory