CcDecrementOpenCount

VOID __fastcall CcDecrementOpenCount(INT64 a1){
  UINT8 Partition; 
  int v3; 
  int v4; 
  __int64 v5; 
  bool v6; 
  --*(_DWORD *)(a1 + 4);
  --*(_DWORD *)(a1 + 536);
  Partition = CcGetPartition((_QWORD *)a1);
  if( !*(_DWORD *)(a1 + 4) )
  {
    *(_BYTE *)(*(_QWORD *)(a1 + 528) + 633i64) = 1;
    v3 = *(_DWORD *)(a1 + 152);
    v4 = *(_DWORD *)(a1 + 112);
    if( (v3 & 0x10000) != 0 )
    {
      if( !v4 )
        CcInsertIntoDirtySharedCacheMapList((_SHARED_CACHE_MAP *)a1);
      v6 = 1;
    }
    else
    {
      if( v4 || (v3 & 0x20) != 0 )
        return;
      CcInsertIntoDirtySharedCacheMapList((_SHARED_CACHE_MAP *)a1);
      v6 = v5 != 0;
    }
    CcScheduleLazyWriteScan(Partition, v6);
  }
}

Referenced by:

CcCompleteAsyncRead
CcFlushCachePriv
CcGetFlushedValidData
CcMdlWriteAbort
CcMdlWriteComplete2
CcNotifyOfMappedWrite
CcNotifyOfMappedWriteComplete
CcPerformReadAhead
CcPurgeCacheSection
CcSetFileSizesEx
CcUnmapInactiveViewsInternal
CcWriteBehindInternal