IoChangeFileObjectFilterContext

NTSTATUS __stdcall IoChangeFileObjectFilterContext(_FILE_OBJECT *FileObject, PVOID FilterContext, UINT8 Set){
  signed __int64 v3; 
  char v4; 
  bool v5; 
  VOID *FoExt; 
  FoExt = 0i64;
  if( !FileObject->FileObjectExtension )
    return -1073741811;
  IopGetFileObjectExtension(FileObject, FoExtTypeGeneric, &FoExt);
  if( v4 )
    v5 = _InterlockedCompareExchange64((volatile signed __int64 *)FoExt + 4, v3, 0i64) == 0;
  else
    v5 = v3 == _InterlockedCompareExchange64((volatile signed __int64 *)FoExt + 4, 0i64, v3);
  if( v5 )
    return 0;
  else
    return -1073741791;
}

Referenced by:

FsRtlInsertPerFileObjectContext
FsRtlPTeardownPerFileObjectContexts