MiMapNewSession

NTSTATUS __stdcall MiMapNewSession(_MM_SESSION_SPACE *SessionGlobal){
  UINT64 v1; 
  _MM_SESSION_SPACE *v2; 
  ULONG_PTR *v3; 
  ULONG_PTR *v4; 
  __int64 v5; 
  __int64 v6; 
  _MMPFN *SystemPage; 
  __int64 v8; 
  _MMPFN *PfnDb; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  _MMPTE *v13; 
  INT64 v14; 
  __int64 v15; 
  _QWORD *v16; 
  __int64 v17; 
  __int64 v18; 
  unsigned __int64 v19; 
  int v20; 
  unsigned __int64 v21; 
  unsigned __int64 v22; 
  unsigned int v23; 
  _MMPTE *v24; 
  __int64 v25; 
  __int64 v26; 
  __int64 v27; 
  _MMPTE *v28; 
  INT64 v29; 
  unsigned __int64 v30; 
  int v31; 
  __int64 v32; 
  unsigned __int64 v33; 
  int v34; 
  _QWORD ColorBase[2]; 
  UINT64 v37[2]; 
  __int128 v38; 
  _XSTATE_CONFIGURATION *PteAddress; 
  _XSTATE_CONFIGURATION *v41; 
  _RTL_BITMAP_EX *BitMapHeader; 

  v2 = SessionGlobal;
  *(_OWORD *)ColorBase = 0i64;
  *(_OWORD *)v37 = 0i64;
  v38 = 0i64;
  LODWORD(v3) = MiPartitionIdToPointer(v1, v1);
  v4 = v3;
  v5 = 0i64;
  PteAddress = (_XSTATE_CONFIGURATION *)MiGetPteAddress(v2);
  MiInitializePageColorBase(0i64, 0i64, (_MI_COLOR_BASE *)ColorBase);
  v6 = 8i64;
  do
  {
    SystemPage = MiGetSystemPage(v4, (_MI_COLOR_BASE *)ColorBase);
    MiSetPfnLink(SystemPage, v5);
    v5 = v8;
    --v6;
  }
  while( v6 );
  MiFillPteHierarchy(qword_140C4DB20, v37);
  PfnDb = MmGetPfnDb();
  v11 = 4i64;
  v12 = (v10 - (__int64)PfnDb) / 48;
  do
  {
    v13 = (_MMPTE *)ColorBase[v11-- + 1];
    v14 = v5;
    LODWORD(v15) = MiGetPfnLink(v5);
    *v16 = 0i64;
    v5 = v15;
    if( v11 == 3 )
    {
      *(_QWORD *)(v14 + 8) = MiGetPteAddress((VOID *)qword_140C4DB20);
      MiSetPageTablePfnBuddy(v14, (INT64)v2, 0i64);
    }
    v17 = (v14 - (__int64)PfnDb) / 48;
    LODWORD(v18) = MiMakeValidPte(0i64, v17, 2415919110i64);
    v19 = v18 & 0xFFFFFFFFFFFFFEFFui64;
    if( v11 == 3 )
    {
      MiWriteTopLevelPxe((UINT64)v13, v18 & 0xFFFFFFFFFFFFFEFFui64);
    }
    else
    {
      LOBYTE(v20) = MiPteInShadowRange((UINT64)v13);
      if( v20 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v19 & 1) != 0 )
        v19 |= 0x8000000000000000ui64;
      v13->u.Long = v19;
      v2 = SessionGlobal;
    }
    MiInitializePfnForOtherProcess(v17, v13, v12, 0x200ui64);
    v12 = v17;
    PfnDb = MmGetPfnDb();
  }
  while( v11 != 1 );
  LODWORD(v21) = MiMakeValidPte(PteAddress, 0i64, 2684354564i64);
  v22 = v21;
  v23 = 0;
  v24 = MiGetPteAddress((VOID *)qword_140C4DB20);
  v41 = (_XSTATE_CONFIGURATION *)((char *)PteAddress - (char *)v24);
  do
  {
    BitMapHeader = (_RTL_BITMAP_EX *)v5;
    LODWORD(v25) = MiGetPfnLink(v5);
    v5 = v25;
    v27 = (v26 - (__int64)MmGetPfnDb()) / 48;
    if( !v23 )
    {
      v22 ^= (v22 ^ (v27 << 12)) & 0xFFFFFFFFF000i64;
      v28 = MiGetPteAddress((VOID *)qword_140C4DB20);
      *(_QWORD *)(v29 + 8) = v28;
      MiSetPageTablePfnBuddy(v29, (INT64)v2, 0i64);
      v30 = v22;
      LOBYTE(v31) = MiPteInShadowRange((UINT64)v41 + (_QWORD)v24);
      if( v31 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v22 & 1) != 0 )
        v30 = v22 | 0x8000000000000000ui64;
      *(unsigned __int64 *)((char *)&v41->EnabledFeatures + (_QWORD)v24) = v30;
    }
    LODWORD(v32) = MiMakeValidPte(0i64, v27, 2147483652i64);
    v33 = v32 & 0xFFFFFFFFFFFFFEFFui64;
    MiInitializePfn(BitMapHeader, &v24->u.Long, 4ui64);
    LOBYTE(v34) = MiPteInShadowRange((UINT64)v24);
    if( v34 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v33 & 1) != 0 )
      v33 |= 0x8000000000000000ui64;
    v24->u.Long = v33;
    v2 = SessionGlobal;
    ++v23;
    ++v24;
  }
  while( v23 < 5 );
  return MiGetNextPageColor((INT64)ColorBase);
}

Referenced by:

MiSessionCreateInternal