PfPrefetchRequestPrepareForVerify

__int64 __fastcall PfPrefetchRequestPrepareForVerify(unsigned int *a1, unsigned int a2, __int64 a3){
  unsigned __int64 v3; 
  unsigned int v5; 
  unsigned __int64 v6; 
  unsigned int v7; 
  unsigned int v8; 
  unsigned __int64 v9; 
  unsigned int v10; 
  unsigned int v11; 
  unsigned int v12; 
  unsigned int v13; 
  unsigned int v14; 
  unsigned __int64 v15; 
  unsigned int v16; 
  unsigned int v17; 
  unsigned int v18; 
  unsigned int v20; 
  v3 = a2;
  *(_OWORD *)a3 = 0i64;
  *(_OWORD *)(a3 + 16) = 0i64;
  v5 = 128;
  *(_OWORD *)(a3 + 32) = 0i64;
  *(_QWORD *)(a3 + 48) = 0i64;
  *(_DWORD *)(a3 + 56) = 0;
  v6 = a1[2];
  v7 = a1[8];
  if( (_DWORD)v6 )
  {
    if( !v7 )
      return 4000i64;
  }
  else if( v7 )
  {
    return 4100i64;
  }
  if( v7 )
  {
    if( v7 < 0x80 )
      return 4200i64;
    if( v6 > a2 / 0x28ui64 )
      return 4300i64;
    v8 = 40 * v6;
    if( v7 >= a2 || v8 >= a2 || v7 > a2 - v8 )
      return 4400i64;
    v5 = v7 + v8;
    *(_DWORD *)a3 = v7;
    *(_DWORD *)(a3 + 4) = v7 + v8;
    *(_DWORD *)(a3 + 8) = a1[2];
  }
  v9 = a1[3];
  v10 = a1[10];
  if( (_DWORD)v9 )
  {
    if( !v10 )
      return 5000i64;
    if( v10 < v5 )
      return 5200i64;
    if( v9 > a2 / 0x30ui64 )
      return 5300i64;
    v11 = 48 * v9;
    if( v10 >= a2 || v11 >= a2 || v10 > a2 - v11 )
      return 5400i64;
    v5 = v10 + v11;
    *(_DWORD *)(a3 + 12) = v10;
    *(_DWORD *)(a3 + 16) = v10 + v11;
    *(_DWORD *)(a3 + 20) = a1[3];
  }
  else if( v10 )
  {
    return 5100i64;
  }
  v12 = a1[4];
  v13 = a1[12];
  if( v12 )
  {
    if( !v13 )
      return 6000i64;
    if( v13 < v5 )
      return 6200i64;
    if( v12 > (unsigned int)v3 >> 4 )
      return 6300i64;
    v14 = 16 * v12;
    if( v13 >= (unsigned int)v3 || v14 >= (unsigned int)v3 || v13 > (unsigned int)v3 - v14 )
      return 6400i64;
    v5 = v13 + v14;
    *(_DWORD *)(a3 + 24) = v13;
    *(_DWORD *)(a3 + 28) = v13 + v14;
    *(_DWORD *)(a3 + 32) = a1[4];
  }
  else if( v13 )
  {
    return 6100i64;
  }
  v15 = a1[5];
  v16 = a1[14];
  if( (_DWORD)v15 )
  {
    if( !v16 )
      return 7000i64;
    if( v16 < v5 )
      return 7200i64;
    if( v15 > v3 / 0x28 )
      return 7300i64;
    v20 = 40 * v15;
    if( v16 >= (unsigned int)v3 || v20 >= (unsigned int)v3 || v16 > (unsigned int)v3 - v20 )
      return 7400i64;
    v5 = v16 + v20;
    *(_DWORD *)(a3 + 36) = v16;
    *(_DWORD *)(a3 + 40) = v16 + v20;
    *(_DWORD *)(a3 + 44) = a1[5];
  }
  else if( v16 )
  {
    return 7100i64;
  }
  v17 = a1[6];
  v18 = a1[16];
  if( v17 )
  {
    if( v18 )
    {
      if( v18 < v5 )
      {
        return 8200i64;
      }
      else
      {
        if( v18 < (unsigned int)v3 && v17 < (unsigned int)v3 && v18 <= (unsigned int)v3 - v17 )
        {
          v5 = v18 + v17;
          *(_DWORD *)(a3 + 48) = v18;
          *(_DWORD *)(a3 + 52) = v18 + v17;
          return(_DWORD)v3 != v5 ? 0x2328 : 0;
        }
        return 8300i64;
      }
    }
    else
    {
      return 8000i64;
    }
  }
  else
  {
    if( !v18 )
      return(_DWORD)v3 != v5 ? 0x2328 : 0;
    return 8100i64;
  }
}

Referenced by:

PfPrefetchRequestVerify