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.