CcRemoveExternalCache

INT64 __fastcall CcRemoveExternalCache(INT64 a1){
  UINT64 v1; 
  _QWORD *v3; 
  INT64 v4; 
  unsigned __int8 v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  INT64 result; 
  KeAcquireSpinLockRaiseToDpc(&CcExternalCacheListLock, v1);
  v3 = *(_QWORD **)(a1 + 40);
  v4 = a1 + 32;
  v6 = v5;
  v7 = *(_QWORD *)v4;
  if( *(_QWORD *)(*(_QWORD *)v4 + 8i64) != v4 || *v3 != v4 )
    __fastfail(3u);
  *v3 = v7;
  *(_QWORD *)(v7 + 8) = v3;
  if( CcNumberOfExternalCaches - 1 >= (unsigned int)CcNumberOfExternalCaches )
    KeBugCheckEx(0x34u, 0x138Cui64, 0xFFFFFFFFC0000420ui64, 0i64, 0i64);
  --CcNumberOfExternalCaches;
  KxReleaseSpinLock(&CcExternalCacheListLock);
  result = (unsigned int)KiIrqlFlags;
  __writecr8(v6);
  return result;
}

Referenced by:

CcUnregisterExternalCache