ExReferenceCallBackBlock

_EX_RUNDOWN_REF *__fastcall ExReferenceCallBackBlock(INT64 *a1){
  signed __int64 v2; 
  signed __int64 v4; 
  _EX_RUNDOWN_REF *v5; 
  signed __int64 v6; 
  signed __int64 v7; 
  signed __int64 v8; 
  unsigned __int64 v9; 
  signed __int64 Count; 
  bool v11; 
  signed __int64 v12; 
  unsigned __int64 v13; 

  _m_prefetchw(a1);
  v2 = *a1;
  if( (*a1 & 0xF) != 0 )
  {
    do
    {
      v6 = _InterlockedCompareExchange64(a1, v2 - 1, v2);
      if( v2 == v6 )
        break;
      v2 = v6;
    }
    while( (v6 & 0xF) != 0 );
  }
  if( !v2 )
    return 0i64;
  v4 = v2 & 0xF;
  if( (v2 & 0xF) != 0 )
  {
    v5 = (_EX_RUNDOWN_REF *)(v2 & 0xFFFFFFFFFFFFFFF0ui64);
    if( v4 == 1 && ExAcquireRundownProtectionEx((INT64 *)v5, 15i64) )
    {
      _m_prefetchw(a1);
      v7 = *a1;
      while( (v7 & 0xF) == 0 )
      {
        if( v5 != (_EX_RUNDOWN_REF *)(v7 & 0xFFFFFFFFFFFFFFF0ui64) )
          break;
        v8 = v7;
        v7 = _InterlockedCompareExchange64(a1, v7 + 15, v7);
        if( v8 == v7 )
          return v5;
      }
      _m_prefetchw(v5);
      Count = v5->Count;
      if( (v5->Count & 1) != 0 )
      {
LABEL_24:
        v13 = Count & 0xFFFFFFFFFFFFFFFEui64;
        if( _InterlockedExchangeAdd64((volatile signed __int64 *)v13, 0xFFFFFFFFFFFFFFF1ui64) == 15
          && !_interlockedbittestandreset((volatile signed __int32 *)(v13 + 32), 0) )
        {
          KeSetEvent((PRKEVENT)(v13 + 8), 0, 0);
        }
      }
      else
      {
        while( 1 )
        {
          v12 = _InterlockedCompareExchange64((volatile signed __int64 *)v5, Count - 30, Count);
          v11 = Count == v12;
          Count = v12;
          if( v11 )
            break;
          if( (v12 & 1) != 0 )
            goto LABEL_24;
        }
      }
    }
  }
  else
  {
    v9 = (unsigned __int8)ExAcquireSpinLockShared((INT64 *)&ExBootDevicesRemovedEvent + 7);
    v5 = (_EX_RUNDOWN_REF *)(*a1 & 0xFFFFFFFFFFFFFFF0ui64);
    if( v5 && !ExAcquireRundownProtection((_EX_RUNDOWN_REF *)(*a1 & 0xFFFFFFFFFFFFFFF0ui64)) )
      v5 = 0i64;
    ExReleaseSpinLockSharedFromDpcLevel((PEX_SPIN_LOCK)&ExBootDevicesRemovedEvent + 14);
    __writecr8(v9);
    if( !v5 )
      return 0i64;
  }
  return v5;
}

Referenced by:

DbgkLkmdRegisterCallback
DbgkLkmdUnregisterCallback
DbgkpLkmdFireCallbacks
ExCallCallBack
ExCallSessionCallBack
IoBoostThreadIoPriority
IoUnregisterPriorityCallback
KeDeregisterBoundCallback
KiEnumerateCallback
KiHandleBound
PoIssueCoalescingNotification
PoUnregisterCoalescingCallback
PsCallImageNotifyRoutines
PsInvokeWin32Callout
PsRemoveCreateThreadNotifyRoutine
PsRemoveLoadImageNotifyRoutine
PspCallProcessNotifyRoutines
PspCallThreadNotifyRoutines
PspSetCreateProcessNotifyRoutine