HalpInterruptFindControllerAndLineState

NTSTATUS __stdcall HalpInterruptFindControllerAndLineState(
        UINT64 Gsiv,
        _REGISTERED_INTERRUPT_CONTROLLER **ControllerOut,
        _INTERRUPT_LINE_STATE **LineStateOut){
  _INTERRUPT_LINE_STATE *Blink; 
  NTSTATUS result; 
  _REGISTERED_INTERRUPT_CONTROLLER *v7; 
  _LIST_ENTRY *Lines; 
  UINT64 Identifier[3]; 

  Blink = 0i64;
  Identifier[0] = 0i64;
  if( HalpInterruptGsiToLine(Gsiv, (_INTERRUPT_LINE *)Identifier) < 0 )
  {
    result = -1073741811;
LABEL_7:
    *(&CmpDummyThreadEvent + 1789) = 18;
    goto LABEL_8;
  }
  v7 = HalpInterruptLookupController(LODWORD(Identifier[0]));
  if( v7 )
  {
    Lines = HalpInterruptFindLines((unsigned int *)Identifier);
    if( Lines )
    {
      *ControllerOut = v7;
      result = 0;
      Blink = (_INTERRUPT_LINE_STATE *)Lines[2].Blink;
      goto LABEL_10;
    }
    *(_QWORD *)&v7->Problem = 18i64;
    v7->ProblemSourceFile = "minkernel\\hals\\lib\\interrupts\\common\\connect.c";
    result = -1073741275;
    v7->ProblemSourceLine = 643;
    goto LABEL_7;
  }
  *(&CmpDummyThreadEvent + 1789) = 17;
  result = -1073741275;
LABEL_8:
  *ControllerOut = 0i64;
LABEL_10:
  *LineStateOut = Blink;
  return result;
}

Referenced by:

HalpInterruptGetRemappedLineState
HalpInterruptSetRemappedDestinationHv