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