MiTransferSoftwarePte

NTSTATUS __stdcall MiTransferSoftwarePte(UINT64 a1, INT64 a2, UINT64 a3){
  INT64 v4; 
  char v5; 
  __int16 v6; 
  UINT64 v7; 
  int updated; 
  __int16 v9; 
  char v10; 
  int v11; 
  UINT64 v13; 

  v13 = a1;
  v4 = (unsigned int)a3;
  MiSetNonResidentPteHeat(&v13, 0i64);
  if( (v6 & 0x400) != 0 || (v5 & 4) != 0 )
    v7 = v13;
  else
    v7 = v13 & 0xFFFFFFFFFFFFFFF9ui64;
  if( a2 )
  {
    if( v7 )
      updated = MiUpdatePageFileHighInPte(v7, v4);
    else
      updated = MiSwizzleInvalidPte(v4 << 32);
    LODWORD(v7) = updated ^ ((unsigned __int16)updated ^ (unsigned __int16)(v9 << 12)) & 0xF000;
    v11 = v7;
    if( (v10 & 1) != 0 )
    {
      LODWORD(v7) = v7 | 4;
      v11 = v7;
    }
    if( (v10 & 2) != 0 )
      LODWORD(v7) = v11 | 2;
  }
  return v7;
}

Referenced by:

MiBuildForkPte
MiDecommitPages
MiFindFreePageFileSpace
MiRewriteTrimPteAsDemandZero
MiStoreWriteModifiedPages
MiTrimUnusedPageFileRegionsWorker
MiUpdatePfnBackingStore
MiWriteComplete
MiZeroCfgSystemWideBitmapWorker