MiMarkBootGuardPage
VOID __fastcall MiMarkBootGuardPage(){
INT64 v0;
_QWORD *v1;
__int64 v2;
_MMPFN *PfnDb;
UINT64 v4;
UINT64 v5;
_MI_PARTITION *v6;
_MI_PARTITION *v7;
int v8;
unsigned __int64 v9;
v1 = (_QWORD *)v0;
if( (*(_BYTE *)v0 & 1) != 0 )
{
v2 = ((v0 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
v9 = MI_READ_PTE_LOCK_FREE(v0);
PfnDb = MmGetPfnDb();
v4 = (UINT64)PfnDb + 48 * ((v9 >> 12) & 0xFFFFFFFFFi64);
v5 = (UINT64)PfnDb + 48 * (*(_QWORD *)(v4 + 40) & 0xFFFFFFFFFi64);
LODWORD(v6) = MiPartitionIdToPointer((*(_QWORD *)(v4 + 40) >> 39) & 0x3FF, (UINT64)PfnDb);
v7 = v6;
*v1 = ZeroPte;
KeFlushSingleTb(v2, 0i64, 1i64);
v8 = MiLockAndDecrementShareCount(v4, 1);
MiLockAndDecrementShareCount(v5, 0);
MiReturnResident((INT64)v7, 1ui64);
if( v8 != 3 )
MiReturnCommit(v7, 1ui64);
if( v7 == (_MI_PARTITION *)&MiSystemPartition )
{
if( (unsigned int)MiGetSystemRegionType(v2) == 14 )
_InterlockedExchangeAdd64(&qword_140C4ED08, 0xFFFFFFFFFFFFFFFFui64);
else
--qword_140C4ECF0;
}
}
}Referenced by:
MiInitializeKernelStacks
MmAllocateIsrStack