HalpInterruptSelectController

NTSTATUS __stdcall HalpInterruptSelectController(_REGISTERED_INTERRUPT_CONTROLLER **PrimaryController){
  _REGISTERED_INTERRUPT_CONTROLLER *InterruptController; 
  _REGISTERED_INTERRUPT_CONTROLLER *v3; 
  int v4; 
  unsigned int Capabilities; 
  _REGISTERED_INTERRUPT_CONTROLLER *v7; 

  InterruptController = (_REGISTERED_INTERRUPT_CONTROLLER *)HalpFindInterruptController(2i64);
  v3 = InterruptController;
  if( InterruptController && (v4 = HalpInterruptInitializeController(InterruptController), v4 >= 0)
    || (v7 = (_REGISTERED_INTERRUPT_CONTROLLER *)HalpFindInterruptController(0i64), (v3 = v7) != 0i64)
    && (v4 = HalpInterruptInitializeController(v7), v4 >= 0) )
  {
    *PrimaryController = v3;
  }
  else
  {
    v4 = -1073741810;
    *(&CmpDummyThreadEvent + 1789) = 2;
  }
  if( v4 >= 0 )
  {
    if( (*PrimaryController)->FunctionTable.FastEndOfInterrupt )
      HalPerformEndOfInterruptAtController[0] = (__int64(__fastcall *)())(*PrimaryController)->FunctionTable.FastEndOfInterrupt;
    Capabilities = v3->Capabilities;
    if( (Capabilities & 1) != 0 )
    {
      *(&CmpDummyThreadEvent + 7080) = 1;
      if( (Capabilities & 0x400) != 0 )
        *(&CmpDummyThreadEvent + 7094) = 1;
    }
  }
  return v4;
}

Referenced by:

HalpInitializeInterrupts