diff --git a/src/plugins/e-acsl/tests/bts/issue-eacsl-40.c b/src/plugins/e-acsl/tests/bts/issue-eacsl-40.c
index aa21266b8c8266aee648615e72d6df675a25adc8..a449692806591f8493465d496a6533d927511774 100644
--- a/src/plugins/e-acsl/tests/bts/issue-eacsl-40.c
+++ b/src/plugins/e-acsl/tests/bts/issue-eacsl-40.c
@@ -1,6 +1,19 @@
 /* run.config
    COMMENT: frama-c/e-acsl#40, test for initialized memory after a call to fread
    on /dev/urandom.
+   STDOPT:
+   COMMENT: In some GCC/libc versions, GCC uses 'malloc' function attributes
+   COMMENT: with deallocator names; if these deallocators have been cleaned up
+   COMMENT: by Rmtmps, the resulting code will not parse. To avoid that, such
+   COMMENT: attributes are erased by Frama-C's kernel. The test below checks
+   COMMENT: whether code produced by E-ACSL's instrumentation remains parsable
+   COMMENT: by GCC.
+   COMMENT: The 'LIBS:' line below disables the filter set by E_ACSL_test.ml
+   LIBS:
+   LOG: @PTEST_NAME@.out.frama.c
+   OPT: @GLOBAL@ @EACSL@ -cpp-extra-args="-DNO_FCLOSE" -c11 -no-frama-c-stdlib -then-last -print -ocode @PTEST_NAME@.out.frama.c
+ ENABLED_IF: %{bin-available:gcc}
+   EXECNOW: BIN @PTEST_NAME@.o gcc -Wno-attributes %{dep:@PTEST_NAME@.out.frama.c} -c -o @PTEST_NAME@.o >@DEV_NULL@ 2>@DEV_NULL@
 */
 
 #include <stdio.h>
@@ -11,7 +24,9 @@ int main() {
   if (f) {
     char buf[4];
     int res = fread(buf, 1, 4, f);
+#ifndef NO_FCLOSE
     fclose(f);
+#endif
     if (res == 4) {
       //@ assert \initialized(&buf[3]);
       buf[0] = buf[3];
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c
index ad1fd155052e5c428dc732b8365cd7a6ce1c43c9..ff974a15990493fc1ff382718a01ec6baa6ba8f1 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-40.c
@@ -527,7 +527,7 @@ int main(void)
         __gen_e_acsl_assert_data.pred_txt = "\\initialized(&buf_0[3])";
         __gen_e_acsl_assert_data.file = "issue-eacsl-40.c";
         __gen_e_acsl_assert_data.fct = "main";
-        __gen_e_acsl_assert_data.line = 16;
+        __gen_e_acsl_assert_data.line = 31;
         __e_acsl_assert(__gen_e_acsl_initialized,& __gen_e_acsl_assert_data);
         __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
       }
diff --git a/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.0.res.oracle
similarity index 96%
rename from src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.res.oracle
rename to src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.0.res.oracle
index a33ac7b284bde4a5fa2360f566b232758a18102e..42cba99e4ca3d95a97530e0abced583e29429625 100644
--- a/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.res.oracle
+++ b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.0.res.oracle
@@ -87,12 +87,12 @@
 [eva:alarm] FRAMAC_SHARE/libc/stdio.h:122: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] issue-eacsl-40.c:16: Warning: 
+[eva:alarm] issue-eacsl-40.c:31: Warning: 
   function __e_acsl_assert_register_ulong: precondition data->values == \null ||
                                                         \valid(data->values) got status unknown.
-[eva:alarm] issue-eacsl-40.c:16: Warning: 
+[eva:alarm] issue-eacsl-40.c:31: Warning: 
   function __e_acsl_assert_register_int: precondition data->values == \null ||
                                                       \valid(data->values) got status unknown.
-[eva:alarm] issue-eacsl-40.c:16: Warning: 
+[eva:alarm] issue-eacsl-40.c:31: Warning: 
   function __e_acsl_assert, behavior blocking: precondition got status unknown.
-[eva:alarm] issue-eacsl-40.c:16: Warning: assertion got status unknown.
+[eva:alarm] issue-eacsl-40.c:31: Warning: assertion got status unknown.
diff --git a/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.1.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.1.res.oracle
new file mode 100644
index 0000000000000000000000000000000000000000..efd026311297e55d8fefb674326118e6ece88624
--- /dev/null
+++ b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.1.res.oracle
@@ -0,0 +1,2 @@
+[e-acsl] beginning translation.
+[e-acsl] translation done in project "e-acsl".
diff --git a/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.out.frama.c b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.out.frama.c
new file mode 100644
index 0000000000000000000000000000000000000000..5288e9f6f6960ae59fed9d9b1550d75d8361b078
--- /dev/null
+++ b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-40.out.frama.c
@@ -0,0 +1,484 @@
+/* Generated by Frama-C */
+char *__gen_e_acsl_literal_string;
+char *__gen_e_acsl_literal_string_2;
+typedef long __off_t;
+typedef long __off64_t;
+typedef unsigned long uintptr_t;
+typedef unsigned long size_t;
+typedef int wchar_t;
+struct _IO_FILE;
+typedef struct _IO_FILE FILE;
+struct _IO_marker;
+struct _IO_codecvt;
+struct _IO_wide_data;
+typedef void _IO_lock_t;
+struct _IO_FILE;
+struct __e_acsl_mpz_struct {
+   int _mp_alloc ;
+   int _mp_size ;
+   unsigned long *_mp_d ;
+};
+typedef struct __e_acsl_mpz_struct __e_acsl_mpz_struct;
+typedef __e_acsl_mpz_struct ( __attribute__((__FC_BUILTIN__)) __e_acsl_mpz_t)[1];
+struct __e_acsl_mpq_struct {
+   __e_acsl_mpz_struct _mp_num ;
+   __e_acsl_mpz_struct _mp_den ;
+};
+typedef struct __e_acsl_mpq_struct __e_acsl_mpq_struct;
+typedef __e_acsl_mpq_struct ( __attribute__((__FC_BUILTIN__)) __e_acsl_mpq_t)[1];
+typedef unsigned long __e_acsl_mp_bitcnt_t;
+enum __e_acsl_assert_data_type_t {
+    E_ACSL_INT = 0,
+    E_ACSL_REAL = 1,
+    E_ACSL_PTR = 2,
+    E_ACSL_ARRAY = 3,
+    E_ACSL_FUN = 4,
+    E_ACSL_STRUCT = 5,
+    E_ACSL_UNION = 6,
+    E_ACSL_OTHER = 1000
+};
+typedef enum __e_acsl_assert_data_type_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_type_t;
+enum __e_acsl_assert_data_ikind_t {
+    E_ACSL_IBOOL = 0,
+    E_ACSL_ICHAR = 1,
+    E_ACSL_ISCHAR = 2,
+    E_ACSL_IUCHAR = 3,
+    E_ACSL_IINT = 4,
+    E_ACSL_IUINT = 5,
+    E_ACSL_ISHORT = 6,
+    E_ACSL_IUSHORT = 7,
+    E_ACSL_ILONG = 8,
+    E_ACSL_IULONG = 9,
+    E_ACSL_ILONGLONG = 10,
+    E_ACSL_IULONGLONG = 11,
+    E_ACSL_IMPZ = 12
+};
+typedef enum __e_acsl_assert_data_ikind_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_ikind_t;
+enum __e_acsl_assert_data_rkind_t {
+    E_ACSL_RFLOAT = 0,
+    E_ACSL_RDOUBLE = 1,
+    E_ACSL_RLONGDOUBLE = 2,
+    E_ACSL_RMPQ = 3
+};
+typedef enum __e_acsl_assert_data_rkind_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_rkind_t;
+union __e_acsl_assert_data_int_value_t {
+   _Bool value_bool ;
+   char value_char ;
+   signed char value_schar ;
+   unsigned char value_uchar ;
+   int value_int ;
+   unsigned int value_uint ;
+   short value_short ;
+   unsigned short value_ushort ;
+   long value_long ;
+   unsigned long value_ulong ;
+   long long value_llong ;
+   unsigned long long value_ullong ;
+   struct __e_acsl_mpz_struct *value_mpz ;
+};
+typedef union __e_acsl_assert_data_int_value_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_int_value_t;
+union __e_acsl_assert_data_real_value_t {
+   float value_float ;
+   double value_double ;
+   long double value_ldouble ;
+   struct __e_acsl_mpq_struct *value_mpq ;
+};
+typedef union __e_acsl_assert_data_real_value_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_real_value_t;
+struct __e_acsl_assert_data_int_content_t {
+   int is_enum ;
+   __e_acsl_assert_data_ikind_t kind ;
+   __e_acsl_assert_data_int_value_t value ;
+};
+typedef struct __e_acsl_assert_data_int_content_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_int_content_t;
+struct __e_acsl_assert_data_real_content_t {
+   __e_acsl_assert_data_rkind_t kind ;
+   __e_acsl_assert_data_real_value_t value ;
+};
+typedef struct __e_acsl_assert_data_real_content_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_real_content_t;
+union __e_acsl_assert_data_content_t {
+   __e_acsl_assert_data_int_content_t int_content ;
+   __e_acsl_assert_data_real_content_t real_content ;
+   uintptr_t value_ptr ;
+   uintptr_t value_array ;
+};
+typedef union __e_acsl_assert_data_content_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_content_t;
+struct __e_acsl_assert_data_value_t {
+   char const *name ;
+   __e_acsl_assert_data_type_t type ;
+   __e_acsl_assert_data_content_t content ;
+   struct __e_acsl_assert_data_value_t *next ;
+};
+typedef struct __e_acsl_assert_data_value_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_value_t;
+struct __e_acsl_assert_data_t {
+   int blocking ;
+   char const *kind ;
+   char const *name ;
+   char const *pred_txt ;
+   char const *file ;
+   char const *fct ;
+   int line ;
+   __e_acsl_assert_data_value_t *values ;
+};
+typedef struct __e_acsl_assert_data_t __attribute__((__FC_BUILTIN__)) __e_acsl_assert_data_t;
+struct __e_acsl_contract_t;
+typedef struct __e_acsl_contract_t __attribute__((__FC_BUILTIN__)) __e_acsl_contract_t;
+typedef unsigned long pthread_t;
+union pthread_attr_t {
+   char __size[56] ;
+   long __align ;
+};
+typedef union pthread_attr_t pthread_attr_t;
+/*@ ghost extern int __e_acsl_init; */
+
+/*@ requires !\initialized(z);
+    ensures \valid(\old(z));
+    assigns *z;
+    assigns *z \from __e_acsl_init;
+    allocates \old(z);
+ */
+extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init(__e_acsl_mpz_struct ( __attribute__((
+                                                         __FC_BUILTIN__)) z)[1]);
+
+/*@ requires !\initialized(z);
+    ensures \valid(\old(z));
+    ensures \initialized(\old(z));
+    assigns *z;
+    assigns *z \from n;
+    allocates \old(z);
+ */
+extern  __attribute__((__FC_BUILTIN__)) void __gmpz_init_set_ui(__e_acsl_mpz_struct ( __attribute__((
+                                                                __FC_BUILTIN__)) z)[1],
+                                                                unsigned long n);
+
+/*@ requires \valid(x);
+    assigns *x;
+    assigns *x \from *x; */
+extern  __attribute__((__FC_BUILTIN__)) void __gmpz_clear(__e_acsl_mpz_struct ( __attribute__((
+                                                          __FC_BUILTIN__)) x)[1]);
+
+/*@ requires \valid_read(z1);
+    requires \valid_read(z2);
+    assigns \result;
+    assigns \result \from *z1, *z2;
+ */
+extern  __attribute__((__FC_BUILTIN__)) int __gmpz_cmp(__e_acsl_mpz_struct const ( __attribute__((
+                                                       __FC_BUILTIN__)) z1)[1],
+                                                       __e_acsl_mpz_struct const ( __attribute__((
+                                                       __FC_BUILTIN__)) z2)[1]);
+
+/*@ requires \valid(z1);
+    requires \valid_read(z2);
+    requires \valid_read(z3);
+    assigns *z1;
+    assigns *z1 \from *z2, *z3;
+ */
+extern  __attribute__((__FC_BUILTIN__)) void __gmpz_mul(__e_acsl_mpz_struct ( __attribute__((
+                                                        __FC_BUILTIN__)) z1)[1],
+                                                        __e_acsl_mpz_struct const ( __attribute__((
+                                                        __FC_BUILTIN__)) z2)[1],
+                                                        __e_acsl_mpz_struct const ( __attribute__((
+                                                        __FC_BUILTIN__)) z3)[1]);
+
+/*@ requires \valid_read(z);
+    assigns \result;
+    assigns \result \from *z; */
+extern  __attribute__((__FC_BUILTIN__)) unsigned long __gmpz_get_ui(__e_acsl_mpz_struct const ( __attribute__((
+                                                                    __FC_BUILTIN__)) z)[1]);
+
+/*@ requires \valid_read(data) && \initialized(data);
+    assigns \nothing;
+    
+    behavior blocking:
+      assumes data->blocking != 0;
+      requires predicate != 0;
+    
+    behavior non_blocking:
+      assumes data->blocking == 0;
+      check requires predicate != 0;
+    
+    complete behaviors non_blocking, blocking;
+    disjoint behaviors non_blocking, blocking;
+ */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_assert(int predicate,
+                                                      __e_acsl_assert_data_t *data);
+
+extern size_t __e_acsl_heap_allocation_size;
+
+extern size_t __e_acsl_heap_allocated_blocks;
+
+/*@ ghost extern int __fc_heap_status; */
+
+/*@ requires \valid(data);
+    requires data->values == \null || \valid(data->values);
+    assigns data->values;
+    assigns data->values \from (indirect: __fc_heap_status), value;
+ */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_assert_register_int(__e_acsl_assert_data_t *data,
+                                                                   char const *name,
+                                                                   int is_enum,
+                                                                   int value);
+
+/*@ requires \valid(data);
+    requires data->values == \null || \valid(data->values);
+    assigns data->values;
+    assigns data->values \from (indirect: __fc_heap_status), value;
+ */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_assert_register_ulong(
+                                                                    __e_acsl_assert_data_t *data,
+                                                                    char const *name,
+                                                                    int is_enum,
+                                                                    unsigned long value);
+
+/*@ requires \valid(data);
+    requires data->values == \null || \valid(data->values);
+    assigns data->values;
+    assigns data->values \from (indirect: __fc_heap_status), ptr;
+ */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_assert_register_ptr(__e_acsl_assert_data_t *data,
+                                                                   char const *name,
+                                                                   void *ptr);
+
+/*@ requires \valid(data);
+    assigns \nothing; */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_assert_clean(__e_acsl_assert_data_t *data);
+
+/*@
+axiomatic dynamic_allocation {
+  predicate is_allocable{L}(integer n) 
+    reads __fc_heap_status;
+  
+  axiom never_allocable{L}:
+    \forall integer i;
+      i < 0 || i > 18446744073709551615UL ==> !is_allocable(i);
+  
+  }
+ */
+/*@ assigns \nothing; */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_memory_init(int *argc_ref,
+                                                           char ***argv,
+                                                           size_t ptr_size);
+
+/*@ assigns \nothing; */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_memory_clean(void);
+
+/*@ ensures \result == \old(ptr);
+    assigns \result;
+    assigns \result \from *((char *)ptr + (0 .. size - 1)), ptr, size;
+ */
+ __attribute__((__FC_BUILTIN__)) void *__e_acsl_store_block(void *ptr,
+                                                            size_t size);
+
+/*@ assigns \nothing; */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_delete_block(void *ptr);
+
+/*@ assigns \nothing; */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_initialize(void *ptr,
+                                                          size_t size);
+
+/*@ assigns \nothing; */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_full_init(void *ptr);
+
+/*@ assigns \nothing; */
+ __attribute__((__FC_BUILTIN__)) void __e_acsl_mark_readonly(void *ptr);
+
+/*@ assigns \result;
+    assigns \result \from *((char *)ptr + (0 .. size - 1)), ptr, size;
+    
+    behavior initialized:
+      assumes \initialized((char *)ptr + (0 .. size - 1));
+      ensures \result == 1;
+    
+    behavior uninitialized:
+      assumes !\initialized((char *)ptr + (0 .. size - 1));
+      ensures \result == 0;
+    
+    complete behaviors uninitialized, initialized;
+    disjoint behaviors uninitialized, initialized;
+ */
+ __attribute__((__FC_BUILTIN__)) int __e_acsl_initialized(void *ptr,
+                                                          size_t size);
+
+long valid_nstring(char *s, long n, int wrtbl);
+
+long valid_nwstring(wchar_t *s, long n, int wrtbl);
+
+__inline static long valid_string__fc_inline(char *s, int wrtbl)
+{
+  long tmp;
+  tmp = valid_nstring(s,(long)(-1),wrtbl);
+  return tmp;
+}
+
+__inline static long valid_wstring__fc_inline(wchar_t *s, int wrtbl)
+{
+  long tmp;
+  tmp = valid_nwstring(s,(long)(-1),wrtbl);
+  return tmp;
+}
+
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
+typedef unsigned long size_t;
+typedef long __off_t;
+typedef long __off64_t;
+struct _IO_FILE;
+typedef struct _IO_FILE FILE;
+struct _IO_marker;
+struct _IO_codecvt;
+struct _IO_wide_data;
+typedef void _IO_lock_t;
+struct _IO_FILE {
+   int _flags ;
+   char *_IO_read_ptr ;
+   char *_IO_read_end ;
+   char *_IO_read_base ;
+   char *_IO_write_base ;
+   char *_IO_write_ptr ;
+   char *_IO_write_end ;
+   char *_IO_buf_base ;
+   char *_IO_buf_end ;
+   char *_IO_save_base ;
+   char *_IO_backup_base ;
+   char *_IO_save_end ;
+   struct _IO_marker *_markers ;
+   struct _IO_FILE *_chain ;
+   int _fileno ;
+   int _flags2 ;
+   __off_t _old_offset ;
+   unsigned short _cur_column ;
+   signed char _vtable_offset ;
+   char _shortbuf[1] ;
+   _IO_lock_t *_lock ;
+   __off64_t _offset ;
+   struct _IO_codecvt *_codecvt ;
+   struct _IO_wide_data *_wide_data ;
+   struct _IO_FILE *_freeres_list ;
+   void *_freeres_buf ;
+   size_t __pad5 ;
+   int _mode ;
+   char _unused2[((unsigned long)15 * sizeof(int) - (unsigned long)4 * sizeof(void *)) - sizeof(size_t)] ;
+};
+extern FILE *fopen(char const * restrict __filename,
+                   char const * restrict __modes);
+
+extern size_t fread(void * restrict __ptr, size_t __size, size_t __n,
+                    FILE * restrict __stream);
+
+void __e_acsl_globals_init(void)
+{
+  static char __e_acsl_already_run = 0;
+  if (! __e_acsl_already_run) {
+    __e_acsl_already_run = 1;
+    __gen_e_acsl_literal_string = "r";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string,sizeof("r"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string);
+    __gen_e_acsl_literal_string_2 = "/dev/urandom";
+    __e_acsl_store_block((void *)__gen_e_acsl_literal_string_2,
+                         sizeof("/dev/urandom"));
+    __e_acsl_full_init((void *)__gen_e_acsl_literal_string_2);
+    __e_acsl_mark_readonly((void *)__gen_e_acsl_literal_string_2);
+  }
+  return;
+}
+
+int main(void)
+{
+  int __retres;
+  char buf[4];
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __e_acsl_globals_init();
+  FILE *f = fopen(__gen_e_acsl_literal_string_2,__gen_e_acsl_literal_string);
+  if (f) {
+    char buf_0[4];
+    size_t tmp_0;
+    __e_acsl_store_block((void *)(buf_0),4UL);
+    tmp_0 = fread((void *)(buf_0),(size_t)1,(size_t)4,f);
+    {
+      size_t __gen_e_acsl_;
+      __e_acsl_mpz_t __gen_e_acsl_tmp_0;
+      __e_acsl_mpz_t __gen_e_acsl___gen_e_acsl_;
+      __e_acsl_mpz_t __gen_e_acsl_mul;
+      __e_acsl_mpz_t __gen_e_acsl__2;
+      int __gen_e_acsl_le;
+      unsigned long __gen_e_acsl_size;
+      __gen_e_acsl_ = (size_t)1;
+      __e_acsl_assert_data_t __gen_e_acsl_assert_data =
+        {.values = (void *)0};
+      __gmpz_init_set_ui(__gen_e_acsl_tmp_0,tmp_0);
+      __gmpz_init_set_ui(__gen_e_acsl___gen_e_acsl_,__gen_e_acsl_);
+      __gmpz_init(__gen_e_acsl_mul);
+      __gmpz_mul(__gen_e_acsl_mul,
+                 (__e_acsl_mpz_struct const *)(__gen_e_acsl_tmp_0),
+                 (__e_acsl_mpz_struct const *)(__gen_e_acsl___gen_e_acsl_));
+      __gmpz_init_set_ui(__gen_e_acsl__2,18446744073709551615UL);
+      __gen_e_acsl_le = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_mul),
+                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__2));
+      __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data,"tmp_0",0,
+                                     tmp_0);
+      __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data,
+                                     "__gen_e_acsl_",0,__gen_e_acsl_);
+      __gen_e_acsl_assert_data.blocking = 1;
+      __gen_e_acsl_assert_data.kind = "RTE";
+      __gen_e_acsl_assert_data.pred_txt = "tmp_0 * __gen_e_acsl_ <= 18446744073709551615";
+      __gen_e_acsl_assert_data.file = "issue-eacsl-40.c";
+      __gen_e_acsl_assert_data.fct = "main";
+      __gen_e_acsl_assert_data.line = 26;
+      __gen_e_acsl_assert_data.name = "size_lesser_or_eq_than_SIZE_MAX";
+      __e_acsl_assert(__gen_e_acsl_le <= 0,& __gen_e_acsl_assert_data);
+      __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
+      __gen_e_acsl_size = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_mul));
+      __e_acsl_initialize((void *)(buf_0),__gen_e_acsl_size);
+      __gmpz_clear(__gen_e_acsl_tmp_0);
+      __gmpz_clear(__gen_e_acsl___gen_e_acsl_);
+      __gmpz_clear(__gen_e_acsl_mul);
+      __gmpz_clear(__gen_e_acsl__2);
+    }
+    int res = (int)tmp_0;
+    if (res == 4) {
+      {
+        int __gen_e_acsl_initialized;
+        __e_acsl_assert_data_t __gen_e_acsl_assert_data_2 =
+          {.values = (void *)0};
+        __gen_e_acsl_initialized = __e_acsl_initialized((void *)(& buf_0[3]),
+                                                        sizeof(char));
+        __e_acsl_assert_register_ptr(& __gen_e_acsl_assert_data_2,
+                                     "&buf_0[3]",(void *)(& buf_0[3]));
+        __e_acsl_assert_register_ulong(& __gen_e_acsl_assert_data_2,
+                                       "sizeof(char)",0,sizeof(char));
+        __e_acsl_assert_register_int(& __gen_e_acsl_assert_data_2,
+                                     "\\initialized(&buf_0[3])",0,
+                                     __gen_e_acsl_initialized);
+        __gen_e_acsl_assert_data_2.blocking = 1;
+        __gen_e_acsl_assert_data_2.kind = "Assertion";
+        __gen_e_acsl_assert_data_2.pred_txt = "\\initialized(&buf_0[3])";
+        __gen_e_acsl_assert_data_2.file = "issue-eacsl-40.c";
+        __gen_e_acsl_assert_data_2.fct = "main";
+        __gen_e_acsl_assert_data_2.line = 31;
+        __e_acsl_assert(__gen_e_acsl_initialized,
+                        & __gen_e_acsl_assert_data_2);
+        __e_acsl_assert_clean(& __gen_e_acsl_assert_data_2);
+      }
+      /*@ assert \initialized(&buf_0[3]); */ ;
+      __e_acsl_initialize((void *)(buf_0),sizeof(char));
+      buf_0[0] = buf_0[3];
+    }
+    else {
+      __retres = 2;
+      __e_acsl_delete_block((void *)(buf_0));
+      goto return_label;
+    }
+    __e_acsl_delete_block((void *)(buf_0));
+  }
+  else {
+    __retres = 1;
+    goto return_label;
+  }
+  __retres = 0;
+  return_label: {
+                  __e_acsl_memory_clean();
+                  return __retres;
+                }
+}
+
+