MiDereferenceControlAreaFile

VOID __stdcall MiDereferenceControlAreaFile(_CONTROL_AREA *ControlArea, _FILE_OBJECT *FileObject){
  signed __int64 Object; 
  signed __int64 v3; 

  _m_prefetchw(&ControlArea->FilePointer);
  Object = (signed __int64)ControlArea->FilePointer.Object;
  if( ((unsigned __int64)FileObject ^ Object) >= 0xF )
  {
LABEL_4:
    ObDereferenceObjectDeferDelete((UINT64)FileObject);
  }
  else
  {
    while( 1 )
    {
      v3 = Object;
      Object = _InterlockedCompareExchange64((volatile signed __int64 *)&ControlArea->FilePointer, Object + 1, Object);
      if( v3 == Object )
        break;
      if( ((unsigned __int64)FileObject ^ Object) >= 0xF )
        goto LABEL_4;
    }
  }
}

Referenced by:

MiAllocateFileExtents
MiAllowImageMap
MiCompleteRestrictedImageFault
MiCreateSectionCommon
MiDeleteCachedSubsection
MiDeprioritizeVad
MiDriverLoadSucceeded
MiFillMapFileInfo
MiFlushSectionInternal
MiGatherMappedPages
MiLoadUserSymbols
MiLogRelocationFaults
MiMakeSystemCachePteValid
MiMapImageForEnclaveUse
MiMapImageInSystemSpace
MiParseComAndCetHeaders
MiParseImageLoadConfig
MiUnmapVad
MiWriteComplete
MmExtendSection
MmFlushSection
MmFlushVirtualMemory
MmGetFileNameForSection
MmIsFileMapped
MmLoadSystemImageEx
MmSectionToSectionObjectPointers
NtAreMappedFilesTheSame