MiProcessVaRangesInfoClass

INT64 __fastcall MiProcessVaRangesInfoClass(UINT64 a1, _OWORD *a2, INT64 a3, UINT64 a4){
  unsigned int v4; 
  unsigned int v5; 
  __int64 v8; 
  UINT64 v9; 
  UINT64 v10; 
  INT64 v11; 
  _DWORD *v12; 
  unsigned __int64 v13; 
  INT64 v14; 
  UINT64 v15; 
  __int64 v17; 
  INT64 v18; 
  UINT64 v19[2]; 
  int v20; 
  int v21; 
  unsigned int v22; 
  v22 = a4;
  v21 = a3;
  LODWORD(v18) = 0;
  v4 = 0;
  v5 = 0;
  if( a1 )
  {
    while( 2 )
    {
      *(_OWORD *)v19 = *a2;
      v8 = v19[1];
      v9 = v19[0];
      do
      {
        v10 = v9;
        v11 = MiObtainReferencedVadEx(v9, 0, &v18);
        v12 = (_DWORD *)v11;
        if( !v11 )
          return(unsigned int)v18;
        v20 = 0;
        v13 = *(unsigned int *)(v11 + 28) | ((unsigned __int64)*(unsigned __int8 *)(v11 + 33) << 32);
        if( ((v9 + v8 - 1) | 0xFFF) >> 12 > v13 )
        {
          v20 = 1;
          v17 = (v13 << 12) | 0xFFF;
          v8 = v9 - v17 + v8 - 1;
          v9 = v17 + 1;
        }
        if( !MiVadSupportsPrivateCommit(v11) || (unsigned int)MiIsVadLarge(v14) )
        {
          v4 = 1073741849;
        }
        else if( v21 == 1 )
        {
          MiWalkVaRange(v10, v15, (INT64)v12, 2i64, v22);
        }
        else if( (v12[12] & 0x5100000) == 68157440 )
        {
          v4 = -1073741637;
        }
        else
        {
          MiMoveDirtyBitsToPfns(v10, v15, 0i64, 2);
        }
        MiUnlockAndDereferenceVad(v12);
      }
      while( v20 == 1 );
      ++v5;
      ++a2;
      if( v5 < a1 )
        continue;
      break;
    }
  }
  return v4;
}

Referenced by:

MmSetPriorityVaRanges
NtSetInformationVirtualMemory