/* Generated by Frama-C */
#include "stddef.h"
#include "stdio.h"
short a;
char b(void)
{
  char __retres;
  __e_acsl_store_block((void *)(& __retres),(size_t)1);
  switch ((int)a) {
    int c = 0;
    __e_acsl_store_block((void *)(& c),(size_t)4);
    __e_acsl_full_init((void *)(& c));
    case 0: __e_acsl_store_block_duplicate((void *)(& c),(size_t)4);
    __e_acsl_delete_block((void *)(& c));
    goto d;
    int tmp = c;
    __e_acsl_store_block((void *)(& tmp),(size_t)4);
    __e_acsl_full_init((void *)(& tmp));
    __e_acsl_delete_block((void *)(& tmp));
    __e_acsl_delete_block((void *)(& c));
  }
  d: {
       __e_acsl_full_init((void *)(& __retres));
       __retres = (char)2;
     }
  __e_acsl_delete_block((void *)(& __retres));
  return __retres;
}

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

void __e_acsl_globals_clean(void)
{
  __e_acsl_delete_block((void *)(& b));
  __e_acsl_delete_block((void *)(& a));
}

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);
  b();
  __e_acsl_full_init((void *)(& __retres));
  __retres = 0;
  __e_acsl_delete_block((void *)(& __retres));
  __e_acsl_globals_clean();
  __e_acsl_memory_clean();
  return __retres;
}


