/* Generated by Frama-C */
#include "stddef.h"
#include "stdio.h"
void f(void)
{
  int m;
  int *u;
  int *p;
  __e_acsl_store_block((void *)(& p),(size_t)8);
  __e_acsl_store_block((void *)(& u),(size_t)8);
  __e_acsl_store_block((void *)(& m),(size_t)4);
  __e_acsl_full_init((void *)(& u));
  u = & m;
  __e_acsl_full_init((void *)(& p));
  p = u;
  __e_acsl_full_init((void *)(& m));
  m = 123;
  {
    int __gen_e_acsl_initialized;
    __gen_e_acsl_initialized = __e_acsl_initialized((void *)p,sizeof(int));
    __e_acsl_assert(__gen_e_acsl_initialized,"Assertion","f",
                    "\\initialized(p)","tests/full-mtracking/addrOf.i",10);
  }
  /*@ assert \initialized(p); */ ;
  __e_acsl_delete_block((void *)(& p));
  __e_acsl_delete_block((void *)(& u));
  __e_acsl_delete_block((void *)(& m));
  return;
}

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 *)(& f),(size_t)1);
    __e_acsl_full_init((void *)(& f));
  }
  return;
}

void __e_acsl_globals_clean(void)
{
  __e_acsl_delete_block((void *)(& f));
}

int main(void)
{
  int __retres;
  __e_acsl_memory_init((int *)0,(char ***)0,(size_t)8);
  __e_acsl_globals_init();
  __e_acsl_store_block((void *)(& __retres),(size_t)4);
  int x = 0;
  __e_acsl_store_block((void *)(& x),(size_t)4);
  __e_acsl_full_init((void *)(& x));
  f();
  __e_acsl_assert(& x == & x,"Assertion","main","&x == &x",
                  "tests/full-mtracking/addrOf.i",16);
  /*@ assert &x ≡ &x; */ ;
  __e_acsl_full_init((void *)(& __retres));
  __retres = 0;
  __e_acsl_delete_block((void *)(& x));
  __e_acsl_delete_block((void *)(& __retres));
  __e_acsl_globals_clean();
  __e_acsl_memory_clean();
  return __retres;
}


