HalpInterruptSetLineStateInternal

NTSTATUS __stdcall HalpInterruptSetLineStateInternal(
        _REGISTERED_INTERRUPT_CONTROLLER *Controller,
        _INTERRUPT_LINE *Line,
        _INTERRUPT_LINE_STATE *LineState){
  unsigned int Flags; 
  unsigned int v4; 
  NTSTATUS result; 
  __int16 v7; 

  Flags = LineState->Flags;
  v4 = Flags | 1;
  if( (Flags & 0x30) != 16 )
    v4 = LineState->Flags & 0xFFFFFFFE;
  LineState->Flags = v4;
  if( (Controller->Capabilities & 0x200) != 0 )
  {
    _disable();
    result = ((__int64(__fastcall *)(void *, _INTERRUPT_LINE *))Controller->FunctionTable.SetLineState)(
               Controller->InternalData,
               Line);
    if( (v7 & 0x200) != 0 )
      _enable();
  }
  else
  {
    result = ((__int64(__fastcall *)(void *, _INTERRUPT_LINE *))Controller->FunctionTable.SetLineState)(
               Controller->InternalData,
               Line);
  }
  if( result < 0 )
  {
    Controller->ProblemStatus = result;
    *(&CmpDummyThreadEvent + 1789) = 7;
    Controller->Problem = InterruptProblemSetLineStateFailed;
    Controller->ProblemSourceFile = "minkernel\\hals\\lib\\interrupts\\common\\intsup.c";
    Controller->ProblemSourceLine = 3150;
  }
  return result;
}

Referenced by:

HalDisableInterrupt
HalpConnectThermalInterrupt
HalpInitializeCmciVector
HalpInitializeDeferredErrorVector
HalpInterruptEnablePerformanceEvents
HalpInterruptMaskAcpi
HalpInterruptMaskLevelTriggeredLines
HalpInterruptRemapFixedLines
HalpInterruptRestoreClock
HalpInterruptRestoreController
HalpInterruptServiceActiveBoth
HalpInterruptSetDestinationInternal
HalpInterruptSetLineState
HalpMaskInterrupt
HalpUnmaskInterrupt