MiReplaceNumaStandbyPage

INT64 __fastcall MiReplaceNumaStandbyPage(INT64 a1, INT64 a2){
  _MMPFN *PfnDb; 
  __int64 v5; 
  __int64 v6; 
  __int64 PfnChannel; 
  unsigned __int64 v8; 
  __int64 v9; 
  int v10; 
  int v11; 
  __int64 v12; 
  __int64 v13; 
  char *v14; 
  __int64 v15; 
  INT64 result; 
  char *v17; 
  unsigned __int64 v18; 
  PfnDb = MmGetPfnDb();
  LODWORD(v5) = MiSearchNumaNodeTable((PVOID)((a1 - (__int64)PfnDb) / 48));
  v6 = *(unsigned int *)(v5 + 8);
  PfnChannel = (unsigned int)MiGetPfnChannel(a1);
  v8 = (a2 - (__int64)PfnDb) / 48;
  LODWORD(v9) = MiSearchNumaNodeTable((PVOID)v8);
  v10 = *(_DWORD *)(v9 + 8);
  v11 = MiGetPfnChannel(a2);
  if( (_DWORD)v6 == v10 && (_DWORD)PfnChannel == v11 )
  {
    v12 = 4544 * v6
        + *(_QWORD *)(*(_QWORD *)(qword_140C4E388 + 8 * ((*(_QWORD *)(a1 + 40) >> 39) & 0x3FFi64)) + 16i64)
        + 24 * ((unsigned int)MiGetPfnPriority(a1) + 8 * PfnChannel);
    v13 = *(unsigned __int8 *)(a1 + 39) | (*(_QWORD *)a1 >> 28) & 0xFFFFFFF00i64;
    *(_BYTE *)(a2 + 39) = *(_BYTE *)(a1 + 39);
    *(_QWORD *)a2 = (v13 << 28) ^ (*(_QWORD *)a2 ^ (v13 << 28)) & 0xFFFFFFFFFi64;
    if( v13 == 0xFFFFFFFFFi64 )
    {
      *(_QWORD *)(v12 + 3272) = v8;
    }
    else
    {
      v14 = (char *)PfnDb + 48 * v13;
      *((_WORD *)v14 + 18) = v8;
      MiSetPfnNodeBlinkHigh((_MMPFN *)v14, v8 >> 16, 0i64);
    }
    v15 = *(unsigned __int16 *)(a1 + 36) | (*(_QWORD *)(a1 + 24) >> 20) & 0xFFFFF0000i64;
    *(_WORD *)(a2 + 36) = *(_WORD *)(a1 + 36);
    result = (*(_QWORD *)(a2 + 24) ^ (v15 << 20)) & 0xFFFFF000000000i64;
    *(_QWORD *)(a2 + 24) ^= result;
    if( v15 == 0xFFFFFFFFFi64 )
    {
      *(_QWORD *)(v12 + 3264) = v8;
    }
    else
    {
      v17 = (char *)PfnDb + 48 * v15;
      v18 = *(_QWORD *)v17 ^ (v8 << 28);
      v17[39] = v8;
      result = (v8 << 28) ^ v18 & 0xFFFFFFFFFi64;
      *(_QWORD *)v17 = result;
    }
  }
  else
  {
    MiUnlinkNumaStandbyPage((_MMPFN *)a1);
    MiInsertNumaStandbyPage((_MMPFN *)a2);
  }
  return result;
}

Referenced by:

MiReplaceTransitionPage