MiMapNewSession

INT64 __stdcall MiMapNewSession(UINT64 rcx0, UINT64 rdx0){
  void *v2; 
  _QWORD *v3; 
  _QWORD *v4; 
  INT64 v5; 
  __int64 v6; 
  char *SystemPage; 
  INT64 v8; 
  _MMPFN *PfnDb; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  UINT64 *v13; 
  INT64 v14; 
  INT64 PfnLink; 
  _QWORD *v16; 
  __int64 v17; 
  UINT64 ValidPte; 
  UINT64 v19; 
  unsigned int v20; 
  UINT64 *v21; 
  __int64 v22; 
  __int64 v23; 
  MMPTE *v24; 
  INT64 v25; 
  UINT64 v26; 
  INT64 v28[2]; 
  __int64 v29[11]; 
  MMPTE *PteAddress; 
  UINT64 v32; 
  _RTL_BITMAP_EX *BitMapHeader; 
  v2 = (void *)rcx0;
  *(_OWORD *)v28 = 0i64;
  memset(v29, 0, 32);
  LODWORD(v3) = MiPartitionIdToPointer(rdx0, rdx0);
  v4 = v3;
  v5 = 0i64;
  PteAddress = MiGetPteAddress(v2);
  MiInitializePageColorBase(0i64, 0i64, (INT64)v28);
  v6 = 8i64;
  do
  {
    SystemPage = MiGetSystemPage(v4, (__int64)v28);
    MiSetPfnLink(SystemPage, v5);
    v5 = v8;
    --v6;
  }
  while( v6 );
  MiFillPteHierarchy(qword_140C4DB20, (UINT64 *)v29);
  PfnDb = MmGetPfnDb();
  v11 = 4i64;
  v12 = (v10 - (__int64)PfnDb) / 48;
  do
  {
    v13 = (UINT64 *)v28[v11-- + 1];
    v14 = v5;
    PfnLink = MiGetPfnLink(v5);
    *v16 = 0i64;
    v5 = PfnLink;
    if( v11 == 3 )
    {
      *(_QWORD *)(v14 + 8) = MiGetPteAddress((PVOID)qword_140C4DB20);
      MiSetPageTablePfnBuddy(v14, (INT64)v2, 0i64);
    }
    v17 = (v14 - (__int64)PfnDb) / 48;
    ValidPte = MiMakeValidPte(0i64, v17, 2415919110i64);
    if( v11 == 3 )
    {
      MiWriteTopLevelPxe(v13, ValidPte & 0xFFFFFFFFFFFFFEFFui64);
    }
    else
    {
      *v13 = ValidPte & 0xFFFFFFFFFFFFFEFFui64;
      v2 = (void *)rcx0;
    }
    MiInitializePfnForOtherProcess(v17, (MMPTE *)v13, v12, 0x200ui64);
    v12 = v17;
    PfnDb = MmGetPfnDb();
  }
  while( v11 != 1 );
  v19 = MiMakeValidPte((UINT64)PteAddress, 0i64, 2684354564i64);
  v20 = 0;
  v21 = (UINT64 *)MiGetPteAddress((PVOID)qword_140C4DB20);
  v32 = PteAddress - (MMPTE *)v21;
  do
  {
    BitMapHeader = (_RTL_BITMAP_EX *)v5;
    v5 = MiGetPfnLink(v5);
    v23 = (v22 - (__int64)MmGetPfnDb()) / 48;
    if( !v20 )
    {
      v19 ^= (v19 ^ (v23 << 12)) & 0xFFFFFFFFF000i64;
      v24 = MiGetPteAddress((PVOID)qword_140C4DB20);
      *(_QWORD *)(v25 + 8) = v24;
      MiSetPageTablePfnBuddy(v25, (INT64)v2, 0i64);
      *(UINT64 *)((char *)v21 + v32) = v19;
    }
    v26 = MiMakeValidPte(0i64, v23, 2147483652i64) & 0xFFFFFFFFFFFFFEFFui64;
    MiInitializePfn(BitMapHeader, v21, 4ui64);
    *v21 = v26;
    v2 = (void *)rcx0;
    ++v20;
    ++v21;
  }
  while( v20 < 5 );
  return MiGetNextPageColor((INT64)v28);
}

Referenced by:

MiSessionCreateInternal