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