MiExpandSystemCache

INT64 __fastcall MiExpandSystemCache(INT16 *a1, UINT64 *a2){
  __int64 *v4; 
  __int64 *v5; 
  unsigned __int64 v6; 
  __m128i v7; 
  __int64 *v8; 
  __int64 v9; 
  __m128i v10; 
  __m128i v11; 
  __m128i v12; 
  __int64 v13; 
  UINT64 v14; 
  UINT64 v15; 
  _MMPTE *PteBase; 
  INT64 v17; 
  INT64 v19; 
  *a2 = 0i64;
  if( (unsigned __int64)qword_140C4DD88 <= 0x4000000 )
    return 0i64;
  LODWORD(v4) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
  v5 = v4;
  if( !v4 )
    return 0i64;
  v6 = _mm_srli_si128((__m128i)0i64, 8).m128i_u64[0];
  v7 = _mm_cvtsi32_si128(*a1);
  v8 = v4 + 9;
  v9 = 4i64;
  v10 = _mm_slli_epi64(
          _mm_and_si128(
            _mm_unpacklo_epi32(
              _mm_unpacklo_epi16(_mm_shuffle_epi32(_mm_unpacklo_epi16(v7, v7), 0), (__m128i)0i64),
              (__m128i)0i64),
            (__m128i)_xmm),
          6u);
  do
  {
    v11.m128i_i64[0] = *(v8 - 5);
    v11.m128i_i64[1] = *v8;
    *(v8 - 7) = 0i64;
    v12 = _mm_or_si128(_mm_and_si128(v11, (__m128i)_xmm_ffffffffffff003fffffffffffff003f), v10);
    *(v8 - 5) = v12.m128i_i64[0];
    *v8 = _mm_srli_si128(v12, 8).m128i_u64[0];
    *(v8 - 2) = v6;
    v8 += 10;
    --v9;
  }
  while( v9 );
  v13 = 8i64;
  v14 = MiObtainSystemVa(1i64, 8i64);
  v15 = v14;
  if( !v14 )
  {
LABEL_12:
    ExFreePoolWithTag(v5, 0);
    return 0i64;
  }
  PteBase = MmGetPteBase();
  LODWORD(v19) = 0;
  v17 = (INT64)PteBase + ((v14 >> 9) & 0x7FFFFFFFF8i64);
  if( !(unsigned int)MiMakeZeroedPageTablesEx(v17, v17 + 4088, 0i64, 8i64, v19) )
  {
    *a2 = v15;
    goto LABEL_12;
  }
  MiZeroSystemCacheViewCount(((v17 << 25) - ((_QWORD)PteBase << 25)) >> 16);
  MiSetSystemCacheReverseMap(v15, (INT64)v5);
  do
  {
    InsertTailListPte((UINT64)(a1 + 892), (UINT64 *)v17);
    v17 += 512i64;
    --v13;
  }
  while( v13 );
  return v17;
}

Referenced by:

MiObtainSystemCacheView