MiReadyStandbyPageForActive
VOID __fastcall MiReadyStandbyPageForActive(_MMPFN *Pfn1, _MMPTE *PointerPte){
_LIST_ENTRY *Blink;
char v3;
_QWORD *v5;
int v6;
int v7;
__int64 v8;
__int64 v9;
int v10;
Blink = Pfn1->ListEntry.Blink;
v3 = *(_BYTE *)(&Pfn1->u3 + 1) & 0xFE;
++Pfn1->u3.ReferenceCount;
*((_BYTE *)&Pfn1->u3 + 2) = v3 | 6;
v5 = (_QWORD *)((unsigned __int64)Blink | 0x8000000000000000ui64);
v6 = (unsigned __int8)Pfn1->OriginalPte.u.Long >> 5;
v7 = *((unsigned __int8 *)&Pfn1->u3 + 2) >> 6;
if( v7 != 1 )
{
if( v7 )
{
if( v7 == 2 )
v6 |= 0x18u;
}
else
{
v6 |= 8u;
}
}
LODWORD(v8) = MiMakeValidPte((_XSTATE_CONFIGURATION *)PointerPte, Pfn1 - MmGetPfnDb(), v6 | 0x20000000u);
v9 = v8;
LOBYTE(v10) = MiPteInShadowRange((UINT64)v5);
if( v10 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v9 & 1) != 0 )
v9 |= 0x8000000000000000ui64;
*v5 = v9;
Pfn1->u2._bf_0 = Pfn1->u2._bf_0 & 0xC000000000000000ui64 | 1;
}Referenced by:
MiUnlinkStandbyBatch