MiTransferSoftwarePte
UINT64 __fastcall MiTransferSoftwarePte(UINT64 a1, INT64 a2, UINT64 a3){
INT64 v4;
char v5;
__int16 v6;
UINT64 result;
INT64 updated;
__int16 v9;
char v10;
UINT64 v11;
UINT64 v12;
v12 = a1;
v4 = (unsigned int)a3;
MiSetNonResidentPteHeat(&v12, 0i64);
if( (v6 & 0x400) != 0 || (v5 & 4) != 0 )
result = v12;
else
result = v12 & 0xFFFFFFFFFFFFFFF9ui64;
if( a2 )
{
if( result )
updated = MiUpdatePageFileHighInPte(result, v4);
else
updated = MiSwizzleInvalidPte(v4 << 32);
result = updated ^ (unsigned __int16)(updated ^ (v9 << 12)) & 0xF000;
v11 = result;
if( (v10 & 1) != 0 )
{
result |= 4ui64;
v11 = result;
}
if( (v10 & 2) != 0 )
return v11 | 2;
}
return result;
}Referenced by:
MiBuildForkPte
MiDecommitPages
MiFindFreePageFileSpace
MiRewriteTrimPteAsDemandZero
MiStoreWriteModifiedPages
MiTrimUnusedPageFileRegionsWorker
MiUpdatePfnBackingStore
MiWriteComplete
MiZeroCfgSystemWideBitmapWorker