Amd64DisableMonitoring
UINT64 __fastcall Amd64DisableMonitoring(INT64 a1, UINT64 *a2){
UINT64 result;
_QWORD *v3;
unsigned int i;
unsigned __int64 v5;
__int64 v6;
int v7;
LODWORD(result) = *((_DWORD *)KeGetPcr() + 105);
v3 = (_QWORD *)(Amd64CounterStatus + ((unsigned __int64)(unsigned int)result << 6));
if( a2 )
{
i = *(_DWORD *)a2;
LABEL_7:
Amd64ConfigureCounter(i, 0, 0i64, 0i64, 0);
v5 = Amd64CounterStatus + ((unsigned __int64)*((unsigned int *)KeGetPcr() + 105) << 6);
v6 = 2i64 * i;
*(_DWORD *)(v5 + 8 * v6 + 4) &= v7;
*(_DWORD *)(v5 + 8 * v6) = 3;
return(unsigned int)_InterlockedExchangeAdd(&HalpPmuInUse, v7 - 2);
}
for( i = 0; i < 4; ++i )
{
if( *v3 == __PAIR64__(a1, 0) )
break;
v3 += 2;
}
if( i != 4 )
goto LABEL_7;
return result;
}Referenced by:
No references.