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