MiAdvanceVadHint

VOID __stdcall MiAdvanceVadHint(
        UINT64 StartingVpn,
        UINT64 EndingVpn,
        UINT64 InternalFlags,
        INT64 a4,
        UINT64 InternalFlagsa){
  UINT64 v6; 
  unsigned __int64 v7; 
  UINT64 v8; 
  UINT64 v9; 
  int v10; 
  int v11; 
  UINT64 v12; 
  UINT64 v13; 
  unsigned __int64 v14; 
  UINT64 v15; 
  UINT64 v16; 

  v6 = (StartingVpn >> 4) & 0xFFFFFFFFFFFFi64;
  v7 = 8i64 * (*(_QWORD *)(InternalFlags + 8) - *(&stru_140C4DB30 + 174));
  v8 = (EndingVpn >> 4) & 0xFFFFFFFFFFFFi64;
  if( v8 < v7 )
    return;
  v9 = v7 + *(_QWORD *)InternalFlags;
  if( v6 >= v9 )
    return;
  v10 = 0;
  v11 = 0;
  if( v6 < v7 )
  {
    v6 = v7;
    v11 = 1;
  }
  if( v8 >= v9 )
  {
    v8 = v9 - 1;
    v11 = 1;
  }
  v12 = v8 - v7;
  v13 = v6 - v7;
  v14 = v12 - v13 + 1;
  if( v12 == v13 && !v11 || v13 == *(_QWORD *)(InternalFlags + 16) )
  {
    v15 = v12 + 1;
    *(_QWORD *)(InternalFlags + 16) = v12 + 1;
  }
  else
  {
    v15 = v12 + 1;
  }
  v16 = *(_QWORD *)(InternalFlags + 32);
  if( v16 >= v15 || *(_QWORD *)(InternalFlags + 24) + v16 <= v13 )
  {
    if( v14 <= 1 )
      return;
    if( v11 )
      goto LABEL_14;
  }
  else
  {
    v10 = 1;
  }
  *(_QWORD *)(InternalFlags + 32) = v15;
LABEL_14:
  if( v14 > 1 && !v11 )
  {
    if( v10 )
    {
      if( v14 >= *(_QWORD *)(InternalFlags + 24) )
        v14 = *(_QWORD *)(InternalFlags + 24);
    }
    *(_QWORD *)(InternalFlags + 24) = v14;
  }
}

Referenced by:

MiMapViewOfDataSection