HalpInterruptFindControllerAndLineState

__int64 __fastcall HalpInterruptFindControllerAndLineState(unsigned int a1, ULONG_PTR **a2, ULONG_PTR *a3){
  ULONG_PTR v4; 
  __int64 result; 
  ULONG_PTR *v7; 
  ULONG_PTR *Lines; 
  _QWORD v9[3]; 
  v4 = 0i64;
  v9[0] = 0i64;
  if( (int)HalpInterruptGsiToLine(a1, v9) < 0 )
  {
    result = 3221225485i64;
LABEL_7:
    HalpInterruptLastProblem = 18;
    goto LABEL_8;
  }
  v7 = HalpInterruptLookupController(v9[0]);
  if( v7 )
  {
    Lines = HalpInterruptFindLines((int *)v9);
    if( Lines )
    {
      *a2 = v7;
      result = 0i64;
      v4 = Lines[5];
      goto LABEL_10;
    }
    *(ULONG_PTR *)((char *)v7 + 292) = 18i64;
    v7[38] = (ULONG_PTR)"minkernel\\hals\\lib\\interrupts\\common\\connect.c";
    result = 3221226021i64;
    *((_DWORD *)v7 + 78) = 643;
    goto LABEL_7;
  }
  HalpInterruptLastProblem = 17;
  result = 3221226021i64;
LABEL_8:
  *a2 = 0i64;
LABEL_10:
  *a3 = v4;
  return result;
}

Referenced by:

HalpInterruptGetRemappedLineState
HalpInterruptSetRemappedDestinationHv