IopIrpExtensionControl

VOID __stdcall IopIrpExtensionControl(UINT64 Flags, UINT64 Enable){
  int v2; 
  int v3; 
  bool v4; 
  UINT8 v5; 
  _KLOCK_QUEUE_HANDLE LockHandle; 

  v2 = Enable;
  v3 = Flags;
  memset(&LockHandle, 0, sizeof(LockHandle));
  KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C452E0 + 213, &LockHandle);
  if( v2 == 1 )
  {
    v4 = *(&stru_140CF2E80 + 1626) == 0;
    *(&stru_140CF2E80 + 1626) |= v3;
    if( (v3 & 1) != 0 )
      ++*(&stru_140CF2E80 + 1627);
    if( (v3 & 2) != 0 )
      ++*(&stru_140CF2E80 + 1628);
    if( v4 )
    {
      v5 = 1;
LABEL_16:
      IopUpdateFunctionPointers(4ui64, v5, 1u);
    }
  }
  else
  {
    if( (v3 & 1) != 0 && !--*(&stru_140CF2E80 + 1627) )
      *(&stru_140CF2E80 + 1626) &= ~1u;
    if( (v3 & 2) != 0 && !--*(&stru_140CF2E80 + 1628) )
      *(&stru_140CF2E80 + 1626) &= ~2u;
    if( !*(&stru_140CF2E80 + 1626) )
    {
      v5 = 0;
      goto LABEL_16;
    }
  }
  KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
  __writecr8(LockHandle.OldIrql);
}

Referenced by:

IoRegisterIoTracking
IoUnregisterIoTracking
IopEtwEnableCallback