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