MiReplaceNumaStandbyPage

VOID __fastcall MiReplaceNumaStandbyPage(_MMPFN *Pfn1, _MMPFN *Pfn2){
  _MMPFN *PfnDb; 
  __int64 v5; 
  __int64 v6; 
  __int64 PfnChannel; 
  unsigned __int64 v8; 
  __int64 v9; 
  int v10; 
  NTSTATUS v11; 
  __int64 v12; 
  unsigned __int64 v13; 
  _MMPFN *v14; 
  unsigned __int64 v15; 
  _MMPFN *v16; 
  unsigned __int64 v17; 

  PfnDb = MmGetPfnDb();
  LODWORD(v5) = MiSearchNumaNodeTable((PVOID)(Pfn1 - PfnDb));
  v6 = *(unsigned int *)(v5 + 8);
  PfnChannel = (unsigned int)MiGetPfnChannel((INT64)Pfn1);
  v8 = Pfn2 - PfnDb;
  LODWORD(v9) = MiSearchNumaNodeTable((PVOID)v8);
  v10 = *(_DWORD *)(v9 + 8);
  v11 = MiGetPfnChannel((INT64)Pfn2);
  if( (_DWORD)v6 == v10 && (_DWORD)PfnChannel == v11 )
  {
    v12 = 4544 * v6
        + *(_QWORD *)(*(_QWORD *)(*(&stru_140C4DB30 + 267) + 8 * (((unsigned __int64)Pfn1->u4._bf_0 >> 39) & 0x3FF))
                    + 16i64)
        + 24 * ((unsigned int)MiGetPfnPriority(Pfn1) + 8 * PfnChannel);
    v13 = Pfn1->ViewCount | ((unsigned __int64)Pfn1->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 >> 28) & 0xFFFFFFF00i64;
    Pfn2->ViewCount = Pfn1->ViewCount;
    Pfn2->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 = (v13 << 28) ^ (Pfn2->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 ^ (v13 << 28)) & 0xFFFFFFFFFi64;
    if( v13 == 0xFFFFFFFFFi64 )
    {
      *(_QWORD *)(v12 + 3272) = v8;
    }
    else
    {
      v14 = &PfnDb[v13];
      v14->NodeBlinkLow = v8;
      MiSetPfnNodeBlinkHigh(v14, v8 >> 16, 0i64);
    }
    v15 = Pfn1->NodeBlinkLow | ((unsigned __int64)Pfn1->u2._bf_0 >> 20) & 0xFFFFF0000i64;
    Pfn2->NodeBlinkLow = Pfn1->NodeBlinkLow;
    Pfn2->u2._bf_0 ^= (Pfn2->u2._bf_0 ^ (v15 << 20)) & 0xFFFFF000000000i64;
    if( v15 == 0xFFFFFFFFFi64 )
    {
      *(_QWORD *)(v12 + 3264) = v8;
    }
    else
    {
      v16 = &PfnDb[v15];
      v17 = v16->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 ^ (v8 << 28);
      v16->ViewCount = v8;
      v16->u1.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0 = (v8 << 28) ^ v17 & 0xFFFFFFFFFi64;
    }
  }
  else
  {
    MiUnlinkNumaStandbyPage(Pfn1);
    MiInsertNumaStandbyPage(Pfn2);
  }
}

Referenced by:

MiReplaceTransitionPage