MmManagePartitionCreateLargePages

INT64 __fastcall MmManagePartitionCreateLargePages(INT64 a1, INT64 a2, INT8 a3){
  unsigned int v5; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  unsigned int LargestPageIndex; 
  unsigned int v9; 
  unsigned int v10; 
  __int64 *v11; 
  unsigned __int64 v12; 
  v5 = 0;
  if( SeSinglePrivilegeCheck(*(_QWORD *)&SeLockMemoryPrivilege, a3) )
  {
    if( !*(_DWORD *)a2 && *(_DWORD *)(a2 + 4) < (unsigned int)(unsigned __int16)KeNumberNodes )
    {
      v6 = *(_QWORD *)(a2 + 8);
      if( (v6 & 0xFFF) == 0 )
      {
        v7 = v6 >> 12;
        LargestPageIndex = MiGetLargestPageIndex();
        v10 = LargestPageIndex;
        if( LargestPageIndex < 3 )
        {
          v11 = &MiLargePageSizes[LargestPageIndex];
          do
          {
            if( *v11 == v7 )
              break;
            ++v10;
            ++v11;
          }
          while( v10 < 3 );
        }
        if( v10 == 3 || !v10 )
          return(unsigned int)-1073741637;
        v12 = *(_QWORD *)(a2 + 16);
        if( v12 && v12 < 0xFFFFFFFFFFFFFFFFui64 / v7 )
        {
          *(_QWORD *)(a2 + 24) = MiRebuildLargePage(*(_MI_PARTITION **)a1, v9) / v7;
          return v5;
        }
      }
    }
    return(unsigned int)-1073741811;
  }
  else
  {
    return(unsigned int)-1073741727;
  }
}

Referenced by:

NtManagePartition