HalpInitializeCmciVector

NTSTATUS __fastcall HalpInitializeCmciVector(_REGISTERED_INTERRUPT_CONTROLLER *Controller, UINT64 a2){
  unsigned int v2; 
  bool v4; 
  _INTERRUPT_LINE_STATE LineState; 
  _INTERRUPT_LINE Line; 

  *(_DWORD *)&LineState.EmulateActiveBoth = 0;
  v2 = a2;
  *((_DWORD *)&LineState.ProcessorTarget.Target + 1) = 0;
  *(_QWORD *)(&LineState.ProcessorTarget.ClusterId + 1) = 0i64;
  HIDWORD(LineState.ProcessorTarget.HypervisorTarget.InterruptData) = 0;
  v4 = Controller->KnownType == InterruptControllerApic;
  Line.UnitId = Controller->UnitId;
  Line.Line = -7;
  if( !v4 || !HalpInterruptFindLines((unsigned int *)&Line) )
    return 0;
  *(_DWORD *)&LineState.EmulateActiveBoth = 0;
  *((_DWORD *)&LineState.ProcessorTarget.Target + 1) = 0;
  *(_QWORD *)(&LineState.ProcessorTarget.ClusterId + 1) = 0i64;
  HIDWORD(LineState.ProcessorTarget.HypervisorTarget.InterruptData) = 0;
  LineState.Routing.UnitId = -1;
  LineState.Vector = 53;
  LineState.Polarity = InterruptActiveHigh;
  LineState.TriggerMode = Latched;
  LineState.Flags = 16;
  LineState.Routing.Line = 1;
  LineState.ProcessorTarget.Target = InterruptTargetPhysical;
  LineState.ProcessorTarget.PhysicalTarget = v2;
  LineState.Priority = HalpInterruptGetPriority((INT64)Controller, 0x35u);
  return HalpInterruptSetLineStateInternal(Controller, &Line, &LineState);
}

Referenced by:

HalpInterruptInitializeLocalUnit