PpmParkComputeSnapStatistics
CHAR __stdcall PpmParkComputeSnapStatistics(INT64 a1, UINT8 a2, UINT8 a3, INT64 a4, _BYTE *a5, _BYTE *a6, _BYTE *a7){
unsigned __int64 v7;
__int64 v8;
__int64 v9;
int v10;
unsigned __int64 v11;
int i;
__int64 v13;
int v14;
unsigned __int64 j;
int k;
int v17;
unsigned __int64 v18;
__int64 v19;
v7 = *(_QWORD *)(a4 + 24) - *(_QWORD *)(a4 + 32);
v8 = a3;
v9 = a2;
if( (_DWORD)a1 )
v7 /= (unsigned int)(a1 + 1);
if( !v7 )
return 0;
v10 = *(_DWORD *)(a4 + 40);
v11 = 0i64;
for( i = 0; i < v10; v10 = *(_DWORD *)(a4 + 40) )
{
v13 = i++;
*(_QWORD *)(8 * v13 + *(_QWORD *)(a4 + 16)) = *(_QWORD *)(*(_QWORD *)a4 + 8 * v13)
- *(_QWORD *)(*(_QWORD *)(a4 + 8) + 8 * v13);
}
v14 = v10 - 1;
for( j = 0i64; v14 >= 0; --v14 )
{
j += *(_QWORD *)(*(_QWORD *)(a4 + 16) + 8i64 * v14);
if( j >= v7 - v7 * v8 / 0x64 )
break;
}
*a7 = v14;
if( __PAIR128__((unsigned __int64)a6, (unsigned __int64)a5) != 0 )
{
for( k = *(_DWORD *)(a4 + 40) - 1; k >= 0; --k )
{
v11 += *(_QWORD *)(*(_QWORD *)(a4 + 16) + 8i64 * k);
if( v11 >= v7 - v7 * v9 / 0x64 )
break;
}
if( a5 )
*a5 = k;
if( a6 )
{
if( k > 0 )
*a6 = 100i64 * *(_QWORD *)(*(_QWORD *)(a4 + 16) + 8i64 * k) / v7;
else
*a6 = 0;
}
}
*(_QWORD *)(a4 + 32) += v7;
v17 = *(_DWORD *)(a4 + 40) - 1;
if( v17 >= 0 )
{
while( 1 )
{
v18 = *(_QWORD *)(*(_QWORD *)(a4 + 16) + 8i64 * v17);
v19 = *(_QWORD *)(a4 + 8);
if( v18 > v7 )
break;
*(_QWORD *)(v19 + 8i64 * v17) += v18;
v7 -= v18;
if( --v17 < 0 )
return 1;
}
*(_QWORD *)(v19 + 8i64 * v17) += v7;
}
return 1;
}Referenced by:
PpmParkRecordNodeStatistics