EmonDisableMonitoring
INT64 __fastcall EmonDisableMonitoring(INT64 a1, UINT64 *a2){
INT64 result;
_QWORD *v3;
unsigned int i;
__int64 v5;
__int64 v6;
result = (unsigned int)(EmonNumberCounters * *((_DWORD *)KeGetPcr() + 105));
v3 = (_QWORD *)(EmonCounterStatus + 16i64 * (unsigned int)result);
if( a2 )
{
i = *(_DWORD *)a2;
if( (*(_DWORD *)a2 & 0x40000000) != 0 )
i = EmonNumberArchCounters + (i & 0xBFFFFFFF);
LABEL_8:
EmonConfigureCounter(i, 0, 0i64, 0i64, 0);
v5 = EmonCounterStatus + 16i64 * (unsigned int)(EmonNumberCounters * *((_DWORD *)KeGetPcr() + 105));
v6 = 2i64 * i;
*(_DWORD *)(v5 + 8 * v6 + 4) = 0;
*(_DWORD *)(v5 + 8 * v6) = 3;
return(unsigned int)_InterlockedExchangeAdd(&HalpPmuInUse, 0xFFFFFFFE);
}
for( i = 0; i < EmonNumberCounters; v3 += 2 )
{
if( *v3 == __PAIR64__(a1, 0) )
break;
++i;
}
if( i != EmonNumberCounters )
goto LABEL_8;
return result;
}Referenced by:
No references.