/* Generated by Frama-C */
#include "stddef.h"
#include "stdio.h"
void duffcopy(char *to, char *from, int count)
{
  __e_acsl_store_block((void *)(& from),(size_t)8);
  __e_acsl_store_block((void *)(& to),(size_t)8);
  int n = (count + 7) / 8;
  switch (count % 8) 
    case 0:
    while (1) {
      {
        char *tmp;
        char *tmp_0;
        char *tmp_1;
        char *tmp_2;
        char *tmp_3;
        char *tmp_4;
        char *tmp_5;
        char *tmp_6;
        char *tmp_7;
        char *tmp_8;
        char *tmp_9;
        char *tmp_10;
        char *tmp_11;
        char *tmp_12;
        char *tmp_13;
        char *tmp_14;
        __e_acsl_store_block((void *)(& tmp_14),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_13),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_12),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_11),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_10),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_9),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_8),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_7),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_6),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_5),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_4),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_3),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_2),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_1),(size_t)8);
        __e_acsl_store_block((void *)(& tmp_0),(size_t)8);
        __e_acsl_store_block((void *)(& tmp),(size_t)8);
        __e_acsl_full_init((void *)(& tmp));
        tmp = to;
        to ++;
        __e_acsl_full_init((void *)(& tmp_0));
        tmp_0 = from;
        from ++;
        __e_acsl_initialize((void *)tmp,sizeof(char));
        *tmp = *tmp_0;
        case 7: __e_acsl_store_block_duplicate((void *)(& tmp),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_0),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_1),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_2),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_3),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_4),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_5),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_6),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_7),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_8),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_9),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_10),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_11),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_12),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_13),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_14),(size_t)8);
        __e_acsl_full_init((void *)(& tmp_1));
        tmp_1 = to;
        to ++;
        __e_acsl_full_init((void *)(& tmp_2));
        tmp_2 = from;
        from ++;
        __e_acsl_initialize((void *)tmp_1,sizeof(char));
        *tmp_1 = *tmp_2;
        case 6: __e_acsl_store_block_duplicate((void *)(& tmp),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_0),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_1),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_2),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_3),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_4),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_5),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_6),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_7),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_8),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_9),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_10),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_11),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_12),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_13),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_14),(size_t)8);
        __e_acsl_full_init((void *)(& tmp_3));
        tmp_3 = to;
        to ++;
        __e_acsl_full_init((void *)(& tmp_4));
        tmp_4 = from;
        from ++;
        __e_acsl_initialize((void *)tmp_3,sizeof(char));
        *tmp_3 = *tmp_4;
        case 5: __e_acsl_store_block_duplicate((void *)(& tmp),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_0),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_1),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_2),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_3),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_4),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_5),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_6),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_7),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_8),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_9),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_10),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_11),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_12),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_13),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_14),(size_t)8);
        __e_acsl_full_init((void *)(& tmp_5));
        tmp_5 = to;
        to ++;
        __e_acsl_full_init((void *)(& tmp_6));
        tmp_6 = from;
        from ++;
        __e_acsl_initialize((void *)tmp_5,sizeof(char));
        *tmp_5 = *tmp_6;
        case 4: __e_acsl_store_block_duplicate((void *)(& tmp),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_0),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_1),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_2),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_3),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_4),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_5),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_6),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_7),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_8),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_9),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_10),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_11),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_12),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_13),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_14),(size_t)8);
        __e_acsl_full_init((void *)(& tmp_7));
        tmp_7 = to;
        to ++;
        __e_acsl_full_init((void *)(& tmp_8));
        tmp_8 = from;
        from ++;
        __e_acsl_initialize((void *)tmp_7,sizeof(char));
        *tmp_7 = *tmp_8;
        case 3: __e_acsl_store_block_duplicate((void *)(& tmp),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_0),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_1),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_2),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_3),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_4),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_5),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_6),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_7),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_8),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_9),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_10),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_11),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_12),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_13),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_14),(size_t)8);
        __e_acsl_full_init((void *)(& tmp_9));
        tmp_9 = to;
        to ++;
        __e_acsl_full_init((void *)(& tmp_10));
        tmp_10 = from;
        from ++;
        __e_acsl_initialize((void *)tmp_9,sizeof(char));
        *tmp_9 = *tmp_10;
        case 2: __e_acsl_store_block_duplicate((void *)(& tmp),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_0),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_1),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_2),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_3),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_4),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_5),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_6),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_7),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_8),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_9),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_10),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_11),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_12),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_13),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_14),(size_t)8);
        __e_acsl_full_init((void *)(& tmp_11));
        tmp_11 = to;
        to ++;
        __e_acsl_full_init((void *)(& tmp_12));
        tmp_12 = from;
        from ++;
        __e_acsl_initialize((void *)tmp_11,sizeof(char));
        *tmp_11 = *tmp_12;
        case 1: __e_acsl_store_block_duplicate((void *)(& tmp),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_0),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_1),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_2),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_3),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_4),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_5),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_6),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_7),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_8),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_9),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_10),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_11),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_12),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_13),(size_t)8);
        __e_acsl_store_block_duplicate((void *)(& tmp_14),(size_t)8);
        __e_acsl_full_init((void *)(& tmp_13));
        tmp_13 = to;
        to ++;
        __e_acsl_full_init((void *)(& tmp_14));
        tmp_14 = from;
        from ++;
        __e_acsl_initialize((void *)tmp_13,sizeof(char));
        *tmp_13 = *tmp_14;
        __e_acsl_delete_block((void *)(& tmp_14));
        __e_acsl_delete_block((void *)(& tmp_13));
        __e_acsl_delete_block((void *)(& tmp_12));
        __e_acsl_delete_block((void *)(& tmp_11));
        __e_acsl_delete_block((void *)(& tmp_10));
        __e_acsl_delete_block((void *)(& tmp_9));
        __e_acsl_delete_block((void *)(& tmp_8));
        __e_acsl_delete_block((void *)(& tmp_7));
        __e_acsl_delete_block((void *)(& tmp_6));
        __e_acsl_delete_block((void *)(& tmp_5));
        __e_acsl_delete_block((void *)(& tmp_4));
        __e_acsl_delete_block((void *)(& tmp_3));
        __e_acsl_delete_block((void *)(& tmp_2));
        __e_acsl_delete_block((void *)(& tmp_1));
        __e_acsl_delete_block((void *)(& tmp_0));
        __e_acsl_delete_block((void *)(& tmp));
      }
      n --;
      if (! (n > 0)) break;
    }
  __e_acsl_delete_block((void *)(& from));
  __e_acsl_delete_block((void *)(& to));
  return;
}

void initialize(char *arr, int length)
{
  int i;
  __e_acsl_store_block((void *)(& arr),(size_t)8);
  i = 0;
  while (i < length) {
    __e_acsl_initialize((void *)(arr + i),sizeof(char));
    *(arr + i) = (char)(length - i);
    i ++;
  }
  __e_acsl_delete_block((void *)(& arr));
  return;
}

char source[100];
char target[100];
void __e_acsl_globals_init(void)
{
  static char __e_acsl_already_run = 0;
  if (! __e_acsl_already_run) {
    __e_acsl_already_run = 1;
    __e_acsl_store_block((void *)(target),(size_t)100);
    __e_acsl_full_init((void *)(& target));
    __e_acsl_store_block((void *)(source),(size_t)100);
    __e_acsl_full_init((void *)(& source));
  }
  return;
}

void __e_acsl_globals_clean(void)
{
  __e_acsl_delete_block((void *)(target));
  __e_acsl_delete_block((void *)(source));
}

int main(void)
{
  int __retres;
  __e_acsl_memory_init((int *)0,(char ***)0,(size_t)8);
  __e_acsl_globals_init();
  initialize(source,100);
  duffcopy(source,target,43);
  __retres = 0;
  __e_acsl_globals_clean();
  __e_acsl_memory_clean();
  return __retres;
}


