CmFcManagerNotifyFeatureUsage

__int64 __fastcall CmFcManagerNotifyFeatureUsage(__int64 a1, _QWORD *a2){
  char v3; 
  UINT8 CurrentIrql; 
  _ETHREAD *CurrentThread; 
  __int64 v6; 
  _INTERRUPT_VECTOR_DATA *v7; 
  unsigned __int32 *v8; 
  int v9; 

  v3 = 0;
  CurrentIrql = ObGetCurrentIrql();
  if( CurrentIrql < 2u )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    v3 = 1;
  }
  v6 = (unsigned int)RtlAcquireSwapReference((INT64 *)&CmpDummyThreadEvent + 174);
  v8 = (unsigned __int32 *)*((_QWORD *)&CmpDummyThreadEvent + v6 + 179);
  if( v8 )
  {
    v9 = RtlpFcAddDelayedUsageReportToBuffer(v8, a2);
    if( v9 >= 0 )
    {
      RtlReleaseSwapReference((_KINTERRUPT **)&CmpDummyThreadEvent + 174, (unsigned int)v6, v7);
      LODWORD(v6) = -1;
      if( *(&CmpDummyThreadEvent + 1424) )
      {
        if( CurrentIrql >= 2u )
          KeInsertQueueDpc((UINT64)&CmpDummyThreadEvent + 1448, 0i64, 0i64);
        else
          CmFcpWorkItemQueueWork((PWORK_QUEUE_ITEM)((char *)&CmpDummyThreadEvent + 1512));
      }
      v9 = 0;
    }
  }
  else
  {
    v9 = -1073741670;
  }
  if( (_DWORD)v6 != -1 )
    RtlReleaseSwapReference((_KINTERRUPT **)&CmpDummyThreadEvent + 174, (unsigned int)v6, v7);
  if( v3 )
    KeLeaveCriticalRegion();
  return(unsigned int)v9;
}

Referenced by:

RtlNotifyFeatureUsage