/* TM_lib_internal::SEND_WriteBaliseMessageHeader */
void SEND_WriteBaliseMessageHeader_T(
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::HeadersIn */ Metadata_T_Common_Types_Pkg *HeadersIn,
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::NewHeader */ MetadataElement_T_Common_Types_ *NewHeader,
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::HeadersOut */ Metadata_T_Common_Types_Pkg *HeadersOut,
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::NewStartAddr */ kcg_int *NewStartAddr,
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::NewEndAddr */ kcg_int *NewEndAddr)
{
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader */
  static kcg_int acc;
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader */
  static kcg_bool cond_iterw;
  static kcg_int i;
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader */
  static MetadataElement_T_Common_Types_ tmp;
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::_L7 */
  static kcg_int _L7;
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::_L3 */
  static kcg_int _L3;
  
  _L7 = 0;
  for (i = 0; i < 30; i++) {
    acc = _L7;
    /* 1 */
    SEND_FindSlot_TM_lib_internal(
      acc,
      &(*HeadersIn)[i],
      (MetadataElement_T_Common_Types_ *) &DEFAULT_Headers_TM[i],
      &cond_iterw,
      &_L7);
    _L3 = i + 1;
    if (!cond_iterw) {
      break;
    }
  }
  /* 1 */ if (_L7 == 0) {
    *NewStartAddr = 0;
  }
  else {
    *NewStartAddr = _L7 + 1;
  }
  *NewEndAddr = *NewStartAddr + ((*NewHeader).endAddress -
      (*NewHeader).startAddress);
  kcg_copy_Metadata_T_Common_Type(HeadersOut, HeadersIn);
  kcg_copy_MetadataElement_T_Comm(&tmp, NewHeader);
  tmp.startAddress = *NewStartAddr;
  tmp.endAddress = *NewEndAddr;
  if ((0 <= _L3 - 1) & (_L3 - 1 < 30)) {
    kcg_copy_MetadataElement_T_Comm(&(*HeadersOut)[_L3 - 1], &tmp);
  }
}
/* TM_lib_internal::SEND_WriteBaliseMessageHeader */
void SEND_WriteBaliseMessageHeader_TM_lib_internal(
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::HeadersIn */Metadata_T_Common_Types_Pkg *HeadersIn,
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::NewHeader */MetadataElement_T_Common_Types_Pkg *NewHeader,
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::HeadersOut */Metadata_T_Common_Types_Pkg *HeadersOut,
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::NewStartAddr */kcg_int *NewStartAddr,
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::NewEndAddr */kcg_int *NewEndAddr)
{
  kcg_int tmp2;
  kcg_bool tmp1;
  kcg_int i;
  MetadataElement_T_Common_Types_Pkg tmp;
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::_L7 */ kcg_int _L7;
  /* TM_lib_internal::SEND_WriteBaliseMessageHeader::_L3 */ kcg_int _L3;
  
  _L7 = 0;
  for (i = 0; i < 30; i++) {
    tmp2 = _L7;
    /* 1 */
    SEND_FindSlot_TM_lib_internal(
      tmp2,
      &(*HeadersIn)[i],
      (MetadataElement_T_Common_Types_Pkg *) &DEFAULT_Headers_TM[i],
      &tmp1,
      &_L7);
    _L3 = i + 1;
    if (!tmp1) {
      break;
    }
  }
  if (_L7 == 0) {
    *NewStartAddr = 0;
  }
  else {
    *NewStartAddr = _L7 + 1;
  }
  *NewEndAddr = *NewStartAddr + ((*NewHeader).endAddress -
      (*NewHeader).startAddress);
  kcg_copy_Metadata_T_Common_Types_Pkg(HeadersOut, HeadersIn);
  kcg_copy_MetadataElement_T_Common_Types_Pkg(&tmp, NewHeader);
  tmp.startAddress = *NewStartAddr;
  tmp.endAddress = *NewEndAddr;
  if ((0 <= _L3 - 1) & (_L3 - 1 < 30)) {
    kcg_copy_MetadataElement_T_Common_Types_Pkg(&(*HeadersOut)[_L3 - 1], &tmp);
  }
}
/* TM_lib_internal::SEND_WriteMessageHeader */
void SEND_WriteMessageHeader_TM_lib_internal(
  /* TM_lib_internal::SEND_WriteMessageHeader::HeadersIn */Metadata_T_Common_Types_Pkg *HeadersIn,
  /* TM_lib_internal::SEND_WriteMessageHeader::NewHeader */MetadataElement_T_Common_Types_Pkg *NewHeader,
  outC_SEND_WriteMessageHeader_TM_lib_internal *outC)
{
  kcg_int tmp;
  kcg_int i;
  
  outC->_L5 = 0;
  kcg_copy_Metadata_T_Common_Types_Pkg(&outC->_L1, HeadersIn);
  kcg_copy_Metadata_T_Common_Types_Pkg(
    &outC->_L8,
    (Metadata_T_Common_Types_Pkg *) &DEFAULT_Headers_TM);
  outC->_L4 = kcg_true;
  outC->_L7 = outC->_L5;
  if (outC->_L4) {
    for (i = 0; i < 30; i++) {
      tmp = outC->_L7;
      /* 1 */
      SEND_FindSlot_TM_lib_internal(
        tmp,
        &outC->_L1[i],
        &outC->_L8[i],
        &outC->Context_1[i]);
      outC->_L7 = outC->Context_1[i].Acc;
      outC->_L3 = i + 1;
      if (!outC->Context_1[i].Cont) {
        break;
      }
    }
  }
  else {
    outC->_L3 = 0;
  }
  kcg_copy_MetadataElement_T_Common_Types_Pkg(&outC->_L9, NewHeader);
  outC->_L33 = 0;
  outC->_L32 = outC->_L7 == outC->_L33;
  outC->_L34 = 1;
  outC->_L35 = outC->_L7 + outC->_L34;
  if (outC->_L32) {
    outC->_L31 = outC->_L33;
  }
  else {
    outC->_L31 = outC->_L35;
  }
  kcg_copy_MetadataElement_T_Common_Types_Pkg(&outC->_L43, &outC->_L9);
  if (kcg_true) {
    outC->_L43.startAddress = outC->_L31;
  }
  outC->_L37 = outC->_L9.endAddress;
  outC->_L36 = outC->_L9.startAddress;
  outC->_L18 = outC->_L37 - outC->_L36;
  outC->_L22 = outC->_L31 + outC->_L18;
  kcg_copy_MetadataElement_T_Common_Types_Pkg(&outC->_L44, &outC->_L43);
  if (kcg_true) {
    outC->_L44.endAddress = outC->_L22;
  }
  outC->NewEndAddr = outC->_L22;
  outC->NewStartAddr = outC->_L31;
  kcg_copy_Metadata_T_Common_Types_Pkg(&outC->_L24, HeadersIn);
  outC->_L16 = 1;
  outC->_L17 = outC->_L3 - outC->_L16;
  kcg_copy_Metadata_T_Common_Types_Pkg(&outC->_L23, &outC->_L24);
  if ((0 <= outC->_L17) & (outC->_L17 < 30)) {
    kcg_copy_MetadataElement_T_Common_Types_Pkg(
      &outC->_L23[outC->_L17],
      &outC->_L44);
  }
  kcg_copy_Metadata_T_Common_Types_Pkg(&outC->HeadersOut, &outC->_L23);
}