_mph_copy_structure_strings (void * to, const mph_string_offset_t * to_offsets, const void * from, const mph_string_offset_t * from_offsets, size_t num_strings)
{
  _Bool D.4977;
  long int D.4978;
  long int D.4979;
  long unsigned int D.4982;
  long unsigned int D.4983;
  const mph_string_offset_t * D.4984;
  unsigned int D.4985;
  unsigned int D.4986;
  sizetype D.4987;
  char * * D.4988;
  long unsigned int D.4989;
  const char * iftmp.0;
  const mph_string_offset_t * D.4991;
  unsigned int D.4992;
  unsigned int D.4993;
  unsigned int D.4996;
  sizetype D.4997;
  char * * D.4999;
  int iftmp.1;
  long unsigned int D.5003;
  int D.5005;
  long unsigned int D.5006;
  long unsigned int D.5007;
  char * D.5013;
  char * iftmp.2;
  char * D.5020;
  sizetype D.5021;
  sizetype D.5022;
  int i;
  size_t buflen;
  int len[10];
  char * buf;
  char * cur;

  try
    {
      cur = 0B;
      D.4977 = num_strings > 9;
      D.4978 = (long int) D.4977;
      D.4979 = __builtin_expect (D.4978, 0);
      if (D.4979 != 0) goto <D.4980>; else goto <D.4981>;
      <D.4980>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "x-struct-str.c", 34, "num_strings < MAX_OFFSETS");
      <D.4981>:
      i = 0;
      goto <D.4967>;
      <D.4966>:
      D.4982 = (long unsigned int) i;
      D.4983 = D.4982 * 4;
      D.4984 = to_offsets + D.4983;
      D.4985 = *D.4984;
      D.4986 = D.4985 >> 1;
      D.4987 = (sizetype) D.4986;
      D.4988 = to + D.4987;
      *D.4988 = 0B;
      i = i + 1;
      <D.4967>:
      D.4989 = (long unsigned int) i;
      if (D.4989 < num_strings) goto <D.4966>; else goto <D.4968>;
      <D.4968>:
      buflen = num_strings;
      i = 0;
      goto <D.4971>;
      <D.4970>:
      {
        const char * s;

        D.4982 = (long unsigned int) i;
        D.4983 = D.4982 * 4;
        D.4991 = from_offsets + D.4983;
        D.4992 = *D.4991;
        D.4993 = D.4992 & 1;
        if (D.4993 != 0) goto <D.4994>; else goto <D.4995>;
        <D.4994>:
        D.4982 = (long unsigned int) i;
        D.4983 = D.4982 * 4;
        D.4991 = from_offsets + D.4983;
        D.4992 = *D.4991;
        D.4996 = D.4992 >> 1;
        D.4997 = (sizetype) D.4996;
        iftmp.0 = from + D.4997;
        goto <D.4998>;
        <D.4995>:
        D.4982 = (long unsigned int) i;
        D.4983 = D.4982 * 4;
        D.4991 = from_offsets + D.4983;
        D.4992 = *D.4991;
        D.4996 = D.4992 >> 1;
        D.4997 = (sizetype) D.4996;
        D.4999 = from + D.4997;
        iftmp.0 = *D.4999;
        <D.4998>:
        s = iftmp.0;
        if (s != 0B) goto <D.5001>; else goto <D.5002>;
        <D.5001>:
        D.5003 = strlen (s);
        iftmp.1 = (int) D.5003;
        goto <D.5004>;
        <D.5002>:
        iftmp.1 = 0;
        <D.5004>:
        len[i] = iftmp.1;
        D.5005 = len[i];
        D.5006 = (long unsigned int) D.5005;
        D.5007 = 2147483647 - buflen;
        if (D.5006 < D.5007) goto <D.5008>; else goto <D.5009>;
        <D.5008>:
        D.5005 = len[i];
        D.5006 = (long unsigned int) D.5005;
        buflen = D.5006 + buflen;
        goto <D.5010>;
        <D.5009>:
        len[i] = -1;
        <D.5010>:
      }
      i = i + 1;
      <D.4971>:
      D.4989 = (long unsigned int) i;
      if (D.4989 < num_strings) goto <D.4970>; else goto <D.4972>;
      <D.4972>:
      buf = malloc (buflen);
      cur = buf;
      if (buf == 0B) goto <D.5011>; else goto <D.5012>;
      <D.5011>:
      D.5013 = 0B;
      return D.5013;
      <D.5012>:
      i = 0;
      goto <D.4974>;
      <D.4973>:
      D.5005 = len[i];
      if (D.5005 > 0) goto <D.5014>; else goto <D.5015>;
      <D.5014>:
      D.4982 = (long unsigned int) i;
      D.4983 = D.4982 * 4;
      D.4984 = to_offsets + D.4983;
      D.4985 = *D.4984;
      D.4986 = D.4985 >> 1;
      D.4987 = (sizetype) D.4986;
      D.4988 = to + D.4987;
      D.4982 = (long unsigned int) i;
      D.4983 = D.4982 * 4;
      D.4991 = from_offsets + D.4983;
      D.4992 = *D.4991;
      D.4993 = D.4992 & 1;
      if (D.4993 != 0) goto <D.5017>; else goto <D.5018>;
      <D.5017>:
      D.4982 = (long unsigned int) i;
      D.4983 = D.4982 * 4;
      D.4991 = from_offsets + D.4983;
      D.4992 = *D.4991;
      D.4996 = D.4992 >> 1;
      D.4997 = (sizetype) D.4996;
      iftmp.2 = from + D.4997;
      goto <D.5019>;
      <D.5018>:
      D.4982 = (long unsigned int) i;
      D.4983 = D.4982 * 4;
      D.4991 = from_offsets + D.4983;
      D.4992 = *D.4991;
      D.4996 = D.4992 >> 1;
      D.4997 = (sizetype) D.4996;
      D.4999 = from + D.4997;
      iftmp.2 = *D.4999;
      <D.5019>:
      D.5020 = strcpy (cur, iftmp.2);
      *D.4988 = D.5020;
      D.5005 = len[i];
      D.5021 = (sizetype) D.5005;
      D.5022 = D.5021 + 1;
      cur = cur + D.5022;
      <D.5015>:
      i = i + 1;
      <D.4974>:
      D.4989 = (long unsigned int) i;
      if (D.4989 < num_strings) goto <D.4973>; else goto <D.4975>;
      <D.4975>:
      D.5013 = buf;
      return D.5013;
    }
  finally
    {
      len = {CLOBBER};
    }
}


strcpy (char * restrict __dest, const char * restrict __src)
{
  char * D.5025;
  long unsigned int D.5026;

  D.5026 = __builtin_object_size (__dest, 1);
  D.5025 = __builtin___strcpy_chk (__dest, __src, D.5026);
  return D.5025;
}


