KiEndDebugAccumulation

VOID __stdcall KiEndDebugAccumulation(_KPRCB *Prcb){
  __int64 v2; 
  unsigned __int64 v3; 
  __int64 v4; 
  __int64 v5; 
  unsigned int FrequencyBucket; 
  if( !*((_BYTE *)Prcb + 32) && !PoAllProcIntrDisabled )
  {
    *((_BYTE *)Prcb + 32) = 1;
    v2 = *((_QWORD *)Prcb + 1);
    v3 = __rdtsc();
    v4 = *((_QWORD *)Prcb + 4056);
    v5 = v3 - v4;
    *((_QWORD *)Prcb + 4071) += v5;
    if( (*(_BYTE *)(v2 + 2) & 0x20) != 0 )
    {
      FrequencyBucket = PoGetFrequencyBucket((__int64)Prcb);
      *((_QWORD *)Prcb + 2 * FrequencyBucket + *((unsigned __int8 *)Prcb + 33208) + 4072) += v5;
      v4 = *((_QWORD *)Prcb + 4056);
      v2 = *((_QWORD *)Prcb + 1);
    }
    *((_QWORD *)Prcb + 4056) = v5 + v4;
    if( (*(_BYTE *)(v2 + 2) & 2) != 0 )
      KiBeginCounterAccumulation((_KTHREAD *)v2, 0);
    *((_BYTE *)Prcb + 32) = 0;
  }
}

Referenced by:

KeThawExecution
KiFreezeTargetExecution