PfPrefetchRequestVerifyRanges
INT64 __fastcall PfPrefetchRequestVerifyRanges(INT64 a1, INT64 a2, UINT64 *a3, INT64 a4){
unsigned int v6;
int v7;
unsigned int v9;
unsigned int *v10;
__int64 v11;
unsigned int v12;
unsigned int v13;
unsigned __int64 *v14;
unsigned __int64 v15;
unsigned int v16;
unsigned __int64 v17;
__int64 v18;
v6 = *(_DWORD *)a3;
v7 = a4;
v9 = *((_DWORD *)a3 + 2);
if( !v6 )
{
if( v9 )
return 20000i64;
return 0i64;
}
if( !v9 )
return 21000i64;
if( v6 > *(_DWORD *)(a2 + 32) )
return 22000i64;
if( !PfRequestRangeCheck((unsigned int *)(a2 + 24), v9, 16 * v6, 8, 0) )
return 23000i64;
v11 = v10[2];
v12 = 0;
v13 = *v10;
v14 = (unsigned __int64 *)(a1 + v11);
v15 = 0i64;
v16 = 0;
if( !v13 )
return 0i64;
while( 1 )
{
v17 = *v14;
if( *v14 < v15 )
break;
if( ((v7 - 1) & (unsigned int)v17) != 0 )
return 24500i64;
v18 = *((unsigned int *)v14 + 2);
v15 = v17 + v18;
if( v17 + v18 < v17 )
return 24750i64;
if( !(_DWORD)v18 )
return 25000i64;
if( ((unsigned int)v18 >> 12) + v12 + 2 < v12 )
return 26000i64;
++v16;
v14 += 2;
v12 += ((unsigned int)v18 >> 12) + 2;
if( v16 >= v13 )
return 0i64;
}
return 24000i64;
}Referenced by:
PfPrefetchRequestVerify