HalpInterruptFindLines

_LIST_ENTRY *__fastcall HalpInterruptFindLines(unsigned int *a1){
  _REGISTERED_INTERRUPT_CONTROLLER *v1; 
  __int64 v2; 
  _DWORD *v3; 
  _LIST_ENTRY *p_LinesHead; 
  _LIST_ENTRY *Flink; 
  int v6; 
  _LIST_ENTRY *v7; 
  int Flink_high; 

  v1 = HalpInterruptLookupController(*a1);
  if( !v1 )
    return 0i64;
  p_LinesHead = &v1->LinesHead;
  Flink = v1->LinesHead.Flink;
  if( Flink == &v1->LinesHead )
    return 0i64;
  v6 = *(_DWORD *)(v2 + 4);
  while( 1 )
  {
    v7 = Flink;
    Flink = Flink->Flink;
    Flink_high = HIDWORD(v7[1].Flink);
    if( Flink_high <= v6 && SLODWORD(v7[1].Blink) > v6 )
      break;
    if( Flink == p_LinesHead )
      return 0i64;
  }
  if( v3 )
    *v3 = v6 - Flink_high;
  return v7;
}

Referenced by:

HalFixInterruptLine
HalpConnectThermalInterrupt
HalpInitializeCmciVector
HalpInitializeDeferredErrorVector
HalpInterruptEnableNmi
HalpInterruptEnablePerformanceEvents
HalpInterruptFindControllerAndLineState
HalpInterruptGetHighestPriorityInterrupt
HalpInterruptIsCmciSupported
HalpInterruptIsDeferredErrorSupported
HalpInterruptLineToGsi
HalpInterruptMaskAcpi
HalpInterruptRestoreClock
HalpInterruptSetDestinationInternal
HalpInterruptSetLineState
HalpInterruptSetRemappedLineStateInternal
HalpInterruptUnmap