PfpPrefetchRequestPatchOffsets

__int64 __fastcall PfpPrefetchRequestPatchOffsets(__int64 a1){
  __int64 v1; 
  __int64 v2; 
  __int64 v3; 
  __int64 v4; 
  bool v5; 
  __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  __int64 result; 
  __int64 v10; 

  v1 = 0i64;
  for( *(_QWORD *)(a1 + 32) = a1 + *(unsigned int *)(a1 + 32);
        (unsigned int)v1 < *(_DWORD *)(a1 + 8);
        v1 = (unsigned int)(v1 + 1) )
  {
    v2 = *(_QWORD *)(a1 + 32);
    v3 = 5 * v1;
    v4 = 0i64;
    *(_QWORD *)(v2 + 8 * v3 + 32) = a1 + *(unsigned int *)(v2 + 40 * v1 + 32);
    v5 = (*(_DWORD *)(v2 + 40 * v1 + 12) & 0xFFFFFFFE) == 0;
    *(_QWORD *)(v2 + 8 * v3 + 16) = a1 + *(unsigned int *)(v2 + 40 * v1 + 16);
    if( !v5 )
    {
      do
      {
        v6 = *(_QWORD *)(v2 + 40 * v1 + 16) + 48 * v4;
        v7 = *(unsigned int *)(v6 + 32);
        if( (_DWORD)v7 )
          *(_QWORD *)(v6 + 32) = a1 + v7;
        if( *(_DWORD *)(v6 + 16) )
          *(_QWORD *)(v6 + 24) = a1 + *(unsigned int *)(v6 + 24);
        v4 = (unsigned int)(v4 + 1);
      }
      while( (unsigned int)v4 < *(_DWORD *)(v2 + 40 * v1 + 12) >> 1 );
    }
  }
  v8 = 0i64;
  result = a1 + *(unsigned int *)(a1 + 56);
  for( *(_QWORD *)(a1 + 56) = result; (unsigned int)v8 < *(_DWORD *)(a1 + 20); v8 = (unsigned int)(v8 + 1) )
  {
    v10 = *(_QWORD *)(a1 + 56);
    if( *(_DWORD *)(v10 + 40 * v8 + 24) )
    {
      result = a1 + *(unsigned int *)(v10 + 40 * v8 + 32);
      *(_QWORD *)(v10 + 40 * v8 + 32) = result;
    }
  }
  return result;
}

Referenced by:

PfpPrefetchRequestPerform