MiInsertNumaStandbyPage
void __fastcall MiInsertNumaStandbyPage(_MMPFN *Pfn1){
_MMPFN *PfnDb;
__int64 v3;
__int64 v4;
char v5;
__int64 v6;
__int64 v7;
__int64 v8;
unsigned int v9;
_QWORD *v10;
__int64 v11;
char *v12;
__int64 v13;
__int64 v14;
PfnDb = MmGetPfnDb();
v3 = (Pfn1 - PfnDb) / 48;
v4 = *(_QWORD *)(qword_140C4E388 + 8 * ((*((_QWORD *)Pfn1 + 5) >> 39) & 0x3FFi64));
v5 = *((_BYTE *)Pfn1 + 35);
if( (v5 & 8) != 0 )
v6 = 5i64;
else
v6 = v5 & 7;
LODWORD(v7) = MiSearchNumaNodeTable((PVOID)((Pfn1 - PfnDb) / 48));
v8 = *(unsigned int *)(v7 + 8);
if( qword_140C4DC10 )
v9 = MiPageToChannel(v3);
else
v9 = 0;
v10 = (_QWORD *)(*(_QWORD *)(v4 + 16) + 4544 * v8 + 24 * (v6 + 8i64 * v9));
++v10[407];
v11 = v10[409];
if( v11 == 0xFFFFFFFFFi64 )
{
v10[408] = v3;
}
else
{
v12 = (char *)PfnDb + 48 * v11;
v13 = (*(_QWORD *)v12 ^ (v3 << 28)) & 0xFFFFFFFFFi64;
v12[39] = v3;
*(_QWORD *)v12 = (v3 << 28) ^ v13;
}
*(_QWORD *)Pfn1 |= 0xFFFFFFF000000000ui64;
*((_WORD *)Pfn1 + 18) = v11;
v14 = (*((_QWORD *)Pfn1 + 3) ^ (v11 << 20)) & 0xFFFFF000000000i64;
*((_BYTE *)Pfn1 + 39) = -1;
*((_QWORD *)Pfn1 + 3) ^= v14;
v10[409] = v3;
}Referenced by:
MiInsertProtectedStandbyPage
MiReplaceNumaStandbyPage
MiSwapNumaStandbyPage