MiUnlinkNumaStandbyPage
VOID __fastcall MiUnlinkNumaStandbyPage(_MMPFN *Pfn1){
__int64 v2;
__int64 PfnPriority;
_MMPFN *PfnDb;
__int64 v5;
unsigned __int64 v6;
__int64 v7;
__int64 v8;
__int64 v9;
__int64 v10;
_MMPFN *v11;
_MMPFN *v12;
__int64 v13;
PfnPriority = (unsigned int)MiGetPfnPriority(Pfn1);
PfnDb = MmGetPfnDb();
v5 = *(unsigned __int8 *)(v2 + 39) | (*(_QWORD *)v2 >> 28) & 0xFFFFFFF00i64;
v6 = *(unsigned __int16 *)(v2 + 36) | (*(_QWORD *)(v2 + 24) >> 20) & 0xFFFFF0000i64;
LODWORD(v7) = MiSearchNumaNodeTable((PVOID)((v2 - (__int64)PfnDb) / 48));
v8 = *(_QWORD *)(*(_QWORD *)(*(&stru_140C4DB30 + 267) + 8 * (((unsigned __int64)Pfn1->u4._bf_0 >> 39) & 0x3FF)) + 16i64)
+ 4544i64 * *(unsigned int *)(v7 + 8);
v9 = PfnPriority + 8i64 * (unsigned int)MiGetPfnChannel((INT64)Pfn1);
v10 = 3 * v9;
if( v5 == 0xFFFFFFFFFi64 )
{
*(_QWORD *)(v8 + 24 * v9 + 3272) = v6;
}
else
{
v11 = &PfnDb[v5];
v11->NodeBlinkLow = v6;
MiSetPfnNodeBlinkHigh(v11, v6 >> 16, 0i64);
}
if( v6 == 0xFFFFFFFFFi64 )
{
*(_QWORD *)(v8 + 8 * v10 + 3264) = v5;
}
else
{
v12 = &PfnDb[v6];
v13 = v12->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 ^ (v5 << 28);
v12->ViewCount = v5;
v12->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 = (v5 << 28) ^ v13 & 0xFFFFFFFFFi64;
}
--*(_QWORD *)(v8 + 8 * v10 + 3256);
}Referenced by:
MiRemoveLowestPriorityStandbyPage
MiReplaceNumaStandbyPage
MiReplaceTransitionPage
MiSwapNumaStandbyPage