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