PpmPerfFeedbackCounterRead

unsigned __int64 __fastcall PpmPerfFeedbackCounterRead(__int64 a1, __int64 a2, _DWORD *a3){
  void(__fastcall *v3)(_QWORD, __int64, __int64 *, __int64 *); 
  __int64 v5; 
  __int64 v7; 
  unsigned __int64 result; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  v3 = *(void(__fastcall **)(_QWORD, __int64, __int64 *, __int64 *))a1;
  v5 = *(_QWORD *)(a1 + 40);
  v12 = 0i64;
  v11 = 0i64;
  if( !*(_BYTE *)(a1 + 33) )
    return((__int64(__fastcall *)(__int64, _DWORD *))v3)(v5, a3);
  v3(v5, a2, &v11, &v12);
  v7 = *(_QWORD *)(a1 + 16);
  if( v11 == v7 )
  {
    result = *(unsigned int *)(a1 + 24);
  }
  else
  {
    v9 = *(_QWORD *)(a1 + 8);
    v10 = v12 - v9;
    result = (v12 - v9) * (unsigned __int64)*(unsigned __int8 *)(a1 + 35) / (v11 - v7);
    *(_QWORD *)(a1 + 16) = v11;
    *(_DWORD *)(a1 + 24) = result;
    *(_QWORD *)(a1 + 8) = v10 + v9;
  }
  *a3 = result;
  return result;
}

Referenced by:

PpmInstallFeedbackCounters