int string_to_array_int_3(const char* strValue, void* pValue) {
	static array_int_3 rTemp;
	int nResult = pSimulator->m_pfnArrayFromString(strValue, (void**)(void*)&rTemp, string_to_kcg_int, 3, array_int_3_projection);
	if (nResult == 1)
		kcg_copy_array_int_3(&(*((array_int_3*)pValue)), &(rTemp));
	return nResult;
}
/* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2 */
void C_P027V1_compr_onboard_sections_level2_TM_conversions_baseline2(
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::PacketData */ CompressedPacketData_T_Common_Types_Pkg *PacketData,
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::Metadata_Element */ MetadataElement_T_Common_Types_Pkg *Metadata_Element,
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::P027V1_section_onbard */ P027V1_section_enum_T_TM_baseline2 *P027V1_section_onbard)
{
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2 */
  static kcg_bool cond_iterw;
  static kcg_int i;
  static kcg_int noname_1;
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::_L6 */
  static array_int_3 _L6;
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::_L5 */
  static P027V1_OBU_sectionlist_enum_qdiff_T_TM_baseline2 _L5;
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::_L29 */
  static array_int_64 _L29;
  
  (*P027V1_section_onbard).valid = kcg_true;
  (*P027V1_section_onbard).n_iter = (*PacketData)[3];
  kcg_copy_array_int_3(&_L6, (array_int_3 *) &(*PacketData)[0]);
  kcg_copy_array_int_64(&_L29, (array_int_64 *) &(*PacketData)[4]);
  /* 1 */ if ((*PacketData)[3] < 0) {
    /* 1 */ for (i = 0; i < 32; i++) {
      /* 1_1 */
      C_P027V1_us_array_qdiff_TM_lib_internal(
        i,
        (*PacketData)[3],
        &_L29,
        &cond_iterw,
        &_L5[i]);
      noname_1 = i + 1;
      /* 1 */ if (!cond_iterw) {
        break;
      }
    }
  }
  else {
    noname_1 = 0;
  }
#ifdef KCG_MAPW_CPY
  
  /* 1 */ for (i = noname_1; i < 32; i++) {
    kcg_copy_P027V1_section_enum_qdiff_T_TM_baseline2(
      &_L5[i],
      (P027V1_section_enum_qdiff_T_TM_baseline2 *)
        &DEFAULT_P027v1_OBU_section_qdiff_TM_baseline2);
  }
#endif /* KCG_MAPW_CPY */
  
  kcg_copy_P027V1_OBU_sectionlist_enum_qdiff_T_TM_baseline2(
    &(*P027V1_section_onbard).SECTIONS_q_diff,
    &_L5);
  (*P027V1_section_onbard).d_static = /* 1 */
    CAST_Int_to_D_STATIC_TM_conversions(_L6[0]);
  (*P027V1_section_onbard).v_static = /* 1 */
    CAST_Int_to_V_STATIC_TM_conversions(_L6[1]);
  (*P027V1_section_onbard).q_front = /* 1 */
    CAST_Int_to_Q_FRONT_TM_conversions(_L6[2]);
}
/* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2 */
void C_P027V1_compr_onboard_sections_level2_TM_conversions_baseline2(
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::PacketData */CompressedPacketData_T_Common_Types_Pkg *PacketData,
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::Metadata_Element */MetadataElement_T_Common_Types_Pkg *Metadata_Element,
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::P027V1_section_onbard */P027V1_section_enum_T_TM_baseline2 *P027V1_section_onbard)
{
  static kcg_bool tmp2;
  static D_STATIC tmp1;
  static V_STATIC tmp;
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::_L6 */
  static array_int_3 _L6;
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::_L5 */
  static P027V1_OBU_sectionlist_enum_qdiff_T_TM_baseline2 _L5;
  /* TM_conversions_baseline2::C_P027V1_compr_onboard_sections_level2::_L29 */
  static array_int_64 _L29;
  
  (*P027V1_section_onbard).valid = kcg_true;
  (*P027V1_section_onbard).n_iter = (*PacketData)[3];
  kcg_copy_array_int_64(&_L29, (array_int_64 *) &(*PacketData)[4]);
  kcg_copy_array_int_3(&_L6, (array_int_3 *) &(*PacketData)[0]);
  if ((*PacketData)[3] < 0) {
    for (tmp1 = 0; tmp1 < 32; tmp1++) {
      /* 1_1 */
      C_P027V1_us_array_qdiff_TM_lib_internal(
        tmp1,
        (*PacketData)[3],
        &_L29,
        &tmp2,
        &_L5[tmp1]);
      tmp = tmp1 + 1;
      if (!tmp2) {
        break;
      }
    }
  }
  else {
    tmp = 0;
  }
#ifdef KCG_MAPW_CPY
  
  for (tmp1 = tmp; tmp1 < 32; tmp1++) {
    kcg_copy_P027V1_section_enum_qdiff_T_TM_baseline2(
      &_L5[tmp1],
      (P027V1_section_enum_qdiff_T_TM_baseline2 *)
        &DEFAULT_P027v1_OBU_section_qdiff_TM_baseline2);
  }
#endif /* KCG_MAPW_CPY */
  
  kcg_copy_P027V1_OBU_sectionlist_enum_qdiff_T_TM_baseline2(
    &(*P027V1_section_onbard).SECTIONS_q_diff,
    &_L5);
  tmp1 = /* 1 */ CAST_Int_to_D_STATIC_TM_conversions(_L6[0]);
  (*P027V1_section_onbard).d_static = tmp1;
  (*P027V1_section_onbard).v_static = /* 1 */
    CAST_Int_to_V_STATIC_TM_conversions(_L6[1]);
  (*P027V1_section_onbard).q_front = /* 1 */
    CAST_Int_to_Q_FRONT_TM_conversions(_L6[2]);
}
int string_to_SSP_cat_t(const char* strValue, void* pValue) {
	if (pSimSSP_cat_tVTable != 0 && pSimSSP_cat_tVTable->m_pfnGetConvInfo(SptNone, SptString) == 1) {
		static SSP_cat_t rTemp;
		int nResult = pSimSSP_cat_tVTable->m_pfnFromType(SptString, (const void*)&strValue, &rTemp);
		if (nResult == 1)
			kcg_copy_array_int_3(&(*((SSP_cat_t*)pValue)), &(rTemp));
		return nResult;
	}
	return string_to_array_int_3(strValue, pValue);
}
/* TM_TrainToTrack::C_compr_P003 */
void C_compr_P003_TM_TrainToTrack(
    /* TM_TrainToTrack::C_compr_P003::P003_int */P003_TrainTrack_int_TM_TrainToTrack *P003_int,
    outC_C_compr_P003_TM_TrainToTrack *outC)
{
    /* TM_TrainToTrack::C_compr_P003::_L94 */ array_int_3 _L94;
    /* TM_TrainToTrack::C_compr_P003::_L105 */ kcg_bool _L105;

    kcg_copy_array_int_3(&_L94, (array_int_3 *) &(*P003_int)[0]);
    _L105 = /* 1 */ Decode_NID_PACKET_TM_TrainToTrack(_L94[0], 3);
    outC->P003_out.valid = _L105;
    if (_L105) {
        /* 1 */
        C_P003_flatten_sections_TM_TrainToTrack_lib_internal(
            (P003_nid_radio_list_t_TM_TrainToTrack *) &(*P003_int)[3],
            &outC->_L89);
    }
    else if (outC->init) {
        kcg_copy_P003_nid_radio_list_int_t_TM_TrainToTrack(
            &outC->_L89,
            (P003_nid_radio_list_int_t_TM_TrainToTrack *)
            &DEFAULT_P003_nid_radio_list_TM_TrainToTrack);
    }
    outC->init = kcg_false;
    kcg_copy_P003_nid_radio_list_t_TM_TrainToTrack(
        &outC->P003_out.nid_radio,
        &outC->_L89);
    outC->P003_out.nid_packet = /* 1 */
        CAST_NID_PACKET_to_int_TM_conversions(
            /* 1 */ Filter_Variable_TM_TrainToTrack(_L105, _L94[0]));
    outC->P003_out.l_packet = /* 1 */
        CAST_L_PACKET_to_int_TM_conversions(
            /* 2 */ Filter_Variable_TM_TrainToTrack(_L105, _L94[1]));
    outC->P003_out.n_iter = /* 1 */
        CAST_N_ITER_to_int_TM_conversions(
            /* 3 */ Filter_Variable_TM_TrainToTrack(_L105, _L94[2]));
}
/* TM_radio_messages_trackside::Read_M157 */
void Read_M157_TM_radio_messages_trackside(
  /* TM_radio_messages_trackside::Read_M157::t_train_global */T_TRAIN t_train_global,
  /* TM_radio_messages_trackside::Read_M157::MessageIn */M_TrainTrack_Message_T_TM_radio_messages *MessageIn,
  outC_Read_M157_TM_radio_messages_trackside *outC)
{
  /* TM_radio_messages_trackside::Read_M157::P000 */ P000_TM_TrainToTrack P0002;
  /* TM_radio_messages_trackside::Read_M157::P001 */ P001_TM_TrainToTrack P0011;
  /* TM_radio_messages_trackside::Read_M157::P000 */ P000_TM_TrainToTrack P000;
  /* TM_radio_messages_trackside::Read_M157::P001 */ P001_TM_TrainToTrack P001;
  /* TM_radio_messages_trackside::Read_M157::P000 */ P000_TM_TrainToTrack P0003;
  /* TM_radio_messages_trackside::Read_M157::P001 */ P001_TM_TrainToTrack P0014;
  /* TM_radio_messages_trackside::Read_M157::P000 */ P000_TM_TrainToTrack P0005;
  /* TM_radio_messages_trackside::Read_M157::P001 */ P001_TM_TrainToTrack P0016;
  
  kcg_copy_M_TrainTrack_Message_T_TM_radio_messages(&outC->_L98, MessageIn);
  kcg_copy_M_TrainTrack_compressed_packets_T_TM_radio_messages(
    &outC->_L100,
    &outC->_L98.OptionalPackets);
  kcg_copy_array_int_25(&outC->p44local, (array_int_25 *) &outC->_L100[23]);
  /* 1 */ C_compr_P044_TM_TrainToTrack(&outC->p44local, &outC->Context_1);
  kcg_copy_P044_TM_TrainToTrack(&outC->_L119, &outC->Context_1.P044_out);
  kcg_copy_P044_TM_TrainToTrack(&outC->P044, &outC->_L119);
  kcg_copy_array_int_3(&outC->p5local, (array_int_3 *) &outC->_L100[20]);
  /* 1 */ C_compr_P005_TM_TrainToTrack(&outC->p5local, &outC->_1_Context_1);
  kcg_copy_P005_TM_TrainToTrack(&outC->_L116, &outC->_1_Context_1.P005_out);
  kcg_copy_P005_TM_TrainToTrack(&outC->P005, &outC->_L116);
  kcg_copy_array_int_3(&outC->p4local, (array_int_3 *) &outC->_L100[17]);
  outC->_L113 = ENUM_M_VERSION_Version_1_1_TM_conversions;
  outC->_L111 = t_train_global;
  outC->t_train_received = outC->_L111;
  outC->_10_m_version = outC->_L113;
  /* 1 */ C_compr_P004_TM_TrainToTrack(&outC->p4local, &outC->_2_Context_1);
  kcg_copy_P004_TM_TrainToTrack(&outC->_L109, &outC->_2_Context_1.P004_out);
  kcg_copy_array_int_17(&outC->_L104, (array_int_17 *) &outC->_L100[0]);
  outC->_L105 = outC->_L104[0];
  outC->nid_packet = outC->_L105;
  outC->Det_if_P0_or_P1_clock = outC->nid_packet ==
    nid_meta_p000_TM_radio_messages;
  kcg_copy_P000_TrainTrack_int_TM_TrainToTrack(&outC->P0_or_P1, &outC->_L104);
  if (outC->Det_if_P0_or_P1_clock) {
    kcg_copy_P000_TrainTrack_int_TM_TrainToTrack(
      &outC->_L2_Det_if_P0_or_P1,
      &outC->P0_or_P1);
    /* 2 */
    C_compr_P000_TM_TrainToTrack(&outC->_L2_Det_if_P0_or_P1, &outC->Context_2);
    kcg_copy_P000_TM_TrainToTrack(
      &outC->_L3_Det_if_P0_or_P1,
      &outC->Context_2.P000_out);
    kcg_copy_P001_TM_TrainToTrack(
      &outC->_L1_Det_if_P0_or_P1,
      (P001_TM_TrainToTrack *) &DEFAULT_P001_TM_radio_messages_trackside);
    kcg_copy_P001_TM_TrainToTrack(&P0011, &outC->_L1_Det_if_P0_or_P1);
    kcg_copy_P000_TM_TrainToTrack(&P0002, &outC->_L3_Det_if_P0_or_P1);
    kcg_copy_P000_TM_TrainToTrack(&outC->P000, &P0002);
    kcg_copy_P001_TM_TrainToTrack(&outC->P001, &P0011);
  }
  else {
    outC->else_clock_Det_if_P0_or_P1 = outC->nid_packet ==
      nid_meta_p001_TM_radio_messages;
    if (outC->else_clock_Det_if_P0_or_P1) {
      kcg_copy_P000_TrainTrack_int_TM_TrainToTrack(
        &outC->_L26_Det_if_P0_or_P1,
        &outC->P0_or_P1);
      /* 1 */
      C_compr_P001_TM_TrainToTrack(
        &outC->_L26_Det_if_P0_or_P1,
        &outC->_3_Context_1);
      kcg_copy_P001_TM_TrainToTrack(
        &outC->_L35_Det_if_P0_or_P1,
        &outC->_3_Context_1.P001_out);
      kcg_copy_P000_TM_TrainToTrack(
        &outC->_L17_Det_if_P0_or_P1,
        (P000_TM_TrainToTrack *) &DEFAULT_P000_TM_radio_messages_trackside);
      kcg_copy_P000_TM_TrainToTrack(&P0005, &outC->_L17_Det_if_P0_or_P1);
      kcg_copy_P001_TM_TrainToTrack(&P0016, &outC->_L35_Det_if_P0_or_P1);
      kcg_copy_P001_TM_TrainToTrack(&P001, &P0016);
      kcg_copy_P000_TM_TrainToTrack(&P000, &P0005);
    }
    else {
      kcg_copy_P001_TM_TrainToTrack(
        &outC->_L28_Det_if_P0_or_P1,
        (P001_TM_TrainToTrack *) &DEFAULT_P001_TM_radio_messages_trackside);
      kcg_copy_P000_TM_TrainToTrack(
        &outC->_L19_Det_if_P0_or_P1,
        (P000_TM_TrainToTrack *) &DEFAULT_P000_TM_radio_messages_trackside);
      kcg_copy_P000_TM_TrainToTrack(&P0003, &outC->_L19_Det_if_P0_or_P1);
      kcg_copy_P001_TM_TrainToTrack(&P0014, &outC->_L28_Det_if_P0_or_P1);
      kcg_copy_P001_TM_TrainToTrack(&P001, &P0014);
      kcg_copy_P000_TM_TrainToTrack(&P000, &P0003);
    }
    kcg_copy_P000_TM_TrainToTrack(&outC->P000, &P000);
    kcg_copy_P001_TM_TrainToTrack(&outC->P001, &P001);
  }
  kcg_copy_M_TrainTrack_MessageHd_T_TM_radio_messages(
    &outC->_L99,
    &outC->_L98.Message);
  /* 1 */ C_header_to_M157_TM_RBC_conversions(&outC->_L99, &outC->_4_Context_1);
  kcg_copy_M_157_T_TM_radio_messages(
    &outC->_L103,
    &outC->_4_Context_1.message_out);
  kcg_copy_P004_TM_TrainToTrack(&outC->P004, &outC->_L109);
  kcg_copy_M_157_T_TM_radio_messages(&outC->Message_157_out, &outC->_L103);
}
/* TM_conversions::C_P005_compr_onboard */
void C_P005_compr_onboard_TM_conversions(
  /* TM_conversions::C_P005_compr_onboard::PacketData */CompressedPacketData_T_Common_Types_Pkg *PacketData,
  /* TM_conversions::C_P005_compr_onboard::Metadata_Element */MetadataElement_T_Common_Types_Pkg *Metadata_Element,
  outC_C_P005_compr_onboard_TM_conversions *outC)
{
  kcg_bool _28_noname_1;
  kcg_bool _27_noname_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */ Q_DIR _26_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */ kcg_bool _25_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */ Q_DIR _24_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */ kcg_bool _23_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */ kcg_bool _22_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */ Q_DIR _21_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */ kcg_bool _20_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */ Q_DIR _19_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */ Q_DIR _18_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */ kcg_bool _17_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */ Q_DIR q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */ kcg_bool _16_error_1;
  kcg_bool _15_noname_1;
  kcg_bool _14_noname_1;
  kcg_bool _13_noname_1;
  kcg_bool _12_noname_1;
  kcg_bool _11_noname_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::q_scale */ Q_SCALE _10_q_scale_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::error */ kcg_bool _9_error_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::q_scale */ Q_SCALE _8_q_scale_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::error */ kcg_bool _7_error_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::error */ kcg_bool _6_error_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::q_scale */ Q_SCALE _5_q_scale_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::error */ kcg_bool _4_error_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::q_scale */ Q_SCALE _3_q_scale_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::q_scale */ Q_SCALE _2_q_scale_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::error */ kcg_bool _1_error_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::q_scale */ Q_SCALE q_scale_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::error */ kcg_bool error_1;
  kcg_bool noname_1;
  MetadataElement_T_Common_Types_Pkg noname;
  
  kcg_copy_CompressedPacketData_T_Common_Types_Pkg(&outC->_L9, PacketData);
  kcg_copy_array_int_3(&outC->_L6, (array_int_3 *) &outC->_L9[1]);
  outC->_L16 = outC->_L6[2];
  outC->_L15 = outC->_L6[1];
  kcg_copy_array_int_1(&outC->_L1, (array_int_1 *) &outC->_L9[0]);
  outC->_L18 = outC->_L1[0];
  outC->nid_packet_int_1 = outC->_L18;
  outC->_L1_124 = outC->nid_packet_int_1;
  outC->nid_packet_1 = outC->_L1_124;
  outC->_L12 = outC->nid_packet_1;
  outC->_L21 = 5;
  outC->_L22 = outC->_L12 == outC->_L21;
  kcg_copy_MetadataElement_T_Common_Types_Pkg(&outC->_L20, Metadata_Element);
  kcg_copy_MetadataElement_T_Common_Types_Pkg(&noname, &outC->_L20);
  kcg_copy_array_int_1(&outC->_L2, (array_int_1 *) &outC->_L9[4]);
  outC->_L17 = outC->_L2[0];
  outC->_L14 = outC->_L6[0];
  kcg_copy_array_int_231(&outC->_L13, (array_int_231 *) &outC->_L9[5]);
  outC->q_dir_int_1 = outC->_L14;
  outC->_9__L12_1 = outC->q_dir_int_1;
  outC->q_dir_in_1 = outC->_9__L12_1;
  outC->_12_IfBlock1_clock_1 = outC->q_dir_in_1 ==
    INT_Q_DIR_nomiinal_TM_conversions;
  if (outC->_12_IfBlock1_clock_1) {
    outC->_L4_120_IfBlock1 = ENUM_Q_DIR_nominal_TM_conversions;
    _26_q_dir_1 = outC->_L4_120_IfBlock1;
    outC->q_dir_1 = _26_q_dir_1;
  }
  else {
    outC->_19_else_clock_1_IfBlock1 = outC->q_dir_in_1 ==
      INT_Q_DIR_reverse_TM_conversions;
    if (outC->_19_else_clock_1_IfBlock1) {
      outC->_L3_113_IfBlock1 = ENUM_Q_DIR_reverse_TM_conversions;
      q_dir_1 = outC->_L3_113_IfBlock1;
      _24_q_dir_1 = q_dir_1;
    }
    else {
      outC->_14_else_clock_1_IfBlock1 = outC->q_dir_in_1 ==
        INT_Q_DIR_both_TM_conversions;
      if (outC->_14_else_clock_1_IfBlock1) {
        outC->_L2_117_IfBlock1 = ENUM_Q_DIR_both_TM_conversions;
        _21_q_dir_1 = outC->_L2_117_IfBlock1;
        _18_q_dir_1 = _21_q_dir_1;
      }
      else {
        outC->_L2_115_IfBlock1 = ENUM_Q_DIR_both_TM_conversions;
        _19_q_dir_1 = outC->_L2_115_IfBlock1;
        _18_q_dir_1 = _19_q_dir_1;
      }
      _24_q_dir_1 = _18_q_dir_1;
    }
    outC->q_dir_1 = _24_q_dir_1;
  }
  outC->_L11 = outC->q_dir_1;
  outC->l_packet_int_1 = outC->_L15;
  outC->_L1_18 = outC->l_packet_int_1;
  outC->l_packet_1 = outC->_L1_18;
  outC->_L8 = outC->l_packet_1;
  outC->q_scale_int_1 = outC->_L16;
  outC->_L2_1 = outC->q_scale_int_1;
  outC->q_scale_in_1 = outC->_L2_1;
  outC->IfBlock1_clock_1 = outC->q_scale_in_1 ==
    INT_Q_SCALE_10cm_TM_conversions;
  if (outC->IfBlock1_clock_1) {
    outC->_L2_14_IfBlock1 = ENUM_Q_SCALE_10cm_TM_conversions;
    _10_q_scale_1 = outC->_L2_14_IfBlock1;
    outC->q_scale_1 = _10_q_scale_1;
  }
  else {
    outC->_3_else_clock_1_IfBlock1 = outC->q_scale_in_1 ==
      INT_Q_SCALE_1m_TM_conversions;
    if (outC->_3_else_clock_1_IfBlock1) {
      outC->_L1_1_IfBlock1 = ENUM_Q_SCALE_1m_TM_conversions;
      q_scale_1 = outC->_L1_1_IfBlock1;
      _8_q_scale_1 = q_scale_1;
    }
    else {
      outC->else_clock_1_IfBlock1 = outC->q_scale_in_1 ==
        INT_Q_SCALE_10m_TM_conversions;
      if (outC->else_clock_1_IfBlock1) {
        outC->_L1_12_IfBlock1 = ENUM_Q_SCALE_10m_TM_conversions;
        _5_q_scale_1 = outC->_L1_12_IfBlock1;
        _2_q_scale_1 = _5_q_scale_1;
      }
      else {
        outC->_L1_11_IfBlock1 = ENUM_Q_SCALE_10cm_TM_conversions;
        _3_q_scale_1 = outC->_L1_11_IfBlock1;
        _2_q_scale_1 = _3_q_scale_1;
      }
      _8_q_scale_1 = _2_q_scale_1;
    }
    outC->q_scale_1 = _8_q_scale_1;
  }
  outC->_L4 = outC->q_scale_1;
  outC->n_iter_int_1 = outC->_L17;
  outC->_L1_1 = outC->n_iter_int_1;
  outC->n_iter_1 = outC->_L1_1;
  outC->_L7 = outC->n_iter_1;
  /* 1 */
  C_P005_unflatten_sections_TM_lib_internal(
    outC->_L22,
    outC->_L7,
    &outC->_L13,
    &outC->Context_1);
  kcg_copy_P005_OBU_sectionlist_enum_T_TM(
    &outC->_L5,
    &outC->Context_1.sections);
  outC->_L10.valid = outC->_L22;
  outC->_L10.q_dir = outC->_L11;
  outC->_L10.l_packet = outC->_L8;
  outC->_L10.q_scale = outC->_L4;
  outC->_L10.n_iter = outC->_L7;
  kcg_copy_P005_OBU_sectionlist_enum_T_TM(&outC->_L10.sections, &outC->_L5);
  kcg_copy_P005_OBU_T_TM(&outC->P005_onboard, &outC->_L10);
  if (outC->IfBlock1_clock_1) {
    outC->_L3_15_IfBlock1 = kcg_false;
    _9_error_1 = outC->_L3_15_IfBlock1;
    outC->error_1 = _9_error_1;
  }
  else {
    if (outC->_3_else_clock_1_IfBlock1) {
      outC->_L3_1_IfBlock1 = kcg_false;
      error_1 = outC->_L3_1_IfBlock1;
      _7_error_1 = error_1;
    }
    else {
      if (outC->else_clock_1_IfBlock1) {
        outC->_L4_1_IfBlock1 = kcg_false;
        _6_error_1 = outC->_L4_1_IfBlock1;
        _1_error_1 = _6_error_1;
      }
      else {
        outC->_L2_1_IfBlock1 = kcg_true;
        _4_error_1 = outC->_L2_1_IfBlock1;
        _1_error_1 = _4_error_1;
      }
      _7_error_1 = _1_error_1;
    }
    outC->error_1 = _7_error_1;
  }
  outC->_L4_1 = outC->error_1;
  noname_1 = outC->_L4_1;
  outC->_L11_1 = 0;
  outC->_L10_1 = outC->_L1_1 < outC->_L11_1;
  _11_noname_1 = outC->_L10_1;
  outC->_L9_1 = 31;
  outC->_L12_1 = outC->_L1_1 > outC->_L9_1;
  _12_noname_1 = outC->_L12_1;
  outC->_L13_1 = 8191;
  outC->_6__L12_1 = 0;
  outC->_L9_17 = outC->_L1_18 > outC->_L13_1;
  outC->_L8_1 = outC->_L1_18 < outC->_6__L12_1;
  _13_noname_1 = outC->_L8_1;
  _14_noname_1 = outC->_L9_17;
  if (outC->_12_IfBlock1_clock_1) {
    outC->_L5_121_IfBlock1 = kcg_false;
    _25_error_1 = outC->_L5_121_IfBlock1;
    outC->_11_error_1 = _25_error_1;
  }
  else {
    if (outC->_19_else_clock_1_IfBlock1) {
      outC->_L5_1_IfBlock1 = kcg_false;
      _16_error_1 = outC->_L5_1_IfBlock1;
      _23_error_1 = _16_error_1;
    }
    else {
      if (outC->_14_else_clock_1_IfBlock1) {
        outC->_L4_118_IfBlock1 = kcg_false;
        _22_error_1 = outC->_L4_118_IfBlock1;
        _17_error_1 = _22_error_1;
      }
      else {
        outC->_L1_116_IfBlock1 = kcg_true;
        _20_error_1 = outC->_L1_116_IfBlock1;
        _17_error_1 = _20_error_1;
      }
      _23_error_1 = _17_error_1;
    }
    outC->_11_error_1 = _23_error_1;
  }
  outC->_10__L13_1 = outC->_11_error_1;
  _15_noname_1 = outC->_10__L13_1;
  outC->_L5_1 = 0;
  outC->_L4_123 = outC->_L1_124 < outC->_L5_1;
  outC->_L3_1 = 256;
  outC->_L2_122 = outC->_L1_124 > outC->_L3_1;
  _27_noname_1 = outC->_L2_122;
  _28_noname_1 = outC->_L4_123;
}
/* TM_conversions::C_P005_compr_onboard */
void C_P005_compr_onboard_TM_conversions(
  /* TM_conversions::C_P005_compr_onboard::PacketData */CompressedPacketData_T_Common_Types_Pkg *PacketData,
  /* TM_conversions::C_P005_compr_onboard::Metadata_Element */MetadataElement_T_Common_Types_Pkg *Metadata_Element,
  /* TM_conversions::C_P005_compr_onboard::P005_onboard */P005_OBU_T_TM *P005_onboard)
{
  /* TM_conversions::CAST_Int_to_Q_DIR::IfBlock1::else */
  static kcg_bool _2_else_clock_1_IfBlock1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::IfBlock1::else */
  static kcg_bool _1_else_clock_1_IfBlock1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::IfBlock1::else::else */
  static kcg_bool else_clock_1_IfBlock1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::IfBlock1 */
  static kcg_bool IfBlock1_clock_1;
  /* TM_conversions::C_P005_compr_onboard::_L6 */
  static array_int_3 _L6;
  /* TM_conversions::C_P005_compr_onboard::_L2 */
  static array_int_1 _L2;
  /* TM_conversions::C_P005_compr_onboard::_L22 */
  static kcg_bool _L22;
  
  _L22 = (*PacketData)[0] == 5;
  (*P005_onboard).valid = _L22;
  kcg_copy_array_int_3(&_L6, (array_int_3 *) &(*PacketData)[1]);
  (*P005_onboard).l_packet = _L6[1];
  else_clock_1_IfBlock1 = _L6[0] == INT_Q_DIR_nomiinal_TM_conversions;
  IfBlock1_clock_1 = _L6[2] == INT_Q_SCALE_10cm_TM_conversions;
  kcg_copy_array_int_1(&_L2, (array_int_1 *) &(*PacketData)[4]);
  (*P005_onboard).n_iter = _L2[0];
  if (else_clock_1_IfBlock1) {
    (*P005_onboard).q_dir = ENUM_Q_DIR_nominal_TM_conversions;
  }
  else {
    _2_else_clock_1_IfBlock1 = _L6[0] == INT_Q_DIR_reverse_TM_conversions;
    if (_2_else_clock_1_IfBlock1) {
      (*P005_onboard).q_dir = ENUM_Q_DIR_reverse_TM_conversions;
    }
    else {
      _1_else_clock_1_IfBlock1 = _L6[0] == INT_Q_DIR_both_TM_conversions;
      if (_1_else_clock_1_IfBlock1) {
        (*P005_onboard).q_dir = ENUM_Q_DIR_both_TM_conversions;
      }
      else {
        (*P005_onboard).q_dir = ENUM_Q_DIR_both_TM_conversions;
      }
    }
  }
  if (IfBlock1_clock_1) {
    (*P005_onboard).q_scale = ENUM_Q_SCALE_10cm_TM_conversions;
  }
  else {
    _1_else_clock_1_IfBlock1 = _L6[2] == INT_Q_SCALE_1m_TM_conversions;
    if (_1_else_clock_1_IfBlock1) {
      (*P005_onboard).q_scale = ENUM_Q_SCALE_1m_TM_conversions;
    }
    else {
      else_clock_1_IfBlock1 = _L6[2] == INT_Q_SCALE_10m_TM_conversions;
      if (else_clock_1_IfBlock1) {
        (*P005_onboard).q_scale = ENUM_Q_SCALE_10m_TM_conversions;
      }
      else {
        (*P005_onboard).q_scale = ENUM_Q_SCALE_10cm_TM_conversions;
      }
    }
  }
  /* 1 */
  C_P005_unflatten_sections_TM_lib_internal(
    _L22,
    _L2[0],
    (P005_sections_array_flat_T_TM *) &(*PacketData)[5],
    &(*P005_onboard).sections);
}
/* TM_conversions::C_P046_tracksim_compr */
void C_P046_tracksim_compr_TM_conversions(
  /* TM_conversions::C_P046_tracksim_compr::P046_from_track */P046_trackside_int_T_TM *P046_from_track,
  outC_C_P046_tracksim_compr_TM_conversions *outC)
{
  static kcg_int i2;
  static kcg_int i1;
  static kcg_int i;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _12_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _11_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _10_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _9_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _8_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _7_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _6_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _5_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR _4_q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool _3_error_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::q_dir */
  static Q_DIR q_dir_1;
  /* TM_conversions::CAST_Int_to_Q_DIR::error */
  static kcg_bool error_1;
  static kcg_bool noname_1;
  
  kcg_copy_P046_trackside_int_T_TM(&outC->_L1, P046_from_track);
  kcg_copy_P046_trackide_sectionlist_T_TM(&outC->_L371, &outC->_L1.SECTIONS);
  outC->_L219 = outC->_L1.N_ITER;
  outC->_L218 = outC->_L1.NID_NTC;
  outC->_L217 = outC->_L1.M_LEVELTR;
  outC->_L216 = outC->_L1.L_PACKET;
  outC->_L215 = outC->_L1.Q_DIR;
  outC->_L387 = outC->_L1.NID_PACKET;
  /* 2 */
  T_Build_Metadata_Packet_ID_TM_lib_internal(
    outC->_L387,
    outC->_L215,
    0,
    46,
    INT_M_VERSION_2_0_TM,
    &outC->Context_2);
  outC->_L390 = outC->Context_2.nid_packet_meta;
  outC->_L388.M_LEVELTR = outC->_L217;
  outC->_L388.NID_NTC = outC->_L218;
  for (i2 = 0; i2 < 1; i2++) {
    kcg_copy_P046_section_int_T_TM(&outC->_L386[i2], &outC->_L388);
  }
  kcg_copy_array__21985(&outC->_L385[0], &outC->_L386);
  kcg_copy_P046_trackide_sectionlist_T_TM(&outC->_L385[1], &outC->_L371);
  outC->_L373[0] = outC->_L387;
  outC->_L373[1] = outC->_L215;
  outC->_L373[2] = outC->_L216;
  for (i1 = 0; i1 < 1; i1++) {
    outC->_L376[i1] = outC->_L219;
  }
  kcg_copy_array_int_3(&outC->_L381[0], &outC->_L373);
  kcg_copy_array_int_1(&outC->_L381[3], &outC->_L376);
  /* 1 */
  C_P046_flatten_sections_TM_lib_internal(&outC->_L385, &outC->Context_1);
  kcg_copy_P046_sections_array_flat_T_TM(
    &outC->_L380,
    &outC->Context_1.Flattened);
  kcg_copy_array_int_4(&outC->_L384[0], &outC->_L381);
  kcg_copy_P046_sections_array_flat_T_TM(&outC->_L384[4], &outC->_L380);
  outC->_L336 = 0;
  for (i = 0; i < 430; i++) {
    outC->_L209[i] = outC->_L336;
  }
  kcg_copy_array_int_70(&outC->_L383[0], &outC->_L384);
  kcg_copy_array_int_430(&outC->_L383[70], &outC->_L209);
  /* 1 */
  T_DeterminePacketSizeInt_TM_lib_internal(
    outC->_L219,
    3 + 1 + 2,
    2,
    &outC->_1_Context_1);
  outC->_L379 = outC->_1_Context_1.p_size;
  outC->p_size = outC->_L379;
  outC->_L378 = outC->p_size;
  outC->q_dir_int_1 = outC->_L215;
  outC->_L12_1 = outC->q_dir_int_1;
  outC->q_dir_in_1 = outC->_L12_1;
  outC->IfBlock1_clock_1 = outC->q_dir_in_1 ==
    INT_Q_DIR_nomiinal_TM_conversions;
  if (outC->IfBlock1_clock_1) {
    outC->_L4_14_IfBlock1 = ENUM_Q_DIR_nominal_TM_conversions;
    _12_q_dir_1 = outC->_L4_14_IfBlock1;
    outC->q_dir_1 = _12_q_dir_1;
  }
  else {
    outC->_3_else_clock_1_IfBlock1 = outC->q_dir_in_1 ==
      INT_Q_DIR_reverse_TM_conversions;
    if (outC->_3_else_clock_1_IfBlock1) {
      outC->_L3_1_IfBlock1 = ENUM_Q_DIR_reverse_TM_conversions;
      q_dir_1 = outC->_L3_1_IfBlock1;
      _10_q_dir_1 = q_dir_1;
    }
    else {
      outC->else_clock_1_IfBlock1 = outC->q_dir_in_1 ==
        INT_Q_DIR_both_TM_conversions;
      if (outC->else_clock_1_IfBlock1) {
        outC->_L2_12_IfBlock1 = ENUM_Q_DIR_both_TM_conversions;
        _7_q_dir_1 = outC->_L2_12_IfBlock1;
        _4_q_dir_1 = _7_q_dir_1;
      }
      else {
        outC->_L2_1_IfBlock1 = ENUM_Q_DIR_both_TM_conversions;
        _5_q_dir_1 = outC->_L2_1_IfBlock1;
        _4_q_dir_1 = _5_q_dir_1;
      }
      _10_q_dir_1 = _4_q_dir_1;
    }
    outC->q_dir_1 = _10_q_dir_1;
  }
  outC->_L356 = outC->q_dir_1;
  outC->_L214 = outC->_L1.valid;
  outC->_L213 = 1;
  outC->_L212 = outC->_L378 - outC->_L213;
  outC->_L206 = 0;
  outC->_L204.nid_packet = outC->_L390;
  outC->_L204.q_dir = outC->_L356;
  outC->_L204.valid = outC->_L214;
  outC->_L204.startAddress = outC->_L206;
  outC->_L204.endAddress = outC->_L212;
  kcg_copy_MetadataElement_T_Common_Types_Pkg(&outC->Header, &outC->_L204);
  kcg_copy_CompressedPacketData_T_Common_Types_Pkg(
    &outC->P005_compressed,
    &outC->_L383);
  if (outC->IfBlock1_clock_1) {
    outC->_L5_15_IfBlock1 = kcg_false;
    _11_error_1 = outC->_L5_15_IfBlock1;
    outC->error_1 = _11_error_1;
  }
  else {
    if (outC->_3_else_clock_1_IfBlock1) {
      outC->_L5_1_IfBlock1 = kcg_false;
      error_1 = outC->_L5_1_IfBlock1;
      _9_error_1 = error_1;
    }
    else {
      if (outC->else_clock_1_IfBlock1) {
        outC->_L4_1_IfBlock1 = kcg_false;
        _8_error_1 = outC->_L4_1_IfBlock1;
        _3_error_1 = _8_error_1;
      }
      else {
        outC->_L1_1_IfBlock1 = kcg_true;
        _6_error_1 = outC->_L1_1_IfBlock1;
        _3_error_1 = _6_error_1;
      }
      _9_error_1 = _3_error_1;
    }
    outC->error_1 = _9_error_1;
  }
  outC->_L13_1 = outC->error_1;
  noname_1 = outC->_L13_1;
}
/* TM_conversions::C_P080_compr_onboard */
void C_P080_compr_onboard_TM_convers(
  /* TM_conversions::C_P080_compr_onboard::PacketData */ CompressedPacketData_T_Common_T *PacketData,
  /* TM_conversions::C_P080_compr_onboard::Metadata_Element */ MetadataElement_T_Common_Types_ *Metadata_Element,
  /* TM_conversions::C_P080_compr_onboard::P080_onboard */ P080_OBU_T_TM *P080_onboard)
{
  /* TM_conversions::CAST_Int_to_Q_SCALE::IfBlock1 */
  static kcg_bool IfBlock1_clock_1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::IfBlock1::else::else */
  static kcg_bool _1_else_clock_1_IfBlock1;
  /* TM_conversions::CAST_Int_to_Q_SCALE::IfBlock1::else */
  static kcg_bool _2_else_clock_1_IfBlock1;
  /* TM_conversions::CAST_Int_to_Q_DIR::IfBlock1::else */
  static kcg_bool else_clock_1_IfBlock1;
  /* TM_conversions::C_P080_compr_onboard::_L6 */
  static array_int_3 _L6;
  /* TM_conversions::C_P080_compr_onboard::_L2 */
  static P044_other_data_TM_TrainToTrack _L2;
  /* TM_conversions::C_P080_compr_onboard::_L22 */
  static kcg_bool _L22;
  
  kcg_copy_P044_other_data_TM_Tra(
    &_L2,
    (P044_other_data_TM_TrainToTrack *) &(*PacketData)[4]);
  (*P080_onboard).n_iter = _L2[0];
  kcg_copy_array_int_3(&_L6, (array_int_3 *) &(*PacketData)[1]);
  (*P080_onboard).l_packet = _L6[1];
  _L22 = (*PacketData)[0] == 80;
  (*P080_onboard).valid = _L22;
  _1_else_clock_1_IfBlock1 = _L6[0] == INT_Q_DIR_nomiinal_TM_conversio;
  IfBlock1_clock_1 = _L6[2] == INT_Q_SCALE_10cm_TM_conversions;
  /* 1_ck_IfBlock1 */ if (_1_else_clock_1_IfBlock1) {
    (*P080_onboard).q_dir = ENUM_Q_DIR_nominal_TM_conversio;
  }
  else {
    else_clock_1_IfBlock1 = _L6[0] == INT_Q_DIR_reverse_TM_conversion;
    /* 1_ck_anon_activ */ if (else_clock_1_IfBlock1) {
      (*P080_onboard).q_dir = ENUM_Q_DIR_reverse_TM_conversio;
    }
    else {
      _2_else_clock_1_IfBlock1 = _L6[0] == INT_Q_DIR_both_TM_conversions;
      /* 1_ck_anon_activ */ if (_2_else_clock_1_IfBlock1) {
        (*P080_onboard).q_dir = ENUM_Q_DIR_both_TM_conversions;
      }
      else {
        (*P080_onboard).q_dir = ENUM_Q_DIR_both_TM_conversions;
      }
    }
  }
  /* 1_ck_IfBlock1 */ if (IfBlock1_clock_1) {
    (*P080_onboard).q_scale = ENUM_Q_SCALE_10cm_TM_conversion;
  }
  else {
    _2_else_clock_1_IfBlock1 = _L6[2] == INT_Q_SCALE_1m_TM_conversions;
    /* 1_ck_anon_activ */ if (_2_else_clock_1_IfBlock1) {
      (*P080_onboard).q_scale = ENUM_Q_SCALE_1m_TM_conversions;
    }
    else {
      _1_else_clock_1_IfBlock1 = _L6[2] == INT_Q_SCALE_10m_TM_conversions;
      /* 1_ck_anon_activ */ if (_1_else_clock_1_IfBlock1) {
        (*P080_onboard).q_scale = ENUM_Q_SCALE_10m_TM_conversions;
      }
      else {
        (*P080_onboard).q_scale = ENUM_Q_SCALE_10cm_TM_conversion;
      }
    }
  }
  /* 1 */
  C_P080_unflatten_sections_TM_li(
    _L22,
    _L2[0],
    (P080_sections_array_flat_T_TM *) &(*PacketData)[5],
    &(*P080_onboard).sections);
}