MmFreeSystemCacheReserveView

NTSTATUS __stdcall MmFreeSystemCacheReserveView(ULONG_PTR BugCheckParameter3){
  void *v1; 
  _MMPTE *PteAddress; 
  _MMPTE *v3; 
  _QWORD *v4; 
  void *v5; 
  __int16 v6; 
  NTSTATUS result; 

  v1 = *(void **)&BugCheckParameter3;
  PteAddress = MiGetPteAddress(*(VOID **)&BugCheckParameter3);
  v3 = PteAddress + 64;
  LODWORD(v4) = MiGetSystemCacheReverseMap((UINT64)v1);
  v5 = v4;
  if( v4[2] )
    KeBugCheckEx(0x1Au, (PVOID)0x784, v4, v1, 0i64);
  do
  {
    v6 = MI_READ_PTE_LOCK_FREE((INT64)PteAddress);
    if( (v6 & 1) != 0 || (v6 & 0x400) != 0 )
      KeBugCheckEx(0x1Au, (PVOID)0x785, v5, v1, 0i64);
    ++PteAddress;
  }
  while( PteAddress < v3 );
  MiReleaseSystemCacheView(PteAddress - 64);
  return result;
}

Referenced by:

CcUninitializePartitionVacbs