MiExpandSystemCache

_MMPTE *__stdcall MiExpandSystemCache(_KTHREAD **a1, UINT64 *a2){
  __int64 *Pool; 
  unsigned __int64 v5; 
  __m128i v6; 
  __int64 *v7; 
  __int64 v8; 
  __m128i v9; 
  __m128i v10; 
  __m128i v11; 
  __int64 v12; 
  UINT64 v13; 
  UINT64 v14; 
  _MMPTE *PteBase; 
  INT64 v16; 
  INT64 v18; 

  *a2 = 0i64;
  if( *(&stru_140C4DB30 + 75) <= 0x4000000ui64 )
    return 0i64;
  Pool = (__int64 *)MiAllocatePool(64i64, 0x140ui64, 0x6353694Dui64);
  if( !Pool )
    return 0i64;
  v5 = _mm_srli_si128((__m128i)0i64, 8).m128i_u64[0];
  v6 = _mm_cvtsi32_si128(*(__int16 *)a1);
  v7 = Pool + 9;
  v8 = 4i64;
  v9 = _mm_slli_epi64(
         _mm_and_si128(
           _mm_unpacklo_epi32(
             _mm_unpacklo_epi16(_mm_shuffle_epi32(_mm_unpacklo_epi16(v6, v6), 0), (__m128i)0i64),
             (__m128i)0i64),
           (__m128i)_xmm),
         6u);
  do
  {
    v10.m128i_i64[0] = *(v7 - 5);
    v10.m128i_i64[1] = *v7;
    *(v7 - 7) = 0i64;
    v11 = _mm_or_si128(_mm_and_si128(v10, (__m128i)_xmm_ffffffffffff003fffffffffffff003f), v9);
    *(v7 - 5) = v11.m128i_i64[0];
    *v7 = _mm_srli_si128(v11, 8).m128i_u64[0];
    *(v7 - 2) = v5;
    v7 += 10;
    --v8;
  }
  while( v8 );
  v12 = 8i64;
  v13 = (UINT64)MiObtainSystemVa(1ui64, MiVaSystemCache);
  v14 = v13;
  if( !v13 )
  {
LABEL_12:
    ExFreePoolWithTag(Pool, 0);
    return 0i64;
  }
  PteBase = MmGetPteBase();
  LODWORD(v18) = 0;
  v16 = (INT64)PteBase + ((v13 >> 9) & 0x7FFFFFFFF8i64);
  if( !MiMakeZeroedPageTablesEx(v16, v16 + 4088, 0i64, 8i64, v18) )
  {
    *a2 = v14;
    goto LABEL_12;
  }
  MiZeroSystemCacheViewCount(((v16 << 25) - ((_QWORD)PteBase << 25)) >> 16);
  MiSetSystemCacheReverseMap(v14, (__int64)Pool);
  do
  {
    InsertTailListPte((unsigned __int64)(a1 + 223), (unsigned __int64 *)v16);
    v16 += 512i64;
    --v12;
  }
  while( v12 );
  return(_MMPTE *)v16;
}

Referenced by:

MiObtainSystemCacheView