/* TargetManagement_pkg::internalOperators::extractTargetsFromMRSP */
void extractTargetsFromMRSP_TargetManagement_pkg_internalOperators(
  /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSP::MRSP */ MRSP_internal_T_TargetManagement_types *MRSP,
  /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSP::TargetsOfMRSP */ extractTargetsMRSPACC_TargetManagement_pkg *TargetsOfMRSP)
{
  kcg_int i;
  extractTargetsMRSPACC_TargetManagement_pkg tmp1;
  kcg_bool tmp;
  /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSP::_L24 */ Target_list_MRSP_real_T_TargetManagement_types _L24;
  
  (*TargetsOfMRSP).lastInsertedTargetIndex = - 1;
  for (i = 0; i < 200; i++) {
    kcg_copy_Target_real_T_TargetManagement_types(
      &_L24[i],
      (Target_real_T_TargetManagement_types *)
        &emptyTargetMRSP_TargetManagement_pkg);
  }
  kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
    &(*TargetsOfMRSP).targetList,
    &_L24);
  if ((*MRSP)[0].valid) {
    for (i = 0; i < 200; i++) {
      kcg_copy_extractTargetsMRSPACC_TargetManagement_pkg(&tmp1, TargetsOfMRSP);
      /* 1 */
      extractTargetsFromMRSPInt_TargetManagement_pkg_internalOperators(
        i,
        &tmp1,
        MRSP,
        &tmp,
        TargetsOfMRSP);
      if (!tmp) {
        break;
      }
    }
  }
}
/* TargetManagement_pkg::internalOperators::extractTargetsFromMRSP */
void extractTargetsFromMRSP_TargetManagement_pkg_internalOperators(
  /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSP::MRSP */ MRSP_internal_T_TargetManagement_types *MRSP,
  /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSP::TargetsOfMRSP */ extractTargetsMRSPACC_TargetManagement_pkg *TargetsOfMRSP)
{
  /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSP */
  static extractTargetsMRSPACC_TargetManagement_pkg acc;
  /* TargetManagement_pkg::internalOperators::extractTargetsFromMRSP */
  static kcg_bool cond_iterw;
  static kcg_int i;
  
  (*TargetsOfMRSP).lastInsertedTargetIndex = - 1;
  for (i = 0; i < 200; i++) {
    kcg_copy_Target_real_T_TargetManagement_types(
      &(*TargetsOfMRSP).targetList[i],
      (Target_real_T_TargetManagement_types *)
        &emptyTarget_TargetManagement_pkg);
  }
  if ((*MRSP)[0].valid) {
    for (i = 0; i < 200; i++) {
      kcg_copy_extractTargetsMRSPACC_TargetManagement_pkg(&acc, TargetsOfMRSP);
      /* 1 */
      extractTargetsFromMRSPInt_TargetManagement_pkg_internalOperators(
        i,
        &acc,
        MRSP,
        &cond_iterw,
        TargetsOfMRSP);
      if (!cond_iterw) {
        break;
      }
    }
  }
}
/* TargetManagement_pkg::internalOperators::extractLOATargetsFromMAint */
void extractLOATargetsFromMAint_TargetManagement_pkg_internalOperators(
  /* TargetManagement_pkg::internalOperators::extractLOATargetsFromMAint::ACC */ extractTargetsLOAACC_TargetManagement_pkg *ACC,
  /* TargetManagement_pkg::internalOperators::extractLOATargetsFromMAint::MA */ MA_section_real_T_TargetManagement_types *MA,
  /* TargetManagement_pkg::internalOperators::extractLOATargetsFromMAint::Cond */ kcg_bool *Cond,
  /* TargetManagement_pkg::internalOperators::extractLOATargetsFromMAint::ACC_out */ extractTargetsLOAACC_TargetManagement_pkg *ACC_out)
{
  Target_real_T_TargetManagement_types tmp;
  /* TargetManagement_pkg::internalOperators::extractLOATargetsFromMAint::_L89 */ kcg_int _L89;
  
  *Cond = (*MA).valid;
  _L89 = 1 + (*ACC).lastInsertedTargetIndex;
  if (*Cond & !(*MA).EndSection) {
    (*ACC_out).lastInsertedTargetIndex = _L89;
    kcg_copy_Target_list_LOA_real_T_TargetManagement_types(
      &(*ACC_out).targetList,
      &(*ACC).targetList);
    /* 7 */ GetLOAFromSection_TargetManagement_pkg_internalOperators(MA, &tmp);
    if ((0 <= _L89) & (_L89 < 10)) {
      kcg_copy_Target_real_T_TargetManagement_types(
        &(*ACC_out).targetList[_L89],
        &tmp);
    }
  }
  else {
    kcg_copy_extractTargetsLOAACC_TargetManagement_pkg(ACC_out, ACC);
  }
}
/* TargetManagement_pkg::internalOperators::calcMATargets */
void calcMATargets_TargetManagement_pkg_internalOperators(
  /* TargetManagement_pkg::internalOperators::calcMATargets::MA_section */ MA_section_real_T_TargetManagement_types *MA_section,
  /* TargetManagement_pkg::internalOperators::calcMATargets::EOA_Target */ Target_real_T_TargetManagement_types *EOA_Target,
  /* TargetManagement_pkg::internalOperators::calcMATargets::SvL_LoA_Target */ Target_real_T_TargetManagement_types *SvL_LoA_Target)
{
  /* TargetManagement_pkg::internalOperators::calcMATargets */
  static L_internal_real_Type_SDM_Types_Pkg tmp;
  /* TargetManagement_pkg::internalOperators::calcMATargets::_L62 */
  static kcg_bool _L62;
  
  _L62 = (*MA_section).EOA.TargetSpeed > 0.0;
  /* 5 */ if (_L62) {
    (*SvL_LoA_Target).distance = (*MA_section).EOA.Location;
    (*SvL_LoA_Target).speed = (*MA_section).EOA.TargetSpeed;
    /* 8 */ if ((*MA_section).valid) {
      (*SvL_LoA_Target).targetType = LoA_TargetManagement_types;
    }
    else {
      (*SvL_LoA_Target).targetType = invalid_TargetManagement_types;
    }
    kcg_copy_Target_real_T_TargetManagement_types(
      EOA_Target,
      (Target_real_T_TargetManagement_types *)
        &emptyTarget_TargetManagement_pkg);
  }
  else {
    (*EOA_Target).distance = (*MA_section).EOA.Location;
    (*EOA_Target).speed = (*MA_section).EOA.TargetSpeed;
    (*SvL_LoA_Target).speed = (*MA_section).EOA.TargetSpeed;
    /* 7 */ if ((*MA_section).OL_valid) {
      tmp = (*MA_section).Overlap;
    }
    else /* 6 */ if ((*MA_section).DP_valid) {
      tmp = (*MA_section).DangerPoint;
    }
    else {
      tmp = 0.0;
    }
    /* 9 */ if ((*MA_section).valid) {
      (*SvL_LoA_Target).targetType = SvL_TargetManagement_types;
      (*EOA_Target).targetType = EoA_TargetManagement_types;
    }
    else {
      (*SvL_LoA_Target).targetType = invalid_TargetManagement_types;
      (*EOA_Target).targetType = invalid_TargetManagement_types;
    }
    (*SvL_LoA_Target).distance = (*MA_section).EOA.Location + tmp;
  }
}
/* TargetManagement_pkg::internalOperators::removeOverpassedMRSPint */
void removeOverpassedMRSPint_TargetManagement_pkg_internalOperators(
  /* TargetManagement_pkg::internalOperators::removeOverpassedMRSPint::Targets */ Target_list_MRSP_real_T_TargetManagement_types *Targets,
  /* TargetManagement_pkg::internalOperators::removeOverpassedMRSPint::d_safe_max_front */ L_internal_real_Type_SDM_Types_Pkg d_safe_max_front,
  /* TargetManagement_pkg::internalOperators::removeOverpassedMRSPint::Cond */ kcg_bool *Cond,
  /* TargetManagement_pkg::internalOperators::removeOverpassedMRSPint::TargetsReduced */ Target_list_MRSP_real_T_TargetManagement_types *TargetsReduced)
{
  *Cond = (MRSP_TargetManagement_types == (*Targets)[0].targetType) &
    ((*Targets)[0].distance <= d_safe_max_front);
  /* 1 */ if (*Cond) {
    kcg_copy_array_97070(&(*TargetsReduced)[0], (array_97070 *) &(*Targets)[1]);
    kcg_copy_Target_real_T_TargetManagement_types(
      &(&(*TargetsReduced)[199])[0],
      (Target_real_T_TargetManagement_types *)
        &emptyTarget_TargetManagement_pkg);
  }
  else {
    kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
      TargetsReduced,
      Targets);
  }
}
/* TargetManagement_pkg::TargetManagement */
void TargetManagement_TargetManagement_pkg(
  /* TargetManagement_pkg::TargetManagement::MRSP */ MRSP_internal_T_TargetManagement_types *MRSP,
  /* TargetManagement_pkg::TargetManagement::MRSP_updated */ kcg_bool MRSP_updated,
  /* TargetManagement_pkg::TargetManagement::MA */ MA_section_real_T_TargetManagement_types *MA,
  /* TargetManagement_pkg::TargetManagement::MA_updated */ kcg_bool MA_updated,
  /* TargetManagement_pkg::TargetManagement::trainLocations */ TrainLocations_real_T_SDM_Types_Pkg *trainLocations,
  outC_TargetManagement_TargetManagement_pkg *outC)
{
  /* TargetManagement_pkg::TargetManagement */ Target_list_MRSP_real_T_TargetManagement_types tmp1;
  /* TargetManagement_pkg::TargetManagement */ extractTargetsMRSPACC_TargetManagement_pkg tmp;
  /* TargetManagement_pkg::TargetManagement::_L88 */ kcg_bool _L88;
  kcg_int i;
  
  /* ck_MA_updated */ if (MA_updated) {
    /* 1 */
    calcMATargets_TargetManagement_pkg_internalOperators(
      MA,
      &outC->_L12,
      &outC->_L93);
  }
  else if (outC->init) {
    kcg_copy_Target_real_T_TargetManagement_types(
      &outC->_L93,
      (Target_real_T_TargetManagement_types *)
        &emptyTarget_TargetManagement_pkg);
    kcg_copy_Target_real_T_TargetManagement_types(
      &outC->_L12,
      (Target_real_T_TargetManagement_types *)
        &emptyTarget_TargetManagement_pkg);
  }
  kcg_copy_Target_real_T_TargetManagement_types(
    &outC->targetCollection.EOA_target,
    &outC->_L12);
  kcg_copy_Target_real_T_TargetManagement_types(
    &outC->targetCollection.SvL_LoA_target,
    &outC->_L93);
  /* ck_MRSP_updated */ if (MRSP_updated) {
    /* 1 */
    extractTargetsFromMRSP_TargetManagement_pkg_internalOperators(MRSP, &tmp);
    kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
      &tmp1,
      &tmp.targetList);
  }
  else /* last_init_ck_MRSPTargetList */ if (outC->init) {
    for (i = 0; i < 110; i++) {
      kcg_copy_Target_real_T_TargetManagement_types(
        &tmp1[i],
        (Target_real_T_TargetManagement_types *)
          &emptyTarget_TargetManagement_pkg);
    }
  }
  else {
    kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
      &tmp1,
      &outC->rem_MRSPTargetList);
  }
  outC->init = kcg_false;
  /* 1 */
  removeOverpassedMRSP_TargetManagement_pkg_internalOperators(
    &tmp1,
    (*trainLocations).d_maxSafeFrontEndPos,
    &outC->rem_MRSPTargetList,
    &_L88);
  outC->targetCollection.updatedTargetList = MRSP_updated | MA_updated | _L88;
  kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
    &outC->targetCollection.MRSP_targetList,
    &outC->rem_MRSPTargetList);
}
/* TargetLimits_Pkg::TargetSelector */
void TargetSelector_TargetLimits_Pkg(
    /* TargetLimits_Pkg::TargetSelector::Targets */ TargetCollection_T_TargetManagement_types *Targets,
    /* TargetLimits_Pkg::TargetSelector::Curves */ CurveCollection_T_CalcBrakingCurves_types *Curves,
    /* TargetLimits_Pkg::TargetSelector::odometry */ odometry_T_Obu_BasicTypes_Pkg *odometry,
    /* TargetLimits_Pkg::TargetSelector::trainData_int */ trainData_internal_t_SDM_Types_Pkg *trainData_int,
    /* TargetLimits_Pkg::TargetSelector::T_b */ t_Brake_t_SDMModelPkg *T_b,
    /* TargetLimits_Pkg::TargetSelector::NationalValues */ P3_NationalValues_T_Packet_Types_Pkg *NationalValues,
    /* TargetLimits_Pkg::TargetSelector::trainLocations */ TrainLocations_real_T_SDM_Types_Pkg *trainLocations,
    /* TargetLimits_Pkg::TargetSelector::MostRestrictiveDisplayedTarget */ Target_T_TargetManagement_types *MostRestrictiveDisplayedTarget,
    /* TargetLimits_Pkg::TargetSelector::MostRestrictiveEBDCurve */ ParabolaCurve_T_CalcBrakingCurves_types *MostRestrictiveEBDCurve,
    /* TargetLimits_Pkg::TargetSelector::SBDcurve */ ParabolaCurve_T_CalcBrakingCurves_types *SBDcurve,
    /* TargetLimits_Pkg::TargetSelector::GUIcurve */ ParabolaCurve_T_CalcBrakingCurves_types *GUIcurve,
    /* TargetLimits_Pkg::TargetSelector::GUICurveEnabled */ kcg_bool *GUICurveEnabled,
    /* TargetLimits_Pkg::TargetSelector::V_Target */ V_internal_real_Type_SDM_Types_Pkg *V_Target,
    /* TargetLimits_Pkg::TargetSelector::V_P_MRDT */ V_internal_real_Type_SDM_Types_Pkg *V_P_MRDT,
    /* TargetLimits_Pkg::TargetSelector::D_EOA */ L_internal_real_Type_SDM_Types_Pkg *D_EOA,
    /* TargetLimits_Pkg::TargetSelector::D_SvL */ L_internal_real_Type_SDM_Types_Pkg *D_SvL,
    /* TargetLimits_Pkg::TargetSelector::v_est */ V_internal_real_Type_SDM_Types_Pkg *v_est,
    /* TargetLimits_Pkg::TargetSelector::T */ T_trac_t_TargetLimits_Pkg *T,
    /* TargetLimits_Pkg::TargetSelector::V_ura */ V_internal_real_Type_SDM_Types_Pkg *V_ura,
    /* TargetLimits_Pkg::TargetSelector::bec */ bec_t_TargetLimits_Pkg *bec,
    /* TargetLimits_Pkg::TargetSelector::D_SBI2 */ L_internal_real_Type_SDM_Types_Pkg *D_SBI2,
    /* TargetLimits_Pkg::TargetSelector::valid_D_SBI2 */ kcg_bool *valid_D_SBI2,
    /* TargetLimits_Pkg::TargetSelector::D_estfront */ L_internal_real_Type_SDM_Types_Pkg *D_estfront,
    /* TargetLimits_Pkg::TargetSelector::D_maxsafefront */ L_internal_real_Type_SDM_Types_Pkg *D_maxsafefront)
{
    /* TargetLimits_Pkg::TargetSelector */
    static TargetIteratorAkku_TargetLimits_Pkg acc;
    static kcg_int i;
    /* TargetLimits_Pkg::TargetSelector */
    static V_internal_real_Type_SDM_Types_Pkg tmp;
    /* TargetLimits_Pkg::TargetSelector::_L29 */
    static TargetIteratorAkku_TargetLimits_Pkg _L29;
    /* TargetLimits_Pkg::TargetSelector::_L59 */
    static kcg_bool _L59;
    /* TargetLimits_Pkg::TargetSelector::_L60 */
    static TargetIteratorAkku_TargetLimits_Pkg _L60;
    /* TargetLimits_Pkg::TargetSelector::_L55 */
    static kcg_int _L55;
    /* TargetLimits_Pkg::TargetSelector::_L157 */
    static Target_real_T_TargetManagement_types _L157;
    /* TargetLimits_Pkg::TargetSelector::_L261 */
    static kcg_bool _L261;
    /* TargetLimits_Pkg::TargetSelector::_L262 */
    static kcg_bool _L262;
    /* TargetLimits_Pkg::TargetSelector::_L282 */
    static Target_real_T_TargetManagement_types _L282;

    _L29.ttype = invalid_TargetManagement_types;
    _L29.bec.v = 0.0;
    _L29.bec.d = 0.0;
    _L29.V_est = 0.0;
    _L29.V_ura = 0.0;
    _L29.V_P_MRDT_ebd = 0.0;
    _L262 = (*Targets).EOA_target.targetType == EoA_TargetManagement_types;
    kcg_copy_ParabolaCurve_T_CalcBrakingCurves_types(
        SBDcurve,
        &(*Curves).EOA_SBD_curve);
    _L55 = - 1;
    _L29.index = _L55;
    _L29.V_P_MRDT_index = _L29.index;
    _L29.SBI2 = 0.0;
    _L29.T.Traction = 0.0;
    _L29.T.berem = 0.0;
    _L29.T.bs = 0.0;
    _L29.T.bs1 = 0.0;
    _L29.T.bs2 = 0.0;
    _L29.T.indication = 0.0;
    *D_maxsafefront = (*trainLocations).d_maxSafeFrontEndPos;
    kcg_copy_ParabolaCurve_T_CalcBrakingCurves_types(
        GUIcurve,
        &(*Curves).GUI_curve);
    *GUICurveEnabled = (*Curves).GUI_curve_enabled;
    switch ((*NationalValues).q_nvinhsmicperm) {
    case Q_NVINHSMICPERM_Yes :
        _L29.T.inhComp = kcg_true;
        break;

    default :
        _L29.T.inhComp = kcg_false;
    }
    for (i = 0; i < 200; i++) {
        kcg_copy_TargetIteratorAkku_TargetLimits_Pkg(&acc, &_L29);
        /* 2 */
        TargetIterator_TargetLimits_Pkg(
            i,
            &acc,
            &(*Targets).MRSP_targetList[i],
            &(*Curves).MRSP_EBD_curves[i],
            trainData_int,
            odometry,
            T_b,
            *D_maxsafefront,
            GUIcurve,
            *GUICurveEnabled,
            &_L59,
            &_L29);
        if (!_L59) {
            break;
        }
    }
    /* 4 */
    TargetIterator_TargetLimits_Pkg(
        _L55,
        &_L29,
        &(*Targets).SvL_LoA_target,
        &(*Curves).SvL_LoA_EBD_curve,
        trainData_int,
        odometry,
        T_b,
        *D_maxsafefront,
        GUIcurve,
        *GUICurveEnabled,
        &_L59,
        &_L60);
    *v_est = _L60.V_est;
    *D_estfront = (*trainLocations).d_est_frontendPos;
    *D_EOA = (*Targets).EOA_target.distance;
    kcg_copy_T_trac_t_TargetLimits_Pkg(T, &_L60.T);
    *D_SvL = (*Targets).SvL_LoA_target.distance;
    if ((0 <= _L60.V_P_MRDT_index) & (_L60.V_P_MRDT_index < 200)) {
        kcg_copy_Target_real_T_TargetManagement_types(
            &_L157,
            &(*Targets).MRSP_targetList[_L60.V_P_MRDT_index]);
    }
    else {
        kcg_copy_Target_real_T_TargetManagement_types(
            &_L157,
            &(*Targets).SvL_LoA_target);
    }
    if ((0 <= _L60.index) & (_L60.index < 200)) {
        kcg_copy_ParabolaCurve_T_CalcBrakingCurves_types(
            MostRestrictiveEBDCurve,
            &(*Curves).MRSP_EBD_curves[_L60.index]);
    }
    else {
        kcg_copy_ParabolaCurve_T_CalcBrakingCurves_types(
            MostRestrictiveEBDCurve,
            &(*Curves).SvL_LoA_EBD_curve);
    }
    kcg_copy_bec_t_TargetLimits_Pkg(bec, &_L60.bec);
    *D_SBI2 = _L60.SBI2;
    *V_ura = _L60.V_ura;
    *valid_D_SBI2 = _L60.ttype != invalid_TargetManagement_types;
    /* ck__L275 */ if (_L262) {
        /* 2 */
        v_SBI1_TargetLimits_Pkg(
            SBDcurve,
            *v_est,
            *D_estfront,
            *D_EOA,
            T_driver_SDM_Types_Pkg,
            *GUICurveEnabled,
            GUIcurve,
            T,
            &_L59,
            &tmp);
    }
    else {
        _L59 = kcg_false;
        tmp = 0.0;
    }
    /* 1 */
    selectLEValid_TargetLimits_Pkg(
        (kcg_bool) (_L157.targetType != invalid_TargetManagement_types),
        _L60.V_P_MRDT_ebd,
        _L59,
        tmp,
        &_L261,
        &_L262,
        V_P_MRDT);
    /* 1 */ if (_L261) {
        kcg_copy_Target_real_T_TargetManagement_types(&_L282, &_L157);
    }
    else {
        kcg_copy_Target_real_T_TargetManagement_types(
            &_L282,
            &(*Targets).EOA_target);
    }
    (*MostRestrictiveDisplayedTarget).targetType = _L282.targetType;
    (*MostRestrictiveDisplayedTarget).valid = invalid_TargetManagement_types !=
            _L282.targetType;
    *V_Target = _L282.speed;
    (*MostRestrictiveDisplayedTarget).distance = /* 1 */
        TransformL_realToL_int_SDM_Types_Pkg(_L282.distance);
    (*MostRestrictiveDisplayedTarget).speed = /* 1 */
        TransformV_realToV_int_SDM_Types_Pkg(*V_Target);
}
/* TargetManagement_pkg::TargetManagement */
void TargetManagement_TargetManagement_pkg(
  /* TargetManagement_pkg::TargetManagement::MRSP */MRSP_internal_T_TargetManagement_types *MRSP,
  /* TargetManagement_pkg::TargetManagement::MRSP_updated */kcg_bool MRSP_updated,
  /* TargetManagement_pkg::TargetManagement::MA */MA_section_real_T_TargetManagement_types *MA,
  /* TargetManagement_pkg::TargetManagement::MA_updated */kcg_bool MA_updated,
  /* TargetManagement_pkg::TargetManagement::trainLocations */TrainLocations_real_T_SDM_Types_Pkg *trainLocations,
  outC_TargetManagement_TargetManagement_pkg *outC)
{
  static struct__130782 tmp;
  static kcg_int i;
  static Target_list_MRSP_real_T_TargetManagement_types tmp3;
  static extractTargetsMRSPACC_TargetManagement_pkg tmp2;
  static array__130570 tmp1;
  static array__130570 tmp4;
  /* TargetManagement_pkg::TargetManagement::_L88 */
  static kcg_bool _L88;
  
  if (MA_updated) {
    /* 1 */
    calcMATargets_TargetManagement_pkg_internalOperators(
      MA,
      &outC->_L12,
      &outC->_L93);
  }
  else if (outC->init) {
    kcg_copy_Target_real_T_TargetManagement_types(
      &outC->_L93,
      (Target_real_T_TargetManagement_types *)
        &emptyTarget_TargetManagement_pkg);
    kcg_copy_Target_real_T_TargetManagement_types(
      &outC->_L12,
      (Target_real_T_TargetManagement_types *)
        &emptyTarget_TargetManagement_pkg);
  }
  kcg_copy_Target_real_T_TargetManagement_types(
    &outC->targetCollection.SvL_LoA_target,
    &outC->_L93);
  for (i = 0; i < 110; i++) {
    kcg_copy_Target_real_T_TargetManagement_types(
      &tmp4[i],
      (Target_real_T_TargetManagement_types *)
        &emptyTarget_TargetManagement_pkg);
  }
  if (MRSP_updated) {
    /* 1 */
    extractTargetsFromMRSP_TargetManagement_pkg_internalOperators(MRSP, &tmp2);
    kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
      &tmp3,
      &tmp2.targetList);
  }
  else {
    if (outC->init) {
      kcg_copy_array__130570(&tmp1, &tmp4);
    }
    else {
      kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
        &tmp1,
        &outC->rem_MRSPTargetList);
    }
    kcg_copy_array__130570(&tmp.targetList, &tmp1);
    tmp.lastInsertedTargetIndex = - 1;
    kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
      &tmp3,
      &tmp.targetList);
  }
  /* 1 */
  removeOverpassedMRSP_TargetManagement_pkg_internalOperators(
    &tmp3,
    (*trainLocations).d_maxSafeFrontEndPos,
    &outC->rem_MRSPTargetList,
    &_L88);
  outC->targetCollection.updatedTargetList = MRSP_updated | MA_updated | _L88;
  kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
    &outC->targetCollection.MRSP_targetList,
    &outC->rem_MRSPTargetList);
  outC->init = kcg_false;
  kcg_copy_Target_real_T_TargetManagement_types(
    &outC->targetCollection.EOA_target,
    &outC->_L12);
}
/* TargetManagement_pkg::TargetManagement */
void TargetManagement_TargetManagement_pkg(
  /* TargetManagement_pkg::TargetManagement::MRSP */ MRSP_internal_T_TargetManagement_types *MRSP,
  /* TargetManagement_pkg::TargetManagement::MRSP_updated */ kcg_bool MRSP_updated,
  /* TargetManagement_pkg::TargetManagement::MA */ MAs_real_T_TargetManagement_types *MA,
  /* TargetManagement_pkg::TargetManagement::MA_updated */ kcg_bool MA_updated,
  /* TargetManagement_pkg::TargetManagement::trainLocations */ TrainLocations_real_T_SDM_Types_Pkg *trainLocations,
  outC_TargetManagement_TargetManagement_pkg *outC)
{
  kcg_int i;
  Target_list_LOA_real_T_TargetManagement_types tmp6;
  extractTargetsLOAACC_TargetManagement_pkg tmp5;
  Target_list_LOA_real_T_TargetManagement_types tmp4;
  Target_list_MRSP_real_T_TargetManagement_types tmp3;
  extractTargetsMRSPACC_TargetManagement_pkg tmp2;
  Target_list_MRSP_real_T_TargetManagement_types tmp1;
  kcg_real tmp;
  /* TargetManagement_pkg::TargetManagement::_L88 */ kcg_bool _L88;
  /* TargetManagement_pkg::TargetManagement::_L92 */ kcg_bool _L92;
  
  if (MA_updated) {
    /* 1 */
    extractLOATargetsFromMA_TargetManagement_pkg_internalOperators(MA, &tmp5);
    kcg_copy_Target_list_LOA_real_T_TargetManagement_types(
      &tmp6,
      &tmp5.targetList);
    /* 1 */
    extractEOASvLTargetFromMA_TargetManagement_pkg_internalOperators(
      MA,
      &outC->_L12,
      &outC->_L93,
      &outC->V_releaseFromMA,
      &outC->V_releaseFromMAValid);
  }
  else {
    if (outC->init) {
      for (i = 0; i < 10; i++) {
        kcg_copy_Target_real_T_TargetManagement_types(
          &tmp4[i],
          (Target_real_T_TargetManagement_types *)
            &emptyTargetLOA_TargetManagement_pkg);
      }
      kcg_copy_Target_real_T_TargetManagement_types(
        &outC->_L12,
        (Target_real_T_TargetManagement_types *)
          &emptyTargetEOA_TargetManagement_pkg);
      kcg_copy_Target_real_T_TargetManagement_types(
        &outC->_L93,
        (Target_real_T_TargetManagement_types *)
          &emptyTargetSvL_TargetManagement_pkg);
      tmp = 0.0;
      outC->V_releaseFromMAValid = kcg_false;
    }
    else {
      kcg_copy_Target_list_LOA_real_T_TargetManagement_types(
        &tmp4,
        &outC->rem_LOATargetList);
      tmp = outC->V_releaseFromMA;
    }
    kcg_copy_Target_list_LOA_real_T_TargetManagement_types(&tmp6, &tmp4);
    outC->V_releaseFromMA = tmp;
  }
  /* 1 */
  removeOverpassedLOA_TargetManagement_pkg_internalOperators(
    &tmp6,
    (*trainLocations).d_maxSafeFrontEndPos,
    &outC->rem_LOATargetList,
    &_L92);
  kcg_copy_Target_list_LOA_real_T_TargetManagement_types(
    &outC->targetCollection.LOA_targetList,
    &outC->rem_LOATargetList);
  if (MRSP_updated) {
    /* 1 */
    extractTargetsFromMRSP_TargetManagement_pkg_internalOperators(MRSP, &tmp2);
    kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
      &tmp3,
      &tmp2.targetList);
  }
  else {
    if (outC->init) {
      for (i = 0; i < 200; i++) {
        kcg_copy_Target_real_T_TargetManagement_types(
          &tmp1[i],
          (Target_real_T_TargetManagement_types *)
            &emptyTargetMRSP_TargetManagement_pkg);
      }
    }
    else {
      kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
        &tmp1,
        &outC->rem_MRSPTargetList);
    }
    kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(&tmp3, &tmp1);
  }
  /* 1 */
  removeOverpassedMRSP_TargetManagement_pkg_internalOperators(
    &tmp3,
    (*trainLocations).d_maxSafeFrontEndPos,
    &outC->rem_MRSPTargetList,
    &_L88);
  outC->targetCollection.updatedTargetList = _L92 | MRSP_updated | MA_updated |
    _L88;
  kcg_copy_Target_list_MRSP_real_T_TargetManagement_types(
    &outC->targetCollection.MRSP_targetList,
    &outC->rem_MRSPTargetList);
  kcg_copy_Target_real_T_TargetManagement_types(
    &outC->targetCollection.EOA_target,
    &outC->_L12);
  kcg_copy_Target_real_T_TargetManagement_types(
    &outC->targetCollection.SvL_target,
    &outC->_L93);
  outC->init = kcg_false;
}