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