MmFreeSecurePoolMemory

NTSTATUS __stdcall MmFreeSecurePoolMemory(PVOID BugCheckParameter2, PVOID BugCheckParameter3){
  int v2; 
  int v3; 
  int SystemRegionType; 
  int v7; 
  __int64 v8; 
  v3 = v2;
  SystemRegionType = MiGetSystemRegionType((UINT64)BugCheckParameter2);
  if( SystemRegionType != 15 )
    KeBugCheckEx(0x1Au, 0x5402ui64, (ULONG_PTR)BugCheckParameter2, (ULONG_PTR)BugCheckParameter3, SystemRegionType);
  if( !(unsigned int)MiIsSystemVaAllocated() )
    KeBugCheckEx(0x1Au, 0x5403ui64, (ULONG_PTR)BugCheckParameter2, (ULONG_PTR)BugCheckParameter3, 0i64);
  v7 = v3 | 0x4000;
  if( (v3 & 0x8000) == 0 )
    v7 = v3;
  v8 = MiClearNonPagedPtes((ULONG_PTR)BugCheckParameter2, (unsigned __int64)BugCheckParameter3 >> 12, v7, 3u);
  if( v8 )
    LODWORD(v8) = MiCountSystemPool(15i64, v8, 0i64);
  if( (v7 & 0x8000) != 0 )
    MiReturnSystemVa((UINT64)BugCheckParameter2, (UINT64)BugCheckParameter3 + (_QWORD)BugCheckParameter2, 15i64);
  return v8;
}

Referenced by:

MmAllocateSecurePoolMemory
PsDispatchIumService