KiIntSteerDisable

__int64 __fastcall KiIntSteerDisable(__int64 *a1, unsigned int a2){
  __int64 *v2; 
  _QWORD *v4; 
  UINT64 v5; 
  unsigned __int8 v6; 
  unsigned __int64 v7; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  INT64 *v11; 
  _QWORD *v12; 
  INT64 v13; 
  INT64 *v14; 
  v2 = a1;
  v4 = *(_QWORD **)(*a1 + 168);
  if( v4 )
  {
    KiIntSteerLogState(*(_QWORD *)(*a1 + 168), (EVENT_DESCRIPTOR *)&PPM_ETW_INTERRUPT_STEERING_STATE_DISCONNECT);
    KeAcquireSpinLockRaiseToDpc(&KiIntTrackSpinlock, v5);
    v7 = v6;
    if( a2 )
    {
      v8 = a2;
      do
      {
        v9 = *v2;
        _InterlockedAnd((volatile signed __int32 *)(*v2 + 104), 0xFFFFFFFB);
        *(_QWORD *)(v9 + 168) = 0i64;
        ++v2;
        --v8;
      }
      while( v8 );
    }
    v10 = *v4;
    v11 = (INT64 *)v4[2];
    v12 = (_QWORD *)v4[1];
    if( *(_QWORD **)(*v4 + 8i64) == v4 && (_QWORD *)*v12 == v4 )
    {
      *v12 = v10;
      *(_QWORD *)(v10 + 8) = v12;
      ExFreePoolWithTag(v4, 0x6B725449u);
      if( (INT64 *)v11[2] != v11 + 2 )
      {
LABEL_11:
        KxReleaseSpinLock(&KiIntTrackSpinlock);
        __writecr8(v7);
        return 0i64;
      }
      --KiIntTrackRootCount;
      v13 = *v11;
      v14 = (INT64 *)v11[1];
      if( *(INT64 **)(*v11 + 8) == v11 && (INT64 *)*v14 == v11 )
      {
        *v14 = v13;
        *(_QWORD *)(v13 + 8) = v14;
        KiIntSteerUpdateDeviceInterruptMask((INT64)(v11 + 20), 1i64, v13);
        ExFreePoolWithTag(v11, 0x6B725449u);
        goto LABEL_11;
      }
    }
    __fastfail(3u);
  }
  return 0i64;
}

Referenced by:

KeDisconnectInterrupt