EmonResumeProfiling

NTSTATUS __stdcall EmonResumeProfiling(){
  unsigned int v0; 
  __int64 v1; 
  __int64 v2; 
  unsigned int v3; 
  int *v4; 
  __int64 v5; 
  unsigned __int64 v6; 
  unsigned int v7; 
  unsigned __int64 v8; 
  int *v9; 

  v0 = 0;
  LODWORD(v1) = *(&CmpDummyThreadEvent + 1223);
  v2 = *(&CmpDummyThreadEvent + 620) + 16i64 * *(&CmpDummyThreadEvent + 1217) * KeGetPcr()->Prcb.Number;
  if( *(&CmpDummyThreadEvent + 1223) )
  {
    v3 = 390;
    v4 = (int *)v2;
    v0 = *(&CmpDummyThreadEvent + 1223);
    v5 = *(&CmpDummyThreadEvent + 1223);
    do
    {
      if( *v4 < 2 )
      {
        v6 = __readmsr(v3);
        v1 = (unsigned int)v6 | 0x400000i64;
        __writemsr(v3, v1);
      }
      ++v3;
      v4 += 4;
      --v5;
    }
    while( v5 );
  }
  if( *(&CmpDummyThreadEvent + 1216) >= 2u )
  {
    v7 = *(&CmpDummyThreadEvent + 1217);
    v8 = __readmsr(0x38Fu);
    if( v0 < *(&CmpDummyThreadEvent + 1217) )
    {
      v9 = (int *)(v2 + 16i64 * v0);
      do
      {
        if( *v9 < 2 )
          _bittestandset64((__int64 *)&v8, v0 - *(&CmpDummyThreadEvent + 1223) + 32);
        ++v0;
        v9 += 4;
      }
      while( v0 < v7 );
    }
    LODWORD(v1) = v8;
    __writemsr(0x38Fu, v8);
  }
  return v1;
}

Referenced by:

No references.