EmonDisableMonitoring

NTSTATUS __stdcall EmonDisableMonitoring(INT64 a1, UINT64 *a2){
  NTSTATUS result; 
  _QWORD *v3; 
  unsigned int i; 
  __int64 v5; 
  __int64 v6; 

  result = *(&CmpDummyThreadEvent + 1217) * KeGetPcr()->Prcb.Number;
  v3 = (_QWORD *)(*(&CmpDummyThreadEvent + 620) + 16i64 * (unsigned int)result);
  if( a2 )
  {
    i = *(_DWORD *)a2;
    if( (*(_DWORD *)a2 & 0x40000000) != 0 )
      i = *(&CmpDummyThreadEvent + 1223) + (i & 0xBFFFFFFF);
LABEL_8:
    EmonConfigureCounter(i, 0, 0i64, 0i64, 0);
    v5 = *(&CmpDummyThreadEvent + 620) + 16i64 * *(&CmpDummyThreadEvent + 1217) * KeGetPcr()->Prcb.Number;
    v6 = 2i64 * i;
    *(_DWORD *)(v5 + 8 * v6 + 4) = 0;
    *(_DWORD *)(v5 + 8 * v6) = 3;
    return _InterlockedExchangeAdd((_DWORD *)&stru_140CF2E80 + 1614, 0xFFFFFFFE);
  }
  for( i = 0; i < *(&CmpDummyThreadEvent + 1217); v3 += 2 )
  {
    if( *v3 == __PAIR64__(a1, 0) )
      break;
    ++i;
  }
  if( i != *(&CmpDummyThreadEvent + 1217) )
    goto LABEL_8;
  return result;
}

Referenced by:

No references.