EmonReleaseReservedCounters
VOID __stdcall EmonReleaseReservedCounters(INT64 a1, UINT64 a2){
__int64 v3;
unsigned int v4;
__int64 v5;
unsigned __int8 CurrentIrql;
char v7;
__int64 v8;
_GROUP_AFFINITY v10;
_GROUP_AFFINITY PreviousAffinity;
v3 = (unsigned int)(a1 * *(&CmpDummyThreadEvent + 1217));
v10 = 0i64;
v4 = KiProcessorIndexToNumberMappingTable[(unsigned int)a1];
v10.Group = v4 >> 6;
v5 = *(&CmpDummyThreadEvent + 620) + 16 * v3;
v10.Mask = 1i64 << (v4 & 0x3F);
PreviousAffinity = 0i64;
KeSetSystemGroupAffinityThread(&v10, &PreviousAffinity);
CurrentIrql = KeGetCurrentIrql();
__writecr8(0xFui64);
__writemsr(0x390u, a2);
while( _BitScanForward64((unsigned __int64 *)&v8, a2) )
{
v7 = v8;
if( (unsigned int)v8 >= *(&CmpDummyThreadEvent + 1223) )
v8 = (unsigned int)(v8 + *(&CmpDummyThreadEvent + 1223) - 32);
a2 ^= 1i64 << v7;
*(_DWORD *)(v5 + 16 * v8) = 3;
}
__writecr8(CurrentIrql);
KeRevertToUserGroupAffinityThread(&PreviousAffinity);
}Referenced by:
EmonReleaseProfileResourcesInternal