EmonCompleteInitializeProfiling

VOID __stdcall EmonCompleteInitializeProfiling(INT64 a1){
  __int64 v1; 
  __int64 v2; 
  PROCESSOR_PROFILE_CONTROL_AREA *v3; 
  size_t v4; 
  unsigned __int64 v5; 
  unsigned __int64 *PebsFixedCounterReset; 
  unsigned int MaximumRegisteredProcessorCount; 
  unsigned int PebsBufferBase; 
  PROCESSOR_PROFILE_CONTROL_AREA *v9; 

  if( *(&CmpDummyThreadEvent + 4921) )
  {
    LODWORD(v1) = KeGetPcr()->Prcb.Number;
    v2 = 4096i64;
    if( ((_DWORD)v1
       || (MaximumRegisteredProcessorCount = HalpQueryMaximumRegisteredProcessorCount(),
           KeAllocateProcessorProfileStructures(
             MaximumRegisteredProcessorCount,
             4096i64,
             (PROCESSOR_PROFILE_CONTROL_AREA **)&CmpDummyThreadEvent + 614,
             1) >= 0))
      && (v9 = (PROCESSOR_PROFILE_CONTROL_AREA *)(*(&CmpDummyThreadEvent + 614) + 160 * v1),
          KeAllocateProcessorProfileStructures(0i64, 0i64, &v9, 0) >= 0) )
    {
      if( *(&CmpDummyThreadEvent + 1245) )
        v2 = *(&CmpDummyThreadEvent + 1245) * (0x1000u / *(&CmpDummyThreadEvent + 1245));
      v3 = v9;
      v4 = 8 * *(&CmpDummyThreadEvent + 1223);
      if( *(&CmpDummyThreadEvent + 4920) )
      {
        v5 = v9->PebsDsSaveArea.As32Bit.PebsGpCounterReset[0];
        v9->PebsDsSaveArea.As32Bit.PebsGpCounterReset[1] = v5;
        v3->PebsDsSaveArea.As32Bit.PebsGpCounterReset[2] = v2 + v5;
        v3->PebsDsSaveArea.As32Bit.PebsGpCounterReset[3] = v5;
        memset(v3->PebsDsSaveArea.As64Bit.PebsGpCounterReset, 0i64, v4);
        PebsFixedCounterReset = v3->PebsDsSaveArea.As64Bit.PebsFixedCounterReset;
      }
      else
      {
        PebsBufferBase = v9->PebsDsSaveArea.As32Bit.PebsBufferBase;
        v9->PebsDsSaveArea.As32Bit.PebsIndex = PebsBufferBase;
        v3->PebsDsSaveArea.As32Bit.PebsAbsoluteMaximum = PebsBufferBase + v2;
        v3->PebsDsSaveArea.As32Bit.PebsInterruptThreshold = PebsBufferBase;
        memset(&v3->PebsDsSaveArea.As64Bit.PebsBufferBase, 0i64, v4);
        PebsFixedCounterReset = v3->PebsDsSaveArea.As32Bit.PebsFixedCounterReset;
      }
      memset(PebsFixedCounterReset, 0i64, 8 * *(&CmpDummyThreadEvent + 1244));
      __writemsr(0x600u, (unsigned __int64)v3);
    }
    else
    {
      *(&CmpDummyThreadEvent + 4921) = 0;
    }
  }
}

Referenced by:

No references.