/* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop */
void MoveGPSectionsToNewLRBGafter_Loop_TA_Lib_internal(
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::i */kcg_int i,
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::ProfileIn */GradientProfile_t_TrackAtlasTypes *ProfileIn,
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::FirstElement */kcg_int FirstElement,
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::Distance_2LRBGs */kcg_int Distance_2LRBGs,
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::ProfileOut */GradientProfile_t_TrackAtlasTypes *ProfileOut)
{
  Gradient_section_t_TrackAtlasTypes tmp;
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::_L6 */ Gradient_section_t_TrackAtlasTypes _L6;
  
  if ((0 <= FirstElement + i) & (FirstElement + i < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &_L6,
      &(*ProfileIn)[FirstElement + i]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &_L6,
      (Gradient_section_t_TrackAtlasTypes *)
        &DEFAULT_GradientSection_TrackAtlasTypes);
  }
  kcg_copy_GradientProfile_t_TrackAtlasTypes(ProfileOut, ProfileIn);
  kcg_copy_Gradient_section_t_TrackAtlasTypes(&tmp, &_L6);
  tmp.Loc_LRBG = /* 1 */
    NormalizePos_TA_Lib_internal(_L6.Loc_LRBG - Distance_2LRBGs, 0);
  if ((0 <= i) & (i < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(&(*ProfileOut)[i], &tmp);
  }
}
/* TA_Lib_internal::FindStartOfNewGradientProfileAbs_LOOP */
void FindStartOfNewGradientProfileAbs_LOOP_TA_Lib_internal(
  /* TA_Lib_internal::FindStartOfNewGradientProfileAbs_LOOP::i */ kcg_int i,
  /* TA_Lib_internal::FindStartOfNewGradientProfileAbs_LOOP::Acc */ kcg_int Acc,
  /* TA_Lib_internal::FindStartOfNewGradientProfileAbs_LOOP::distance_in */ L_internal_Type_Obu_BasicTypes_Pkg distance_in,
  /* TA_Lib_internal::FindStartOfNewGradientProfileAbs_LOOP::Profile_in */ GradientProfile_t_TrackAtlasTypes *Profile_in,
  /* TA_Lib_internal::FindStartOfNewGradientProfileAbs_LOOP::cont */ kcg_bool *cont,
  /* TA_Lib_internal::FindStartOfNewGradientProfileAbs_LOOP::relevant_section */ kcg_int *relevant_section)
{
  /* TA_Lib_internal::FindStartOfNewGradientProfileAbs_LOOP */
  static G_internal_Type_Obu_BasicTypes_Pkg tmp;
  /* TA_Lib_internal::FindStartOfNewGradientProfileAbs_LOOP::_L4 */
  static Gradient_section_t_TrackAtlasTypes _L4;
  
  if ((0 <= i) & (i < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(&_L4, &(*Profile_in)[i]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &_L4,
      (Gradient_section_t_TrackAtlasTypes *)
        &DEFAULT_GradientSection_TrackAtlasTypes);
  }
  /* 2 */ if (0 <= _L4.Gradient) {
    tmp = _L4.Gradient;
  }
  else {
    tmp = - _L4.Gradient;
  }
  *cont = !((i > 0) & (0 == _L4.Loc_Absolute)) & (_L4.Loc_Absolute <
      distance_in) & (tmp != 255);
  *relevant_section = i + 0;
}
/* TA_Gradient_new::GP_Merge_New_P21_to_Profile_loop */
void GP_Merge_New_P21_to_Profile_loop_TA_Gradient_new(
  /* TA_Gradient_new::GP_Merge_New_P21_to_Profile_loop::i */ kcg_int i,
  /* TA_Gradient_new::GP_Merge_New_P21_to_Profile_loop::GP */ GradientProfile_t_TrackAtlasTypes *GP,
  /* TA_Gradient_new::GP_Merge_New_P21_to_Profile_loop::First_Section_To_Replace */ kcg_int First_Section_To_Replace,
  /* TA_Gradient_new::GP_Merge_New_P21_to_Profile_loop::new_GP_received */ GradientProfile_t_TrackAtlasTypes *new_GP_received,
  /* TA_Gradient_new::GP_Merge_New_P21_to_Profile_loop::GradientProfile_out */ GradientProfile_t_TrackAtlasTypes *GradientProfile_out)
{
  /* TA_Gradient_new::GP_Merge_New_P21_to_Profile_loop */
  static Gradient_section_t_TrackAtlasTypes tmp;
  
  kcg_copy_GradientProfile_t_TrackAtlasTypes(GradientProfile_out, GP);
  if ((0 <= i) & (i < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(&tmp, &(*new_GP_received)[i]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &tmp,
      (Gradient_section_t_TrackAtlasTypes *)
        &DEFAULT_GradientSection_TrackAtlasTypes);
  }
  if ((0 <= i + First_Section_To_Replace) & (i + First_Section_To_Replace <
      50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &(*GradientProfile_out)[i + First_Section_To_Replace],
      &tmp);
  }
}
/* TA_Lib_internal::MoveGPSectionsAbsolute_Loop */
void MoveGPSectionsAbsolute_Loop_TA_Lib_internal(
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::i */kcg_int i,
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::ProfileIn */GradientProfile_t_TrackAtlasTypes *ProfileIn,
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::msg_prvLRBG */kcg_bool msg_prvLRBG,
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::msg_LRBG */kcg_bool msg_LRBG,
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::pos_LRBG */L_internal_Type_Obu_BasicTypes_Pkg pos_LRBG,
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::pos_prvLRBG */L_internal_Type_Obu_BasicTypes_Pkg pos_prvLRBG,
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::ProfileOut */GradientProfile_t_TrackAtlasTypes *ProfileOut)
{
  static Gradient_section_t_TrackAtlasTypes tmp1;
  static kcg_int tmp;
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::IfBlock1::else */
  static kcg_bool else_clock_IfBlock1;
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::IfBlock1 */
  static kcg_bool IfBlock1_clock;
  /* TA_Lib_internal::MoveGPSectionsAbsolute_Loop::_L6 */
  static Gradient_section_t_TrackAtlasTypes _L6;
  
  IfBlock1_clock = msg_LRBG & !msg_prvLRBG;
  if (IfBlock1_clock) {
  }
  else {
    else_clock_IfBlock1 = !msg_LRBG & msg_prvLRBG;
  }
  if ((0 <= i) & (i < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(&_L6, &(*ProfileIn)[i]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &_L6,
      (Gradient_section_t_TrackAtlasTypes *)
        &DEFAULT_GradientSection_TrackAtlasTypes);
  }
  kcg_copy_GradientProfile_t_TrackAtlasTypes(ProfileOut, ProfileIn);
  kcg_copy_Gradient_section_t_TrackAtlasTypes(&tmp1, &_L6);
  tmp1.Loc_LRBG = 0;
  if (_L6.valid) {
    if (IfBlock1_clock) {
      tmp = pos_LRBG;
    }
    else if (else_clock_IfBlock1) {
      tmp = pos_prvLRBG;
    }
    else {
      tmp = 0;
    }
  }
  else {
    tmp = 0;
  }
  tmp1.Loc_Absolute = _L6.Loc_Absolute + tmp;
  if ((0 <= i) & (i < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(&(*ProfileOut)[i], &tmp1);
  }
}
/* TA_Gradient::GP_Correct_StartSection */
void GP_Correct_StartSection_TA_Gradient(
  /* TA_Gradient::GP_Correct_StartSection::Profile_in */GradientProfile_t_TrackAtlasTypes *Profile_in,
  /* TA_Gradient::GP_Correct_StartSection::Loc_BG */kcg_int Loc_BG,
  /* TA_Gradient::GP_Correct_StartSection::Profile_out */GradientProfile_t_TrackAtlasTypes *Profile_out)
{
  kcg_copy_GradientProfile_t_TrackAtlasTypes(Profile_out, Profile_in);
  kcg_copy_Gradient_section_t_TrackAtlasTypes(
    &(*Profile_out)[0],
    &(*Profile_in)[0]);
  (*Profile_out)[0].Loc_LRBG = 0;
}
/* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop */
void MoveGPSectionsToNewLRBGaf_TA_Lib_internal(
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::i */kcg_int i,
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::ProfileIn */GradientProfile_t_TrackAtlasTypes *ProfileIn,
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::FirstElement */kcg_int FirstElement,
  /* TA_Lib_internal::MoveGPSectionsToNewLRBGafter_Loop::Distance_2LRBGs */kcg_int Distance_2LRBGs,
  outC_MoveGPSectionsToNewLRBGaf_TA_Lib_internal *outC)
{
  kcg_copy_GradientProfile_t_TrackAtlasTypes(&outC->_L2, ProfileIn);
  outC->_L3 = FirstElement;
  outC->_L1 = i;
  outC->_L5 = outC->_L3 + outC->_L1;
  if ((0 <= outC->_L5) & (outC->_L5 < 10)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &outC->_L6,
      &outC->_L2[outC->_L5]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &outC->_L6,
      (Gradient_section_t_TrackAtlasTypes *)
        &DEFAULT_GradientSection_TrackAtlasTypes);
  }
  outC->_L8 = outC->_L6.Loc_LRBG;
  outC->_L4 = Distance_2LRBGs;
  outC->_L10 = outC->_L8 - outC->_L4;
  /* 1 */ NormalizePos_TA_Lib_internal(outC->_L10, 0, &outC->Context_1);
  outC->_L12 = outC->Context_1.Out;
  kcg_copy_Gradient_section_t_TrackAtlasTypes(&outC->_L9, &outC->_L6);
  if (kcg_true) {
    outC->_L9.Loc_LRBG = outC->_L12;
  }
  kcg_copy_GradientProfile_t_TrackAtlasTypes(&outC->_L7, &outC->_L2);
  if ((0 <= outC->_L1) & (outC->_L1 < 10)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &outC->_L7[outC->_L1],
      &outC->_L9);
  }
  kcg_copy_GradientProfile_t_TrackAtlasTypes(&outC->ProfileOut, &outC->_L7);
}
/* TA_Lib_internal::FindStartOfNewGradientProfile_LOOP */
void FindStartOfNewGradientPro_TA_Lib_internal(
  /* TA_Lib_internal::FindStartOfNewGradientProfile_LOOP::i */kcg_int i,
  /* TA_Lib_internal::FindStartOfNewGradientProfile_LOOP::Acc */kcg_int Acc,
  /* TA_Lib_internal::FindStartOfNewGradientProfile_LOOP::distance_in */L_internal_Type_Obu_BasicTypes_Pkg distance_in,
  /* TA_Lib_internal::FindStartOfNewGradientProfile_LOOP::Profile_in */GradientProfile_t_TrackAtlasTypes *Profile_in,
  outC_FindStartOfNewGradientPro_TA_Lib_internal *outC)
{
  kcg_int noname;
  
  outC->_L14 = i;
  outC->_L12 = 0;
  outC->_L13 = outC->_L14 > outC->_L12;
  kcg_copy_GradientProfile_t_TrackAtlasTypes(&outC->_L2, Profile_in);
  outC->_L3 = i;
  if ((0 <= outC->_L3) & (outC->_L3 < 10)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &outC->_L4,
      &outC->_L2[outC->_L3]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &outC->_L4,
      (Gradient_section_t_TrackAtlasTypes *)
        &DEFAULT_GradientSection_TrackAtlasTypes);
  }
  outC->_L5 = outC->_L4.Loc_LRBG;
  outC->_L15 = outC->_L12 == outC->_L5;
  outC->_L16 = outC->_L13 & outC->_L15;
  outC->_L17 = !outC->_L16;
  outC->_L1 = distance_in;
  outC->_L6 = outC->_L5 < outC->_L1;
  outC->_L18 = outC->_L17 & outC->_L6;
  outC->_L8 = Acc;
  noname = outC->_L8;
  outC->_L7 = i;
  outC->relevant_section = outC->_L7;
  outC->cont = outC->_L18;
}
/* TA_Lib_internal::FindFirstRelevantGPForNewLRBG_Loop */
void FindFirstRelevantGPForNew_TA_Lib_internal(
  /* TA_Lib_internal::FindFirstRelevantGPForNewLRBG_Loop::i */kcg_int i,
  /* TA_Lib_internal::FindFirstRelevantGPForNewLRBG_Loop::Acc */kcg_int Acc,
  /* TA_Lib_internal::FindFirstRelevantGPForNewLRBG_Loop::Profile_in */GradientProfile_t_TrackAtlasTypes *Profile_in,
  /* TA_Lib_internal::FindFirstRelevantGPForNewLRBG_Loop::Distance_2LRBGs */kcg_int Distance_2LRBGs,
  outC_FindFirstRelevantGPForNew_TA_Lib_internal *outC)
{
  kcg_int noname;
  
  outC->_L182 = i;
  outC->_L176 = 0;
  outC->_L181 = outC->_L182 > outC->_L176;
  kcg_copy_GradientProfile_t_TrackAtlasTypes(&outC->_L170, Profile_in);
  outC->_L168 = i;
  if ((0 <= outC->_L168) & (outC->_L168 < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &outC->_L172,
      &outC->_L170[outC->_L168]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &outC->_L172,
      (Gradient_section_t_TrackAtlasTypes *)
        &DEFAULT_GradientSection_TrackAtlasTypes);
  }
  outC->_L173 = outC->_L172.Loc_LRBG;
  outC->_L177 = outC->_L176 == outC->_L173;
  outC->_L178 = outC->_L181 & outC->_L177;
  outC->_L179 = !outC->_L178;
  outC->_L171 = Distance_2LRBGs;
  outC->_L174 = outC->_L173 < outC->_L171;
  outC->_L180 = outC->_L179 & outC->_L174;
  outC->cont = outC->_L180;
  outC->_L175 = i;
  outC->_L169 = Acc;
  noname = outC->_L169;
  outC->relevant_section = outC->_L175;
}
/* TA_Gradient_new::GP_Normalize_Profile_loop */
void GP_Normalize_Profile_loop_TA_Gradient_new(
  /* TA_Gradient_new::GP_Normalize_Profile_loop::i */ kcg_int i,
  /* TA_Gradient_new::GP_Normalize_Profile_loop::ProfileIn */ GradientProfile_t_TrackAtlasTypes *ProfileIn,
  /* TA_Gradient_new::GP_Normalize_Profile_loop::pos_BG */ L_internal_Type_Obu_BasicTypes_Pkg pos_BG,
  /* TA_Gradient_new::GP_Normalize_Profile_loop::ProfileNormalized_LRBG */ GradientProfile_t_TrackAtlasTypes *ProfileNormalized_LRBG)
{
  /* TA_Gradient_new::GP_Normalize_Profile_loop */ Gradient_section_t_TrackAtlasTypes tmp;
  /* TA_Gradient_new::GP_Normalize_Profile_loop::_L4 */ Gradient_section_t_TrackAtlasTypes _L4;
  /* TA_Gradient_new::GP_Normalize_Profile_loop::_L26 */ kcg_int _L26;
  
  if ((0 <= i) & (i < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(&_L4, &(*ProfileIn)[i]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &_L4,
      (Gradient_section_t_TrackAtlasTypes *)
        &DEFAULT_GP_Section_TA_Gradient_new);
  }
  if ((0 <= i + 1) & (i + 1 < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(&tmp, &(*ProfileIn)[i + 1]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &tmp,
      (Gradient_section_t_TrackAtlasTypes *)
        &DEFAULT_GP_Section_TA_Gradient_new);
  }
  _L26 = tmp.Loc_Absolute - _L4.Loc_Absolute;
  kcg_copy_GradientProfile_t_TrackAtlasTypes(ProfileNormalized_LRBG, ProfileIn);
  kcg_copy_Gradient_section_t_TrackAtlasTypes(&tmp, &_L4);
  /* 2 */ if (_L4.valid) {
    tmp.Loc_LRBG = _L4.Loc_Absolute - pos_BG;
  }
  else {
    tmp.Loc_LRBG = 0;
  }
  /* 3 */ if (_L26 > 0) {
    tmp.L_Gradient = _L26;
  }
  else {
    tmp.L_Gradient = 0;
  }
  if ((0 <= i) & (i < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &(*ProfileNormalized_LRBG)[i],
      &tmp);
  }
}
/* TA_Export::GradientProfile_to_DMI_loop */
void GradientProfile_to_DMI_loop_TA_Export(
  /* TA_Export::GradientProfile_to_DMI_loop::Gradient_section_in */Gradient_section_t_TrackAtlasTypes *Gradient_section_in,
  outC_GradientProfile_to_DMI_loop_TA_Export *outC)
{
  L_internal_Type_Obu_BasicTypes_Pkg noname;
  
  kcg_copy_Gradient_section_t_TrackAtlasTypes(&outC->_L1, Gradient_section_in);
  outC->_L6 = outC->_L1.L_Gradient;
  outC->_L5 = outC->_L1.Gradient;
  outC->_L4 = outC->_L1.Loc_LRBG;
  outC->_L3 = outC->_L1.Loc_Absolute;
  outC->_L13 = outC->_L4 + outC->_L6;
  noname = outC->_L3;
  outC->_L2 = outC->_L1.valid;
  outC->_L12.valid = outC->_L2;
  outC->_L12.begin_section = outC->_L4;
  outC->_L12.end_section = outC->_L13;
  outC->_L12.gradient = outC->_L5;
  kcg_copy__3_GradientProfile_for_DMI_section_t_TrackAtlasTypes(
    &outC->Gradiient_section_for_DMI_out,
    &outC->_L12);
}
/* TA_Gradient::GP_Convert_P21_to_DistanceProfile_loop */
void GP_Convert_P21_to_DistanceProfile_loop_TA_Gradient(
  /* TA_Gradient::GP_Convert_P21_to_DistanceProfile_loop::i */kcg_int i,
  /* TA_Gradient::GP_Convert_P21_to_DistanceProfile_loop::ProfileAccu */GradientProfile_t_TrackAtlasTypes *ProfileAccu,
  /* TA_Gradient::GP_Convert_P21_to_DistanceProfile_loop::SectionIn */P021_OBU_sectionlist_enum_T_TM *SectionIn,
  /* TA_Gradient::GP_Convert_P21_to_DistanceProfile_loop::q_scale */Q_SCALE q_scale,
  /* TA_Gradient::GP_Convert_P21_to_DistanceProfile_loop::GradientProfile */GradientProfile_t_TrackAtlasTypes *GradientProfile)
{
  static kcg_int tmp4;
  static kcg_int tmp3;
  static G_internal_Type_Obu_BasicTypes_Pkg tmp2;
  static L_internal_Type_Obu_BasicTypes_Pkg tmp1;
  static P021_section_enum_T_TM tmp;
  /* TA_Gradient::GP_Convert_P21_to_DistanceProfile_loop::_L123 */
  static P021_section_enum_T_TM _L123;
  /* TA_Gradient::GP_Convert_P21_to_DistanceProfile_loop::_L143 */
  static Gradient_section_t_TrackAtlasTypes _L143;
  
  if ((0 <= i - 1) & (i - 1 < 50)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(&_L143, &(*ProfileAccu)[i - 1]);
  }
  else {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &_L143,
      (Gradient_section_t_TrackAtlasTypes *) &DEFAULT_GP_Section_TA_Gradient);
  }
  if ((0 <= i) & (i < 33)) {
    kcg_copy_P021_section_enum_T_TM(&_L123, &(*SectionIn)[i]);
  }
  else {
    kcg_copy_P021_section_enum_T_TM(
      &_L123,
      (P021_section_enum_T_TM *) &DEFAULT_P021_OBU_section_TM);
  }
  tmp2 = /* 3 */
    Normalize_Distance_d_internal_t_TA_Lib_internal(q_scale, _L123.d_gradient);
  kcg_copy_GradientProfile_t_TrackAtlasTypes(GradientProfile, ProfileAccu);
  if (_L123.valid) {
    tmp4 = tmp2 + _L143.Loc_Absolute;
    tmp3 = tmp2 + _L143.Loc_LRBG;
  }
  else {
    tmp4 = 0;
    tmp3 = 0;
  }
  tmp2 = /* 2 */ EVAL_Q_GDIR_TA_Lib_internal(_L123.q_gdir, _L123.g_a);
  if ((0 <= i + 1) & (i + 1 < 33)) {
    kcg_copy_P021_section_enum_T_TM(&tmp, &(*SectionIn)[i + 1]);
  }
  else {
    kcg_copy_P021_section_enum_T_TM(
      &tmp,
      (P021_section_enum_T_TM *) &DEFAULT_P021_OBU_section_TM);
  }
  tmp1 = /* 4 */
    Normalize_Distance_d_internal_t_TA_Lib_internal(q_scale, tmp.d_gradient);
  if ((0 <= i) & (i < 50)) {
    (*GradientProfile)[i].valid = _L123.valid;
    (*GradientProfile)[i].Loc_Absolute = tmp4;
    (*GradientProfile)[i].Loc_LRBG = tmp3;
    (*GradientProfile)[i].Gradient = tmp2;
    (*GradientProfile)[i].L_Gradient = tmp1;
  }
}
/* TA_Gradient::Convert_P21_to_DistanceProfile_loop */
void Convert_P21_to_DistancePr_TA_Gradient(
  /* TA_Gradient::Convert_P21_to_DistanceProfile_loop::i */kcg_int i,
  /* TA_Gradient::Convert_P21_to_DistanceProfile_loop::acc */GradientProfile_t_TrackAtlasTypes *acc,
  /* TA_Gradient::Convert_P21_to_DistanceProfile_loop::SectionIn */P021_OBU_sectionlist_enum_T_TM *SectionIn,
  /* TA_Gradient::Convert_P21_to_DistanceProfile_loop::q_scale */Q_SCALE q_scale,
  outC_Convert_P21_to_DistancePr_TA_Gradient *outC)
{
  outC->_L134 = i;
  outC->_L126 = 1;
  outC->_L141 = outC->_L134 + outC->_L126;
  kcg_copy_P021_OBU_sectionlist_enum_T_TM(&outC->_L128, SectionIn);
  if ((0 <= outC->_L141) & (outC->_L141 < 33)) {
    kcg_copy_P021_section_enum_T_TM(&outC->_L140, &outC->_L128[outC->_L141]);
  }
  else {
    kcg_copy_P021_section_enum_T_TM(
      &outC->_L140,
      (P021_section_enum_T_TM *) &DEFAULT_P021_OBU_section_TM);
  }
  outC->_L139 = q_scale;
  kcg_copy_P021_OBU_sectionlist_enum_T_TM(&outC->_L121, SectionIn);
  if ((0 <= outC->_L134) & (outC->_L134 < 33)) {
    kcg_copy_P021_section_enum_T_TM(&outC->_L123, &outC->_L121[outC->_L134]);
  }
  else {
    kcg_copy_P021_section_enum_T_TM(
      &outC->_L123,
      (P021_section_enum_T_TM *) &DEFAULT_P021_OBU_section_TM);
  }
  outC->_L138 = outC->_L123.d_gradient;
  outC->_L137 = outC->_L140.d_gradient;
  outC->_L130 = outC->_L123.valid;
  /* 3 */
  Normalize_Distance_d_inte_TA_Lib_internal(
    outC->_L139,
    outC->_L138,
    &outC->Context_3);
  outC->_L135 = outC->Context_3.d_internal;
  outC->_L129 = outC->_L123.q_gdir;
  outC->_L124 = outC->_L123.g_a;
  /* 2 */
  EVAL_Q_GDIR_TA_Lib_internal(outC->_L129, outC->_L124, &outC->Context_2);
  outC->_L127 = outC->Context_2.gradient;
  /* 4 */
  Normalize_Distance_d_inte_TA_Lib_internal(
    outC->_L139,
    outC->_L137,
    &outC->Context_4);
  outC->_L122 = outC->Context_4.d_internal;
  outC->_L132 = outC->_L122 - outC->_L135;
  outC->_L136.valid = outC->_L130;
  outC->_L136.Loc_Absolute = outC->_L135;
  outC->_L136.Loc_LRBG = outC->_L135;
  outC->_L136.Gradient = outC->_L127;
  outC->_L136.L_Gradient = outC->_L132;
  kcg_copy_GradientProfile_t_TrackAtlasTypes(&outC->_L125, acc);
  outC->_L131 = i;
  kcg_copy_GradientProfile_t_TrackAtlasTypes(&outC->_L133, &outC->_L125);
  if ((0 <= outC->_L131) & (outC->_L131 < 10)) {
    kcg_copy_Gradient_section_t_TrackAtlasTypes(
      &outC->_L133[outC->_L131],
      &outC->_L136);
  }
  kcg_copy_GradientProfile_t_TrackAtlasTypes(
    &outC->GradientProfile,
    &outC->_L133);
}