HalpInterruptFindBestRouting

NTSTATUS __stdcall HalpInterruptFindBestRouting(
        _INTERRUPT_LINE *SourceLine,
        _INTERRUPT_LINE UltimateDestination,
        _INTERRUPT_LINE *OutputRouting){
  _REGISTERED_INTERRUPT_CONTROLLER *v3; 
  __int64 v4; 
  _DWORD *v5; 
  NTSTATUS v6; 
  _LIST_ENTRY *p_OutputLinesHead; 
  int v8; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v10; 
  int Line; 

  Line = UltimateDestination.Line;
  v3 = HalpInterruptLookupController(SourceLine->UnitId);
  v6 = 0;
  if( !v3 )
    return -1073741811;
  p_OutputLinesHead = &v3->OutputLinesHead;
  v8 = 0;
  Flink = v3->OutputLinesHead.Flink;
  v10 = Flink;
  if( Flink != &v3->OutputLinesHead )
  {
    do
    {
      ++v8;
      if( LODWORD(v10[1].Flink) == (_DWORD)v4 && SHIDWORD(v10[1].Flink) <= Line && SLODWORD(v10[1].Blink) > Line )
        break;
      v10 = v10->Flink;
    }
    while( v10 != p_OutputLinesHead );
  }
  if( v10 == p_OutputLinesHead )
  {
    if( v8 == 1 )
    {
      *v5 = Flink[1].Flink;
      v5[1] = HIDWORD(Flink[1].Flink);
    }
    else
    {
      v3->ProblemSourceLine = 3566;
      v3->ProblemSourceFile = "minkernel\\hals\\lib\\interrupts\\common\\connect.c";
      v6 = -1073741823;
      *(&CmpDummyThreadEvent + 1789) = 23;
      *(_QWORD *)&v3->Problem = 23i64;
    }
  }
  else
  {
    *(_QWORD *)v5 = v4;
  }
  return v6;
}

Referenced by:

HalpInterruptRemap
HalpInterruptSetDestinationInternal
HalpInterruptSetLineState