MiAddToReservationCluster

__int64 __fastcall MiAddToReservationCluster(
        __int64 a1,
        __int64 a2,
        unsigned int a3,
        unsigned int a4,
        _QWORD *a5,
        _DWORD *a6){
  unsigned int v6; 
  MMPTE *v7; 
  __int64 v9; 
  __int64 v11; 
  char *v12; 
  unsigned int v13; 
  unsigned __int64 v14; 
  unsigned __int8 *v15; 
  unsigned __int64 v16; 
  unsigned __int64 v17; 
  int v18; 
  __int64 v20; 
  int v21; 
  unsigned __int8 *v22; 
  bool v23; 
  bool i; 
  __int64 v25; 
  __int64 v26; 
  MMPTE *PointerPte; 
  v6 = 0;
  v7 = *(MMPTE **)(a1 + 248);
  PointerPte = v7;
  v9 = 5i64 * (*(_WORD *)(a1 + 204) & 0xF);
  v25 = v9;
  if( a3 )
  {
    while( 1 )
    {
      v11 = *((_QWORD *)v7 + v9 + 354);
      v26 = v11;
      if( v11 == 0xFFFFFFFFFi64 )
        break;
      v12 = (char *)MmGetPfnDb() + 48 * v11;
      v13 = 0;
      v14 = (unsigned __int8)MiLockPageInline((INT64)v12);
      if( v11 == *((_QWORD *)PointerPte + v25 + 354) )
      {
        v16 = *((_QWORD *)v12 + 2);
        if( qword_140C4DC80 && (v16 & 0x10) == 0 )
          v16 &= ~qword_140C4DC80;
        v17 = HIDWORD(v16);
        if( (_DWORD)v17 != a4 )
        {
          v13 = v17 - a4;
          if( !(unsigned int)MI_IS_PTE_IN_WS_SWAP_SET(PointerPte)
            || (unsigned int)v17 < a4
            || v13 > 0x1F
            || v13 + v6 >= a3 )
          {
            goto LABEL_16;
          }
        }
        if( _bittest64(*(const signed __int64 **)(a2 + 8), v17) )
          goto LABEL_16;
        if( v13 )
        {
          if( a4 >= *(_DWORD *)a2 )
            goto LABEL_16;
          if( v13 > 1 )
          {
            if( *(_DWORD *)a2 - a4 < v13 )
              goto LABEL_16;
            v20 = *(_QWORD *)(a2 + 8);
            v15 = (unsigned __int8 *)(v20 + 4 * ((unsigned __int64)a4 >> 5));
            v21 = *(_DWORD *)v15;
            v22 = (unsigned __int8 *)(v20 + 4 * ((unsigned __int64)(v13 + a4 - 1) >> 5));
            if( v15 != v22 )
            {
              for( i = (v21 & (-1 << a4)) == 0; i; i = *(_DWORD *)v15 == 0 )
              {
                v15 += 4;
                if( v15 == v22 )
                {
                  v23 = ((0xFFFFFFFF >> ~(v13 + a4 - 1)) & *(_DWORD *)v15) == 0;
                  goto LABEL_37;
                }
              }
LABEL_16:
              _InterlockedAnd64((volatile signed __int64 *)v12 + 3, 0x7FFFFFFFFFFFFFFFui64);
              __writecr8(v14);
              return v6;
            }
            v23 = (v21 & (0xFFFFFFFF >> (32 - v13) << a4)) == 0;
LABEL_37:
            if( !v23 )
              goto LABEL_16;
          }
          else if( _bittest(*(const signed __int32 **)(a2 + 8), a4) )
          {
            goto LABEL_16;
          }
        }
        v18 = MiReferencePageForModifiedWrite((_MMPFN *)v12, 0, v15);
        _InterlockedAnd64((volatile signed __int64 *)v12 + 3, 0x7FFFFFFFFFFFFFFFui64);
        __writecr8(v14);
        if( !v18 )
          return v6;
        if( v13 )
        {
          v6 += v13;
          a4 += v13;
          *a6 += v13;
          do
          {
            *a5++ = qword_140C4EAA8;
            --v13;
          }
          while( v13 );
        }
        ++v6;
        *a5 = v26;
        ++a4;
        ++a5;
        if( v18 == 3 && v6 >= 0x10 )
          return v6;
      }
      else
      {
        _InterlockedAnd64((volatile signed __int64 *)v12 + 3, 0x7FFFFFFFFFFFFFFFui64);
        __writecr8(v14);
      }
      if( v6 == a3 )
        return v6;
      v7 = PointerPte;
      v9 = v25;
    }
  }
  return v6;
}

Referenced by:

MiBuildReservationCluster