HalpInterruptFindBestRouting

INT64 __fastcall HalpInterruptFindBestRouting(UINT64 *a1, INT64 a2){
  ULONG_PTR *v2; 
  __int64 v3; 
  _DWORD *v4; 
  unsigned int v5; 
  ULONG_PTR *v6; 
  int v7; 
  ULONG_PTR v8; 
  ULONG_PTR v9; 
  int v11; 
  v11 = HIDWORD(a2);
  v2 = HalpInterruptLookupController(*(_DWORD *)a1);
  v5 = 0;
  if( v2 )
  {
    v6 = v2 + 32;
    v7 = 0;
    v8 = v2[32];
    v9 = v8;
    if( (ULONG_PTR *)v8 != v2 + 32 )
    {
      do
      {
        ++v7;
        if( *(_DWORD *)(v9 + 16) == (_DWORD)v3 && *(_DWORD *)(v9 + 20) <= v11 && *(_DWORD *)(v9 + 24) > v11 )
          break;
        v9 = *(_QWORD *)v9;
      }
      while( (ULONG_PTR *)v9 != v6 );
    }
    if( (ULONG_PTR *)v9 == v6 )
    {
      if( v7 == 1 )
      {
        *v4 = *(_DWORD *)(v8 + 16);
        v4[1] = *(_DWORD *)(v8 + 20);
      }
      else
      {
        *((_DWORD *)v2 + 78) = 3566;
        v2[38] = (ULONG_PTR)"minkernel\\hals\\lib\\interrupts\\common\\connect.c";
        v5 = -1073741823;
        HalpInterruptLastProblem = 23;
        *(ULONG_PTR *)((char *)v2 + 292) = 23i64;
      }
    }
    else
    {
      *(_QWORD *)v4 = v3;
    }
  }
  else
  {
    return(unsigned int)-1073741811;
  }
  return v5;
}

Referenced by:

HalpInterruptRemap
HalpInterruptSetDestinationInternal
HalpInterruptSetLineState