RtlAcquireSwapReference

UINT64 __stdcall RtlAcquireSwapReference(INT64 *a1){
  INT64 *v1; 
  unsigned __int64 v2; 
  INT64 v3; 
  unsigned int v5; 

  v5 = 0;
  v1 = a1;
  while( 1 )
  {
    _m_prefetchw(v1);
    v2 = *v1 & 1 | ((*v1 & 0xFFFFFFFFFFFFFFFEui64) + 2);
    if( v2 < 2 )
      __fastfail(0xEu);
    v3 = *v1;
    if( v3 == _InterlockedCompareExchange64(v1, v2, *v1) )
      break;
    RtlBackoff(&v5);
  }
  return v2 & 1;
}

Referenced by:

CmFcManagerNotifyFeatureUsage
RtlpFcBufferManagerReferenceBuffers