ObFastReplaceObject

UINT64 __fastcall ObFastReplaceObject(_EX_FAST_REF *FastRef, VOID *Object, UINT64 a3){
  INT64 v3; 
  __int64 v6; 
  unsigned __int64 v7; 
  unsigned int v8; 
  unsigned __int64 v9; 
  signed __int64 v10; 
  ULONG_PTR BugCheckParameter4; 
  if( Object )
    ObReferenceObjectExWithTag(Object, 0xFui64);
  v6 = _InterlockedExchange64(
         (volatile __int64 *)FastRef,
         ((unsigned __int64)Object | 0xF) & -(__int64)(Object != 0i64));
  v7 = v6 & 0xFFFFFFFFFFFFFFF0ui64;
  if( (v6 & 0xFFFFFFFFFFFFFFF0ui64) != 0 )
  {
    v8 = v6 & 0xF;
    if( v8 )
    {
      v9 = v7 - 48;
      ObpTraceObjectDereferenceIfActive(v7 - 48, (_BYTE *)v8, 1953261124i64, v3, BugCheckParameter4);
      v10 = _InterlockedExchangeAdd64((volatile signed __int64 *)(v7 - 48), -v8) - v8;
      if( v10 <= 0 )
      {
        if( *(_QWORD *)(v9 + 8) )
          KeBugCheckEx(
            0x18u,
            ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ *(unsigned __int8 *)(v9 + 24) ^ (unsigned __int64)BYTE1(v9)],
            v7,
            6ui64,
            *(_QWORD *)(v9 + 8));
        if( v10 < 0 )
          KeBugCheckEx(0x18u, 0i64, v7, 5ui64, v10);
        ObpDeferObjectDeletion(v7 - 48);
      }
    }
  }
  return v7;
}

Referenced by:

CcChangeBackingFileObject
CcDeleteSharedCacheMap
MiCreateImageFileMap
MiCreateImageOrDataSection
MiSegmentDelete
MmChangeSectionBackingFile
PsShutdownSystem
SeDeassignPrimaryToken
SeExchangePrimaryToken