CcUninitializeVolumeCacheMap

VOID __stdcall CcUninitializeVolumeCacheMap(PVOID P){
  int v2; 
  int v3; 
  int v4; 
  PVOID *v5; 
  PVOID *v6; 
  struct _DMA_ADAPTER *v7; 
  struct _KLOCK_QUEUE_HANDLE LockHandle; 
  memset(&LockHandle, 0, sizeof(LockHandle));
  v2 = 0;
  KeAcquireInStackQueuedSpinLock(&CcMasterLock, &LockHandle);
  v3 = *((_DWORD *)P + 1);
  if( !v3 )
    KeBugCheckEx(0x34u, 0x599ui64, 0xFFFFFFFFC0000420ui64, 0i64, 0i64);
  v4 = v3 - 1;
  *((_DWORD *)P + 1) = v4;
  if( !v4 )
  {
    v2 = 1;
    v5 = (PVOID *)*((_QWORD *)P + 2);
    v6 = (PVOID *)*((_QWORD *)P + 3);
    if( v5[1] != (char *)P + 16 || *v6 != (char *)P + 16 )
      __fastfail(3u);
    *v6 = v5;
    v5[1] = v6;
    v7 = (struct _DMA_ADAPTER *)*((_QWORD *)P + 20);
    if( v7 )
    {
      HalPutDmaAdapter(v7);
      *((_QWORD *)P + 20) = 0i64;
    }
  }
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
  if( v2 )
    ExFreePoolWithTag(P, 0x6D566343u);
}

Referenced by:

CcDeleteSharedCacheMap