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;
char *v11;
char *v12;
__int64 v13;
PfnPriority = (unsigned int)MiGetPfnPriority((INT64)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 *)(qword_140C4E388 + 8 * ((*((_QWORD *)Pfn1 + 5) >> 39) & 0x3FFi64)) + 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 = (char *)PfnDb + 48 * v5;
*((_WORD *)v11 + 18) = v6;
MiSetPfnNodeBlinkHigh((_MMPFN *)v11, v6 >> 16, 0i64);
}
if( v6 == 0xFFFFFFFFFi64 )
{
*(_QWORD *)(v8 + 8 * v10 + 3264) = v5;
}
else
{
v12 = (char *)PfnDb + 48 * v6;
v13 = *(_QWORD *)v12 ^ (v5 << 28);
v12[39] = v5;
*(_QWORD *)v12 = (v5 << 28) ^ v13 & 0xFFFFFFFFFi64;
}
--*(_QWORD *)(v8 + 8 * v10 + 3256);
}Referenced by:
MiRemoveLowestPriorityStandbyPage
MiReplaceNumaStandbyPage
MiReplaceTransitionPage
MiSwapNumaStandbyPage