/* TM_lib_internal::C_P015_unflatten_sections */
void C_P015_unflatten_sections_TM_lib_internal(
    /* TM_lib_internal::C_P015_unflatten_sections::nid_packet_ok */kcg_bool nid_packet_ok,
    /* TM_lib_internal::C_P015_unflatten_sections::n_iter */kcg_int n_iter,
    /* TM_lib_internal::C_P015_unflatten_sections::flat */P015_sections_array_flat_T_TM *flat,
    outC_C_P015_unflatten_sections_TM_lib_internal *outC)
{
    kcg_int i2;
    kcg_int i1;
    kcg_int i;
    kcg_int noname;

    outC->_L11 = nid_packet_ok;
    outC->_L13 = 0;
    outC->_L3 = n_iter;
    outC->_L12 = outC->_L13 < outC->_L3;
    outC->_L14 = outC->_L11 & outC->_L12;
    for (i2 = 0; i2 < 32; i2++) {
        outC->_L5[i2] = outC->_L3;
    }
    kcg_copy_P015_sections_array_flat_T_TM(&outC->_L1, flat);
    for (i1 = 0; i1 < 32; i1++) {
        kcg_copy_P015_sections_array_flat_T_TM(&outC->_L6[i1], &outC->_L1);
    }
    if (outC->_L14) {
        for (i = 0; i < 32; i++) {
            /* 1 */
            C_P015_us_array_TM_lib_internal(
                i,
                outC->_L5[i],
                &outC->_L6[i],
                &outC->Context_1[i]);
            kcg_copy_P015_section_enum_T_TM(
                &outC->_L9[i],
                &outC->Context_1[i].sections);
            outC->_L7 = i + 1;
            if (!outC->Context_1[i].cont) {
                break;
            }
        }
    }
    else {
        outC->_L7 = 0;
    }
#ifdef KCG_MAPW_CPY

    for (i = outC->_L7; i < 32; i++) {
        kcg_copy_P015_section_enum_T_TM(
            &outC->_L9[i],
            (P015_section_enum_T_TM *) &DEFAULT_P015_OBU_section_TM);
    }
#endif /* KCG_MAPW_CPY */

    noname = outC->_L7;
    kcg_copy_P015_OBU_sectionlist_enum_T_TM(&outC->sections, &outC->_L9);
}
/* TM_lib_internal::C_P015_us_array */
void C_P015_us_array_TM_lib_internal(
    /* TM_lib_internal::C_P015_us_array::i */kcg_int i,
    /* TM_lib_internal::C_P015_us_array::n_iter_int */kcg_int n_iter_int,
    /* TM_lib_internal::C_P015_us_array::flat */P015_sections_array_flat_T_TM *flat,
    outC_C_P015_us_array_TM_lib_internal *outC)
{
    outC->_L5 = i;
    outC->_L18 = DIM_P015_n_sections_TM_lib_internal;
    outC->_L16 = outC->_L5 * outC->_L18;
    kcg_copy_P015_sections_array_flat_T_TM(&outC->_L1, flat);
    /* 4 */
    C_P015_extract_el_section_TM_lib_internal(
        outC->_L16,
        &outC->_L1,
        3,
        &outC->Context_4);
    outC->_L21 = outC->Context_4.element;
    /* 2 */
    CAST_Int_to_D_SECTIONTIME_TM_conversions(outC->_L21, &outC->Context_2);
    outC->_L27 = outC->Context_2.d_sectiontimerstoploc;
    outC->_L3 = n_iter_int;
    outC->_L33 = outC->_L3 > outC->_L5;
    outC->_L32 = kcg_true;
    /* 2 */
    C_P015_extract_el_section_TM_lib_internal(
        outC->_L16,
        &outC->_L1,
        1,
        &outC->_1_Context_2);
    outC->_L19 = outC->_1_Context_2.element;
    /* 1 */
    CAST_Int_to_Q_SECTIONTIMER_TM_conversions(outC->_L19, &outC->Context_1);
    outC->_L28 = outC->Context_1.q_sectiontimer;
    /* 3 */
    C_P015_extract_el_section_TM_lib_internal(
        outC->_L16,
        &outC->_L1,
        2,
        &outC->Context_3);
    outC->_L20 = outC->Context_3.element;
    /* 1 */
    CAST_Int_to_T_SECTIONTIMER_TM_conversions(outC->_L20, &outC->_2_Context_1);
    outC->_L26 = outC->_2_Context_1.t_sectiontimer;
    /* 1 */
    C_P015_extract_el_section_TM_lib_internal(
        outC->_L16,
        &outC->_L1,
        0,
        &outC->_3_Context_1);
    outC->_L15 = outC->_3_Context_1.element;
    /* 1 */ CAST_Int_to_L_SECTION_TM_conversions(outC->_L15, &outC->_4_Context_1);
    outC->_L25 = outC->_4_Context_1.l_section;
    outC->cont = outC->_L33;
    outC->_L4.valid = outC->_L32;
    outC->_L4.l_section = outC->_L25;
    outC->_L4.q_sectiontimer = outC->_L28;
    outC->_L4.t_sectiontimer = outC->_L26;
    outC->_L4.d_sectiontimerstoploc = outC->_L27;
    kcg_copy_P015_section_enum_T_TM(&outC->sections, &outC->_L4);
}
/* TM_lib_internal::C_P015_flatten_sections */
void C_P015_flatten_sections_TM_lib_internal(
  /* TM_lib_internal::C_P015_flatten_sections::MergedSections */P015_OBU_sectionlist_int_T_TM *MergedSections,
  /* TM_lib_internal::C_P015_flatten_sections::Flattened */P015_sections_array_flat_T_TM *Flattened)
{
  static P015_sections_array_flat_T_TM tmp;
  static kcg_int i;
  /* TM_lib_internal::C_P015_flatten_sections::_L74 */
  static array_int_4_32 _L74;
  
  for (i = 0; i < 32; i++) {
    /* 2 */
    C_P015_fs_struct_to_array_TM_lib_internal(&(*MergedSections)[i], &_L74[i]);
  }
  kcg_copy_P015_sections_array_flat_T_TM(
    Flattened,
    (P015_sections_array_flat_T_TM *) &DEFAULT_P015_sections_array_flat_TM);
  for (i = 0; i < 128; i++) {
    kcg_copy_P015_sections_array_flat_T_TM(&tmp, Flattened);
    /* 1 */ C_P015_fs_flatten_array_TM_lib_internal(i, &tmp, &_L74, Flattened);
  }
}