2021-03-02 02:06 CET

View Issue Details Jump to Notes ]
IDProjectCategoryView StatusLast Update
0000715Frama-CPlug-in > Evapublic2011-10-10 14:14
Reporterregehr 
Assigned Topascal 
PrioritynormalSeveritycrashReproducibilityalways
StatusclosedResolutionfixed 
Product VersionFrama-C GIT, precise the release id 
Target VersionFixed in VersionFrama-C Nitrogen-20111001 
Summary0000715: crash bug in r11859
DescriptionSeen using Ubuntu 10.10 on x86. OCaml and other tools are from the installation, nothing on this machine is customized.

regehr@home:~/csmith/scripts$ ~/z/frama-c/bin/toplevel.opt -val -slevel 250 foo_pp.c
[kernel] preprocessing with "gcc -C -E -I. foo_pp.c"
[value] Analyzing a complete application starting at main
[value] Computing initial state
[value] Initial state computed
[value] Values of globals at initialization
        csmith_sink_ ? [--..--]
        __undefined ? {0; }
        g_8 ? [--..--]
        g_13 ? {1817273653; }
        g_12 ? {{ &g_13 ;}}
        g_11 ? [--..--]
        g_18 ? {111102337; }
        g_33 ? [--..--]
        g_73 ? {14749; }
        g_75 ? {-1719621896; }
        g_74 ? {{ &g_75 ;}}
        g_79 ? {{ &g_74 ;}}
        g_122 ? {{ &g_12 ;}}
        g_121 ? [--..--]
        g_126 ? [--..--]
        g_152 ? [--..--]
        g_169 ? [--..--]
        g_193 ? {0; }
        g_195 ? {0; }
        g_385 ? [--..--]
[value] computing for function platform_main_begin <-main.
        Called from foo.c:380.
[value] Recording results for platform_main_begin
[value] Done for function platform_main_begin
[value] computing for function func_1 <-main.
        Called from foo.c:381.
[value] computing for function func_2 <-func_1 <-main.
        Called from foo.c:61.
[value] Recording results for func_2
[value] Done for function func_2
[value] computing for function func_35 <-func_1 <-main.
        Called from foo.c:61.
[value] Recording results for func_35
[value] Done for function func_35
[value] computing for function safe_div_func_int64_t_s_s <-func_1 <-main.
        Called from foo.c:61.
[value] Recording results for safe_div_func_int64_t_s_s
[value] Done for function safe_div_func_int64_t_s_s
[value] computing for function safe_div_func_int32_t_s_s <-func_1 <-main.
        Called from foo.c:61.
[value] Recording results for safe_div_func_int32_t_s_s
[value] Done for function safe_div_func_int32_t_s_s
[value] computing for function safe_mul_func_int8_t_s_s <-func_1 <-main.
        Called from foo.c:61.
[value] Recording results for safe_mul_func_int8_t_s_s
[value] Done for function safe_mul_func_int8_t_s_s
[value] computing for function func_51 <-func_1 <-main.
        Called from foo.c:61.
[value] Recording results for func_51
[value] Done for function func_51
foo.c:61:[kernel] warning: out of bounds read. assert \valid(g_169);
[kernel] The full backtrace is:
         Called from file "src/value/eval.ml", line 3878, characters 6-16
         Called from file "list.ml", line 57, characters 20-23
         Called from file "src/value/eval.ml", line 3847, characters 7-1023
         Called from file "list.ml", line 74, characters 24-34
         Called from file "src/value/eval.ml", line 4090, characters 7-62
         Called from file "cil/src/ext/dataflow.ml", line 274, characters 27-46
         Called from file "cil/src/ext/dataflow.ml", line 287, characters 16-40
         Called from file "cil/src/ext/dataflow.ml", line 402, characters 8-21
         Called from file "cil/src/ext/dataflow.ml", line 406, characters 9-22
         Called from file "src/value/eval.ml", line 4681, characters 14-37
         Called from file "src/value/eval.ml", line 5314, characters 5-60
         Called from file "src/value/eval.ml", line 3900, characters 2-105
         Called from file "src/value/eval.ml", line 3918, characters 7-93
         Called from file "list.ml", line 74, characters 24-34
         Called from file "src/value/eval.ml", line 4090, characters 7-62
         Called from file "cil/src/ext/dataflow.ml", line 274, characters 27-46
         Called from file "cil/src/ext/dataflow.ml", line 287, characters 16-40
         Called from file "cil/src/ext/dataflow.ml", line 402, characters 8-21
         Called from file "cil/src/ext/dataflow.ml", line 406, characters 9-22
         Called from file "src/value/eval.ml", line 4681, characters 14-37
         Called from file "src/value/eval.ml", line 5145, characters 4-67
         Called from file "src/value/eval.ml", line 5400, characters 11-44
         Re-raised at file "src/value/eval.ml", line 5416, characters 47-50
         Called from file "src/project/state_builder.ml", line 1025, characters 2-6
         Re-raised at file "src/project/state_builder.ml", line 1029, characters 8-11
         Called from file "src/value/register.ml", line 59, characters 4-24
         Called from file "queue.ml", line 134, characters 6-20
         Called from file "src/kernel/boot.ml", line 36, characters 4-20
         Called from file "src/kernel/cmdline.ml", line 713, characters 2-9
         Called from file "src/kernel/cmdline.ml", line 195, characters 4-8
         
         Unexpected error (File "cil/ocamlutil/cilutil.ml", line 918, characters 10-16: Assertion failed).
         Please report as 'crash' at http://bts.frama-c.com/
         Note that a backtrace alone often does not have information to
         understand the bug. Guidelines for reporting bugs are at:
         http://bts.frama-c.com/dokuwiki/doku.php?id=mantis:frama-c:bug_reporting_guidelines
regehr@home:~/csmith/scripts$
TagsNo tags attached.
Attached Files
  • c file icon foo_pp.c (45,746 bytes) 2011-02-12 05:25 -
    # 1 "foo.c"
    # 1 "<built-in>"
    # 1 "<command-line>"
    # 1 "foo.c"
    # 10 "foo.c"
    # 1 "../runtime/random_inc.h" 1
    # 51 "../runtime/random_inc.h"
    # 1 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed/limits.h" 1 3 4
    # 11 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed/limits.h" 3 4
    # 1 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed/syslimits.h" 1 3 4
    
    
    
    
    
    
    # 1 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed/limits.h" 1 3 4
    # 122 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed/limits.h" 3 4
    # 1 "/usr/include/limits.h" 1 3 4
    # 27 "/usr/include/limits.h" 3 4
    # 1 "/usr/include/features.h" 1 3 4
    # 322 "/usr/include/features.h" 3 4
    # 1 "/usr/include/bits/predefs.h" 1 3 4
    # 323 "/usr/include/features.h" 2 3 4
    # 355 "/usr/include/features.h" 3 4
    # 1 "/usr/include/sys/cdefs.h" 1 3 4
    # 353 "/usr/include/sys/cdefs.h" 3 4
    # 1 "/usr/include/bits/wordsize.h" 1 3 4
    # 354 "/usr/include/sys/cdefs.h" 2 3 4
    # 356 "/usr/include/features.h" 2 3 4
    # 387 "/usr/include/features.h" 3 4
    # 1 "/usr/include/gnu/stubs.h" 1 3 4
    
    
    
    # 1 "/usr/include/bits/wordsize.h" 1 3 4
    # 5 "/usr/include/gnu/stubs.h" 2 3 4
    
    
    # 1 "/usr/include/gnu/stubs-32.h" 1 3 4
    # 8 "/usr/include/gnu/stubs.h" 2 3 4
    # 388 "/usr/include/features.h" 2 3 4
    # 28 "/usr/include/limits.h" 2 3 4
    # 145 "/usr/include/limits.h" 3 4
    # 1 "/usr/include/bits/posix1_lim.h" 1 3 4
    # 157 "/usr/include/bits/posix1_lim.h" 3 4
    # 1 "/usr/include/bits/local_lim.h" 1 3 4
    # 39 "/usr/include/bits/local_lim.h" 3 4
    # 1 "/usr/include/linux/limits.h" 1 3 4
    # 40 "/usr/include/bits/local_lim.h" 2 3 4
    # 158 "/usr/include/bits/posix1_lim.h" 2 3 4
    # 146 "/usr/include/limits.h" 2 3 4
    
    
    
    # 1 "/usr/include/bits/posix2_lim.h" 1 3 4
    # 150 "/usr/include/limits.h" 2 3 4
    # 123 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed/limits.h" 2 3 4
    # 8 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed/syslimits.h" 2 3 4
    # 12 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed/limits.h" 2 3 4
    # 52 "../runtime/random_inc.h" 2
    
    
    
    # 1 "/usr/include/stdint.h" 1 3 4
    # 27 "/usr/include/stdint.h" 3 4
    # 1 "/usr/include/bits/wchar.h" 1 3 4
    # 28 "/usr/include/stdint.h" 2 3 4
    # 1 "/usr/include/bits/wordsize.h" 1 3 4
    # 29 "/usr/include/stdint.h" 2 3 4
    # 37 "/usr/include/stdint.h" 3 4
    typedef signed char int8_t;
    typedef short int int16_t;
    typedef int int32_t;
    
    
    
    __extension__
    typedef long long int int64_t;
    
    
    
    
    typedef unsigned char uint8_t;
    typedef unsigned short int uint16_t;
    
    typedef unsigned int uint32_t;
    
    
    
    
    
    __extension__
    typedef unsigned long long int uint64_t;
    
    
    
    
    
    
    typedef signed char int_least8_t;
    typedef short int int_least16_t;
    typedef int int_least32_t;
    
    
    
    __extension__
    typedef long long int int_least64_t;
    
    
    
    typedef unsigned char uint_least8_t;
    typedef unsigned short int uint_least16_t;
    typedef unsigned int uint_least32_t;
    
    
    
    __extension__
    typedef unsigned long long int uint_least64_t;
    
    
    
    
    
    
    typedef signed char int_fast8_t;
    
    
    
    
    
    typedef int int_fast16_t;
    typedef int int_fast32_t;
    __extension__
    typedef long long int int_fast64_t;
    
    
    
    typedef unsigned char uint_fast8_t;
    
    
    
    
    
    typedef unsigned int uint_fast16_t;
    typedef unsigned int uint_fast32_t;
    __extension__
    typedef unsigned long long int uint_fast64_t;
    # 126 "/usr/include/stdint.h" 3 4
    typedef int intptr_t;
    
    
    typedef unsigned int uintptr_t;
    # 138 "/usr/include/stdint.h" 3 4
    __extension__
    typedef long long int intmax_t;
    __extension__
    typedef unsigned long long int uintmax_t;
    # 56 "../runtime/random_inc.h" 2
    
    
    
    
    # 1 "/usr/include/assert.h" 1 3 4
    # 68 "/usr/include/assert.h" 3 4
    
    
    
    extern void __assert_fail (__const char *__assertion, __const char *__file,
          unsigned int __line, __const char *__function)
         __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
    
    
    extern void __assert_perror_fail (int __errnum, __const char *__file,
          unsigned int __line,
          __const char *__function)
         __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
    
    
    
    
    extern void __assert (const char *__assertion, const char *__file, int __line)
         __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
    
    
    
    # 61 "../runtime/random_inc.h" 2
    # 78 "../runtime/random_inc.h"
    # 1 "../runtime/platform_generic.h" 1
    # 40 "../runtime/platform_generic.h"
    # 1 "/usr/include/stdio.h" 1 3 4
    # 30 "/usr/include/stdio.h" 3 4
    
    
    
    
    # 1 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include/stddef.h" 1 3 4
    # 211 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include/stddef.h" 3 4
    typedef unsigned int size_t;
    # 35 "/usr/include/stdio.h" 2 3 4
    
    # 1 "/usr/include/bits/types.h" 1 3 4
    # 28 "/usr/include/bits/types.h" 3 4
    # 1 "/usr/include/bits/wordsize.h" 1 3 4
    # 29 "/usr/include/bits/types.h" 2 3 4
    
    
    typedef unsigned char __u_char;
    typedef unsigned short int __u_short;
    typedef unsigned int __u_int;
    typedef unsigned long int __u_long;
    
    
    typedef signed char __int8_t;
    typedef unsigned char __uint8_t;
    typedef signed short int __int16_t;
    typedef unsigned short int __uint16_t;
    typedef signed int __int32_t;
    typedef unsigned int __uint32_t;
    
    
    
    
    __extension__ typedef signed long long int __int64_t;
    __extension__ typedef unsigned long long int __uint64_t;
    
    
    
    
    
    
    
    __extension__ typedef long long int __quad_t;
    __extension__ typedef unsigned long long int __u_quad_t;
    # 131 "/usr/include/bits/types.h" 3 4
    # 1 "/usr/include/bits/typesizes.h" 1 3 4
    # 132 "/usr/include/bits/types.h" 2 3 4
    
    
    __extension__ typedef __u_quad_t __dev_t;
    __extension__ typedef unsigned int __uid_t;
    __extension__ typedef unsigned int __gid_t;
    __extension__ typedef unsigned long int __ino_t;
    __extension__ typedef __u_quad_t __ino64_t;
    __extension__ typedef unsigned int __mode_t;
    __extension__ typedef unsigned int __nlink_t;
    __extension__ typedef long int __off_t;
    __extension__ typedef __quad_t __off64_t;
    __extension__ typedef int __pid_t;
    __extension__ typedef struct { int __val[2]; } __fsid_t;
    __extension__ typedef long int __clock_t;
    __extension__ typedef unsigned long int __rlim_t;
    __extension__ typedef __u_quad_t __rlim64_t;
    __extension__ typedef unsigned int __id_t;
    __extension__ typedef long int __time_t;
    __extension__ typedef unsigned int __useconds_t;
    __extension__ typedef long int __suseconds_t;
    
    __extension__ typedef int __daddr_t;
    __extension__ typedef long int __swblk_t;
    __extension__ typedef int __key_t;
    
    
    __extension__ typedef int __clockid_t;
    
    
    __extension__ typedef void * __timer_t;
    
    
    __extension__ typedef long int __blksize_t;
    
    
    
    
    __extension__ typedef long int __blkcnt_t;
    __extension__ typedef __quad_t __blkcnt64_t;
    
    
    __extension__ typedef unsigned long int __fsblkcnt_t;
    __extension__ typedef __u_quad_t __fsblkcnt64_t;
    
    
    __extension__ typedef unsigned long int __fsfilcnt_t;
    __extension__ typedef __u_quad_t __fsfilcnt64_t;
    
    __extension__ typedef int __ssize_t;
    
    
    
    typedef __off64_t __loff_t;
    typedef __quad_t *__qaddr_t;
    typedef char *__caddr_t;
    
    
    __extension__ typedef int __intptr_t;
    
    
    __extension__ typedef unsigned int __socklen_t;
    # 37 "/usr/include/stdio.h" 2 3 4
    # 45 "/usr/include/stdio.h" 3 4
    struct _IO_FILE;
    
    
    
    typedef struct _IO_FILE FILE;
    
    
    
    
    
    # 65 "/usr/include/stdio.h" 3 4
    typedef struct _IO_FILE __FILE;
    # 75 "/usr/include/stdio.h" 3 4
    # 1 "/usr/include/libio.h" 1 3 4
    # 32 "/usr/include/libio.h" 3 4
    # 1 "/usr/include/_G_config.h" 1 3 4
    # 15 "/usr/include/_G_config.h" 3 4
    # 1 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include/stddef.h" 1 3 4
    # 16 "/usr/include/_G_config.h" 2 3 4
    
    
    
    
    # 1 "/usr/include/wchar.h" 1 3 4
    # 83 "/usr/include/wchar.h" 3 4
    typedef struct
    {
      int __count;
      union
      {
    
        unsigned int __wch;
    
    
    
        char __wchb[4];
      } __value;
    } __mbstate_t;
    # 21 "/usr/include/_G_config.h" 2 3 4
    
    typedef struct
    {
      __off_t __pos;
      __mbstate_t __state;
    } _G_fpos_t;
    typedef struct
    {
      __off64_t __pos;
      __mbstate_t __state;
    } _G_fpos64_t;
    # 53 "/usr/include/_G_config.h" 3 4
    typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
    typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
    typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
    typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
    # 33 "/usr/include/libio.h" 2 3 4
    # 53 "/usr/include/libio.h" 3 4
    # 1 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include/stdarg.h" 1 3 4
    # 40 "/usr/lib/gcc/i686-linux-gnu/4.4.5/include/stdarg.h" 3 4
    typedef __builtin_va_list __gnuc_va_list;
    # 54 "/usr/include/libio.h" 2 3 4
    # 170 "/usr/include/libio.h" 3 4
    struct _IO_jump_t; struct _IO_FILE;
    # 180 "/usr/include/libio.h" 3 4
    typedef void _IO_lock_t;
    
    
    
    
    
    struct _IO_marker {
      struct _IO_marker *_next;
      struct _IO_FILE *_sbuf;
    
    
    
      int _pos;
    # 203 "/usr/include/libio.h" 3 4
    };
    
    
    enum __codecvt_result
    {
      __codecvt_ok,
      __codecvt_partial,
      __codecvt_error,
      __codecvt_noconv
    };
    # 271 "/usr/include/libio.h" 3 4
    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;
    # 319 "/usr/include/libio.h" 3 4
      __off64_t _offset;
    # 328 "/usr/include/libio.h" 3 4
      void *__pad1;
      void *__pad2;
      void *__pad3;
      void *__pad4;
      size_t __pad5;
    
      int _mode;
    
      char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
    
    };
    
    
    typedef struct _IO_FILE _IO_FILE;
    
    
    struct _IO_FILE_plus;
    
    extern struct _IO_FILE_plus _IO_2_1_stdin_;
    extern struct _IO_FILE_plus _IO_2_1_stdout_;
    extern struct _IO_FILE_plus _IO_2_1_stderr_;
    # 364 "/usr/include/libio.h" 3 4
    typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
    
    
    
    
    
    
    
    typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
         size_t __n);
    
    
    
    
    
    
    
    typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
    
    
    typedef int __io_close_fn (void *__cookie);
    # 416 "/usr/include/libio.h" 3 4
    extern int __underflow (_IO_FILE *);
    extern int __uflow (_IO_FILE *);
    extern int __overflow (_IO_FILE *, int);
    # 460 "/usr/include/libio.h" 3 4
    extern int _IO_getc (_IO_FILE *__fp);
    extern int _IO_putc (int __c, _IO_FILE *__fp);
    extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
    extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
    
    extern int _IO_peekc_locked (_IO_FILE *__fp);
    
    
    
    
    
    extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
    extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
    extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
    # 490 "/usr/include/libio.h" 3 4
    extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
       __gnuc_va_list, int *__restrict);
    extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
        __gnuc_va_list);
    extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
    extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
    
    extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
    extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
    
    extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
    # 76 "/usr/include/stdio.h" 2 3 4
    
    
    
    
    typedef __gnuc_va_list va_list;
    # 91 "/usr/include/stdio.h" 3 4
    typedef __off_t off_t;
    # 103 "/usr/include/stdio.h" 3 4
    typedef __ssize_t ssize_t;
    
    
    
    
    
    
    
    typedef _G_fpos_t fpos_t;
    
    
    
    
    # 161 "/usr/include/stdio.h" 3 4
    # 1 "/usr/include/bits/stdio_lim.h" 1 3 4
    # 162 "/usr/include/stdio.h" 2 3 4
    
    
    
    extern struct _IO_FILE *stdin;
    extern struct _IO_FILE *stdout;
    extern struct _IO_FILE *stderr;
    
    
    
    
    
    
    
    extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
    
    extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
    
    
    
    
    extern int renameat (int __oldfd, __const char *__old, int __newfd,
           __const char *__new) __attribute__ ((__nothrow__));
    
    
    
    
    
    
    
    
    extern FILE *tmpfile (void) ;
    # 206 "/usr/include/stdio.h" 3 4
    extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
    
    
    
    
    
    extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
    # 224 "/usr/include/stdio.h" 3 4
    extern char *tempnam (__const char *__dir, __const char *__pfx)
         __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
    
    
    
    
    
    
    
    
    extern int fclose (FILE *__stream);
    
    
    
    
    extern int fflush (FILE *__stream);
    
    # 249 "/usr/include/stdio.h" 3 4
    extern int fflush_unlocked (FILE *__stream);
    # 263 "/usr/include/stdio.h" 3 4
    
    
    
    
    
    
    extern FILE *fopen (__const char *__restrict __filename,
          __const char *__restrict __modes) ;
    
    
    
    
    extern FILE *freopen (__const char *__restrict __filename,
            __const char *__restrict __modes,
            FILE *__restrict __stream) ;
    # 292 "/usr/include/stdio.h" 3 4
    
    # 303 "/usr/include/stdio.h" 3 4
    extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
    # 316 "/usr/include/stdio.h" 3 4
    extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
      __attribute__ ((__nothrow__)) ;
    
    
    
    
    extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
    
    
    
    
    
    
    extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
    
    
    
    extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
          int __modes, size_t __n) __attribute__ ((__nothrow__));
    
    
    
    
    
    extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
             size_t __size) __attribute__ ((__nothrow__));
    
    
    extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
    
    
    
    
    
    
    
    
    extern int fprintf (FILE *__restrict __stream,
          __const char *__restrict __format, ...);
    
    
    
    
    extern int printf (__const char *__restrict __format, ...);
    
    extern int sprintf (char *__restrict __s,
          __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
    
    
    
    
    
    extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
           __gnuc_va_list __arg);
    
    
    
    
    extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
    
    extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
           __gnuc_va_list __arg) __attribute__ ((__nothrow__));
    
    
    
    
    
    extern int snprintf (char *__restrict __s, size_t __maxlen,
           __const char *__restrict __format, ...)
         __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
    
    extern int vsnprintf (char *__restrict __s, size_t __maxlen,
            __const char *__restrict __format, __gnuc_va_list __arg)
         __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
    
    # 414 "/usr/include/stdio.h" 3 4
    extern int vdprintf (int __fd, __const char *__restrict __fmt,
           __gnuc_va_list __arg)
         __attribute__ ((__format__ (__printf__, 2, 0)));
    extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
         __attribute__ ((__format__ (__printf__, 2, 3)));
    
    
    
    
    
    
    
    
    extern int fscanf (FILE *__restrict __stream,
         __const char *__restrict __format, ...) ;
    
    
    
    
    extern int scanf (__const char *__restrict __format, ...) ;
    
    extern int sscanf (__const char *__restrict __s,
         __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
    # 445 "/usr/include/stdio.h" 3 4
    extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") ;
    
    
    extern int scanf (__const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") ;
    
    extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__));
    # 465 "/usr/include/stdio.h" 3 4
    
    
    
    
    
    
    
    
    extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
          __gnuc_va_list __arg)
         __attribute__ ((__format__ (__scanf__, 2, 0))) ;
    
    
    
    
    
    extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
         __attribute__ ((__format__ (__scanf__, 1, 0))) ;
    
    
    extern int vsscanf (__const char *__restrict __s,
          __const char *__restrict __format, __gnuc_va_list __arg)
         __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
    # 496 "/usr/include/stdio.h" 3 4
    extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
    
    
    
         __attribute__ ((__format__ (__scanf__, 2, 0))) ;
    extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
    
         __attribute__ ((__format__ (__scanf__, 1, 0))) ;
    extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf") __attribute__ ((__nothrow__))
    
    
    
         __attribute__ ((__format__ (__scanf__, 2, 0)));
    # 524 "/usr/include/stdio.h" 3 4
    
    
    
    
    
    
    
    
    
    extern int fgetc (FILE *__stream);
    extern int getc (FILE *__stream);
    
    
    
    
    
    extern int getchar (void);
    
    # 552 "/usr/include/stdio.h" 3 4
    extern int getc_unlocked (FILE *__stream);
    extern int getchar_unlocked (void);
    # 563 "/usr/include/stdio.h" 3 4
    extern int fgetc_unlocked (FILE *__stream);
    
    
    
    
    
    
    
    
    
    
    
    extern int fputc (int __c, FILE *__stream);
    extern int putc (int __c, FILE *__stream);
    
    
    
    
    
    extern int putchar (int __c);
    
    # 596 "/usr/include/stdio.h" 3 4
    extern int fputc_unlocked (int __c, FILE *__stream);
    
    
    
    
    
    
    
    extern int putc_unlocked (int __c, FILE *__stream);
    extern int putchar_unlocked (int __c);
    
    
    
    
    
    
    extern int getw (FILE *__stream);
    
    
    extern int putw (int __w, FILE *__stream);
    
    
    
    
    
    
    
    
    extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
         ;
    
    
    
    
    
    
    extern char *gets (char *__s) ;
    
    # 658 "/usr/include/stdio.h" 3 4
    extern __ssize_t __getdelim (char **__restrict __lineptr,
              size_t *__restrict __n, int __delimiter,
              FILE *__restrict __stream) ;
    extern __ssize_t getdelim (char **__restrict __lineptr,
            size_t *__restrict __n, int __delimiter,
            FILE *__restrict __stream) ;
    
    
    
    
    
    
    
    extern __ssize_t getline (char **__restrict __lineptr,
           size_t *__restrict __n,
           FILE *__restrict __stream) ;
    
    
    
    
    
    
    
    
    extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
    
    
    
    
    
    extern int puts (__const char *__s);
    
    
    
    
    
    
    extern int ungetc (int __c, FILE *__stream);
    
    
    
    
    
    
    extern size_t fread (void *__restrict __ptr, size_t __size,
           size_t __n, FILE *__restrict __stream) ;
    
    
    
    
    extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
            size_t __n, FILE *__restrict __s);
    
    # 730 "/usr/include/stdio.h" 3 4
    extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
             size_t __n, FILE *__restrict __stream) ;
    extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
              size_t __n, FILE *__restrict __stream);
    
    
    
    
    
    
    
    
    extern int fseek (FILE *__stream, long int __off, int __whence);
    
    
    
    
    extern long int ftell (FILE *__stream) ;
    
    
    
    
    extern void rewind (FILE *__stream);
    
    # 766 "/usr/include/stdio.h" 3 4
    extern int fseeko (FILE *__stream, __off_t __off, int __whence);
    
    
    
    
    extern __off_t ftello (FILE *__stream) ;
    # 785 "/usr/include/stdio.h" 3 4
    
    
    
    
    
    
    extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
    
    
    
    
    extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
    # 808 "/usr/include/stdio.h" 3 4
    
    # 817 "/usr/include/stdio.h" 3 4
    
    
    extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
    
    extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
    
    extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
    
    
    
    
    extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
    extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
    extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
    
    
    
    
    
    
    
    
    extern void perror (__const char *__s);
    
    
    
    
    
    
    # 1 "/usr/include/bits/sys_errlist.h" 1 3 4
    # 27 "/usr/include/bits/sys_errlist.h" 3 4
    extern int sys_nerr;
    extern __const char *__const sys_errlist[];
    # 847 "/usr/include/stdio.h" 2 3 4
    
    
    
    
    extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
    
    
    
    
    extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
    # 866 "/usr/include/stdio.h" 3 4
    extern FILE *popen (__const char *__command, __const char *__modes) ;
    
    
    
    
    
    extern int pclose (FILE *__stream);
    
    
    
    
    
    extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
    # 906 "/usr/include/stdio.h" 3 4
    extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
    
    
    
    extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
    
    
    extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
    # 936 "/usr/include/stdio.h" 3 4
    
    # 41 "../runtime/platform_generic.h" 2
    
    
    static void
    platform_main_begin(void)
    {
    
    }
    
    static void
    platform_main_end(uint32_t crc)
    {
    
        Frama_C_dump_assert_each();
    
     printf ("checksum = %X\n", crc);
    }
    # 79 "../runtime/random_inc.h" 2
    # 96 "../runtime/random_inc.h"
    # 1 "../runtime/safe_math.h" 1
    # 13 "../runtime/safe_math.h"
    static int8_t
    (safe_unary_minus_func_int8_t_s)(int8_t si)
    {
      return
    
    
    
    
    
    
        -si;
    }
    
    static int8_t
    (safe_add_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
    
    
    
    
    
        (si1 + si2);
    }
    
    static int8_t
    (safe_sub_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
    
    
    
    
    
        (si1 - si2);
    }
    
    static int8_t
    (safe_mul_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
    
    
    
    
    
        si1 * si2;
    }
    
    static int8_t
    (safe_mod_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-128)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 % si2);
    }
    
    static int8_t
    (safe_div_func_int8_t_s_s)(int8_t si1, int8_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-128)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 / si2);
    }
    
    static int8_t
    (safe_lshift_func_int8_t_s_s)(int8_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((127) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static int8_t
    (safe_lshift_func_int8_t_s_u)(int8_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32) || (left > ((127) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static int8_t
    (safe_rshift_func_int8_t_s_s)(int8_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static int8_t
    (safe_rshift_func_int8_t_s_u)(int8_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    static int16_t
    (safe_unary_minus_func_int16_t_s)(int16_t si)
    {
      return
    
    
    
    
    
    
        -si;
    }
    
    static int16_t
    (safe_add_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
    
    
    
    
    
        (si1 + si2);
    }
    
    static int16_t
    (safe_sub_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
    
    
    
    
    
        (si1 - si2);
    }
    
    static int16_t
    (safe_mul_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
    
    
    
    
    
        si1 * si2;
    }
    
    static int16_t
    (safe_mod_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-32767-1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 % si2);
    }
    
    static int16_t
    (safe_div_func_int16_t_s_s)(int16_t si1, int16_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-32767-1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 / si2);
    }
    
    static int16_t
    (safe_lshift_func_int16_t_s_s)(int16_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((32767) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static int16_t
    (safe_lshift_func_int16_t_s_u)(int16_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32) || (left > ((32767) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static int16_t
    (safe_rshift_func_int16_t_s_s)(int16_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static int16_t
    (safe_rshift_func_int16_t_s_u)(int16_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    static int32_t
    (safe_unary_minus_func_int32_t_s)(int32_t si)
    {
      return
    
    
        (si==(-2147483647-1)) ?
        ((si)) :
    
    
        -si;
    }
    
    static int32_t
    (safe_add_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
    
        (((si1>0) && (si2>0) && (si1 > ((2147483647)-si2))) || ((si1<0) && (si2<0) && (si1 < ((-2147483647-1)-si2)))) ?
        ((si1)) :
    
    
        (si1 + si2);
    }
    
    static int32_t
    (safe_sub_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
    
        (((si1^si2) & (((si1 ^ ((si1^si2) & (~(2147483647))))-si2)^si2)) < 0) ?
        ((si1)) :
    
    
        (si1 - si2);
    }
    
    static int32_t
    (safe_mul_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
    
        (((si1 > 0) && (si2 > 0) && (si1 > ((2147483647) / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < ((-2147483647-1) / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < ((-2147483647-1) / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < ((2147483647) / si1)))) ?
        ((si1)) :
    
    
        si1 * si2;
    }
    
    static int32_t
    (safe_mod_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-2147483647-1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 % si2);
    }
    
    static int32_t
    (safe_div_func_int32_t_s_s)(int32_t si1, int32_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-2147483647-1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 / si2);
    }
    
    static int32_t
    (safe_lshift_func_int32_t_s_s)(int32_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((2147483647) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static int32_t
    (safe_lshift_func_int32_t_s_u)(int32_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32) || (left > ((2147483647) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static int32_t
    (safe_rshift_func_int32_t_s_s)(int32_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static int32_t
    (safe_rshift_func_int32_t_s_u)(int32_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    
    static int64_t
    (safe_unary_minus_func_int64_t_s)(int64_t si)
    {
      return
    
    
        (si==(-9223372036854775807LL -1)) ?
        ((si)) :
    
    
        -si;
    }
    
    static int64_t
    (safe_add_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
    
        (((si1>0) && (si2>0) && (si1 > ((9223372036854775807LL)-si2))) || ((si1<0) && (si2<0) && (si1 < ((-9223372036854775807LL -1)-si2)))) ?
        ((si1)) :
    
    
        (si1 + si2);
    }
    
    static int64_t
    (safe_sub_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
    
        (((si1^si2) & (((si1 ^ ((si1^si2) & (~(9223372036854775807LL))))-si2)^si2)) < 0) ?
        ((si1)) :
    
    
        (si1 - si2);
    }
    
    static int64_t
    (safe_mul_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
    
        (((si1 > 0) && (si2 > 0) && (si1 > ((9223372036854775807LL) / si2))) || ((si1 > 0) && (si2 <= 0) && (si2 < ((-9223372036854775807LL -1) / si1))) || ((si1 <= 0) && (si2 > 0) && (si1 < ((-9223372036854775807LL -1) / si2))) || ((si1 <= 0) && (si2 <= 0) && (si1 != 0) && (si2 < ((9223372036854775807LL) / si1)))) ?
        ((si1)) :
    
    
        si1 * si2;
    }
    
    static int64_t
    (safe_mod_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-9223372036854775807LL -1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 % si2);
    }
    
    static int64_t
    (safe_div_func_int64_t_s_s)(int64_t si1, int64_t si2)
    {
      return
    
        ((si2 == 0) || ((si1 == (-9223372036854775807LL -1)) && (si2 == (-1)))) ?
        ((si1)) :
    
        (si1 / si2);
    }
    
    static int64_t
    (safe_lshift_func_int64_t_s_s)(int64_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((9223372036854775807LL) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static int64_t
    (safe_lshift_func_int64_t_s_u)(int64_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32) || (left > ((9223372036854775807LL) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static int64_t
    (safe_rshift_func_int64_t_s_s)(int64_t left, int right)
    {
      return
    
        ((left < 0) || (((int)right) < 0) || (((int)right) >= 32))?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static int64_t
    (safe_rshift_func_int64_t_s_u)(int64_t left, unsigned int right)
    {
      return
    
        ((left < 0) || (((unsigned int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    
    
    
    
    static uint8_t
    (safe_unary_minus_func_uint8_t_u)(uint8_t ui)
    {
      return -ui;
    }
    
    static uint8_t
    (safe_add_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return ui1 + ui2;
    }
    
    static uint8_t
    (safe_sub_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return ui1 - ui2;
    }
    
    static uint8_t
    (safe_mul_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return ((unsigned int)ui1) * ((unsigned int)ui2);
    }
    
    static uint8_t
    (safe_mod_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 % ui2);
    }
    
    static uint8_t
    (safe_div_func_uint8_t_u_u)(uint8_t ui1, uint8_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 / ui2);
    }
    
    static uint8_t
    (safe_lshift_func_uint8_t_u_s)(uint8_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32) || (left > ((255) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static uint8_t
    (safe_lshift_func_uint8_t_u_u)(uint8_t left, unsigned int right)
    {
      return
    
        ((((unsigned int)right) >= 32) || (left > ((255) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static uint8_t
    (safe_rshift_func_uint8_t_u_s)(uint8_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static uint8_t
    (safe_rshift_func_uint8_t_u_u)(uint8_t left, unsigned int right)
    {
      return
    
        (((unsigned int)right) >= 32) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    static uint16_t
    (safe_unary_minus_func_uint16_t_u)(uint16_t ui)
    {
      return -ui;
    }
    
    static uint16_t
    (safe_add_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return ui1 + ui2;
    }
    
    static uint16_t
    (safe_sub_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return ui1 - ui2;
    }
    
    static uint16_t
    (safe_mul_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return ((unsigned int)ui1) * ((unsigned int)ui2);
    }
    
    static uint16_t
    (safe_mod_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 % ui2);
    }
    
    static uint16_t
    (safe_div_func_uint16_t_u_u)(uint16_t ui1, uint16_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 / ui2);
    }
    
    static uint16_t
    (safe_lshift_func_uint16_t_u_s)(uint16_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32) || (left > ((65535) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static uint16_t
    (safe_lshift_func_uint16_t_u_u)(uint16_t left, unsigned int right)
    {
      return
    
        ((((unsigned int)right) >= 32) || (left > ((65535) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static uint16_t
    (safe_rshift_func_uint16_t_u_s)(uint16_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static uint16_t
    (safe_rshift_func_uint16_t_u_u)(uint16_t left, unsigned int right)
    {
      return
    
        (((unsigned int)right) >= 32) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    static uint32_t
    (safe_unary_minus_func_uint32_t_u)(uint32_t ui)
    {
      return -ui;
    }
    
    static uint32_t
    (safe_add_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return ui1 + ui2;
    }
    
    static uint32_t
    (safe_sub_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return ui1 - ui2;
    }
    
    static uint32_t
    (safe_mul_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return ((unsigned int)ui1) * ((unsigned int)ui2);
    }
    
    static uint32_t
    (safe_mod_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 % ui2);
    }
    
    static uint32_t
    (safe_div_func_uint32_t_u_u)(uint32_t ui1, uint32_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 / ui2);
    }
    
    static uint32_t
    (safe_lshift_func_uint32_t_u_s)(uint32_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32) || (left > ((4294967295U) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static uint32_t
    (safe_lshift_func_uint32_t_u_u)(uint32_t left, unsigned int right)
    {
      return
    
        ((((unsigned int)right) >= 32) || (left > ((4294967295U) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static uint32_t
    (safe_rshift_func_uint32_t_u_s)(uint32_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static uint32_t
    (safe_rshift_func_uint32_t_u_u)(uint32_t left, unsigned int right)
    {
      return
    
        (((unsigned int)right) >= 32) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    
    
    
    
    static uint64_t
    (safe_unary_minus_func_uint64_t_u)(uint64_t ui)
    {
      return -ui;
    }
    
    static uint64_t
    (safe_add_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return ui1 + ui2;
    }
    
    static uint64_t
    (safe_sub_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return ui1 - ui2;
    }
    
    static uint64_t
    (safe_mul_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return ((unsigned long long int)ui1) * ((unsigned long long int)ui2);
    }
    
    static uint64_t
    (safe_mod_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 % ui2);
    }
    
    static uint64_t
    (safe_div_func_uint64_t_u_u)(uint64_t ui1, uint64_t ui2)
    {
      return
    
        (ui2 == 0) ?
        ((ui1)) :
    
        (ui1 / ui2);
    }
    
    static uint64_t
    (safe_lshift_func_uint64_t_u_s)(uint64_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32) || (left > ((18446744073709551615ULL) >> ((int)right)))) ?
        ((left)) :
    
        (left << ((int)right));
    }
    
    static uint64_t
    (safe_lshift_func_uint64_t_u_u)(uint64_t left, unsigned int right)
    {
      return
    
        ((((unsigned int)right) >= 32) || (left > ((18446744073709551615ULL) >> ((unsigned int)right)))) ?
        ((left)) :
    
        (left << ((unsigned int)right));
    }
    
    static uint64_t
    (safe_rshift_func_uint64_t_u_s)(uint64_t left, int right)
    {
      return
    
        ((((int)right) < 0) || (((int)right) >= 32)) ?
        ((left)) :
    
        (left >> ((int)right));
    }
    
    static uint64_t
    (safe_rshift_func_uint64_t_u_u)(uint64_t left, unsigned int right)
    {
      return
    
        (((unsigned int)right) >= 32) ?
        ((left)) :
    
        (left >> ((unsigned int)right));
    }
    # 97 "../runtime/random_inc.h" 2
    # 11 "foo.c" 2
    
    volatile uint64_t csmith_sink_ = 0;
    
    long __undefined;
    
    
    
     const volatile uint16_t g_8 = 8L;
    int32_t g_13 = 0x6C516535L;
     const int32_t *g_12 = &g_13;
     const int32_t ** volatile g_11 = &g_12;
    int32_t g_18 = 0x069F4981L;
    int32_t * volatile g_33 = &g_13;
    uint16_t g_73 = 0x399DL;
    int32_t g_75 = 0x9980A6F8L;
    int32_t *g_74 = &g_75;
    int32_t **g_79 = &g_74;
     const int32_t **g_122 = &g_12;
     const int32_t *** volatile g_121 = &g_122;
    int32_t *** const volatile g_126 = &g_79;
     volatile uint16_t g_152 = 0x5428L;
    int32_t *** const volatile g_169 = &g_79;
    int32_t *g_193 = 0;
    int32_t g_195 = 0L;
     volatile int32_t g_385 = 0xE7737C8AL;
    
    
    
    uint16_t func_1(void);
    int32_t * func_2(int32_t * p_3, int32_t * p_4, const int32_t p_5, uint32_t p_6, int32_t * p_7);
     const int32_t * func_14( const int32_t * p_15, int32_t ** const p_16);
    int32_t func_19(int32_t * p_20, const uint64_t p_21, const uint16_t p_22);
    int32_t * func_23(int32_t ** p_24);
     const int32_t * func_25(int32_t p_26, int32_t p_27, const int32_t p_28, int32_t p_29, uint16_t p_30);
    int32_t func_35(int8_t p_36);
     const int32_t func_41(int32_t p_42);
     const int32_t func_46(int32_t ** p_47, uint16_t p_48, const int8_t p_49, int32_t p_50);
    int32_t * func_51( const int32_t p_52, const int32_t ** p_53, int32_t p_54);
    # 57 "foo.c"
    uint16_t func_1(void)
    {
        uint16_t l_424 = 0x014CL;
        int32_t **l_427 = &g_74;
        (*l_427) = func_2((**g_169), func_51(g_195, g_122, (safe_mul_func_int8_t_s_s ((safe_div_func_int32_t_s_s (l_424, 8L)), (safe_div_func_int64_t_s_s ((l_427 != 0), ((**l_427) <= (**l_427))))))), -1L, func_35(g_13), func_2((*g_79), (*l_427), (**g_79), 0xC7C98F07L, (*g_79)));
        (**l_427) = (func_35(g_152) >= (**l_427));
        if ((**l_427))
        {
            return (**l_427);
        }
        else
        {
            int16_t l_428 = 9L;
            return l_428;
        }
    }
    
    
    
    
    
    
    
    int32_t * func_2(int32_t * p_3, int32_t * p_4, const int32_t p_5, uint32_t p_6, int32_t * p_7)
    {
        uint8_t l_327 = 7L;
        int32_t *l_363 = &g_13;
        int32_t l_364 = 0x97BFAF38L;
        int8_t l_376 = -1L;
        uint32_t l_379 = 0xA0DB183BL;
        int32_t **l_380 = 0;
        uint64_t l_392 = 0x997FF8A4D8716988LL;
        uint8_t l_395 = 0xEEL;
        int32_t **l_397 = &g_74;
        int32_t **l_398 = &g_193;
        int32_t *l_401 = &g_13;
        uint32_t l_403 = 5L;
        int32_t l_406 = 0L;
        int32_t *l_415 = &g_18;
        return (*l_397);
    }
    
    
    
    
    
    
    
     const int32_t * func_14( const int32_t * p_15, int32_t ** const p_16)
    {
        int32_t *l_17 = &g_18;
        int32_t ** const l_217 = &g_193;
         const int32_t **l_228 = 0;
        int8_t l_235 = 0x9EL;
        int16_t l_251 = -3L;
         const uint16_t l_258 = 0x26D7L;
        int32_t **l_302 = &g_193;
        int64_t l_320 = 0x16A100968CA8C21ELL;
        (*l_17) &= (**g_11);
        return (*p_16);
    }
    
    
    
    
    
    
    
    int32_t func_19(int32_t * p_20, const uint64_t p_21, const uint16_t p_22)
    {
        int32_t **l_164 = 0;
        int32_t *l_165 = &g_75;
        uint64_t l_180 = 0x311020B4DDF18D08LL;
        (*g_122) = l_165;
        if ((0 == (*g_122)))
        {
            uint32_t l_166 = 0xADFC38D3L;
            int32_t ** const l_167 = &l_165;
             const int32_t **l_174 = &g_12;
            (**g_79) = l_166;
            if ((+l_166))
            {
                (*l_165) ^= 0L;
                (*g_122) = func_51(0L, (*g_121), g_13);
            }
            else
            {
                int32_t **l_168 = &l_165;
                (*p_20) |= (l_167 == 0);
                (*g_169) = l_168;
                (*l_165) |= func_35(p_21);
            }
            (*l_174) = func_25((safe_sub_func_int8_t_s_s (func_46(&l_165, func_41((*p_20)), p_21, (((g_73 ^ (*p_20)) | 0x46356B4AL) | func_35(p_22))), (g_73 < ((safe_lshift_func_int8_t_s_u ((g_73 == (*p_20)), (*p_20))) < g_73)))), g_73, g_73, p_22, g_73);
        }
        else
        {
            int32_t ***l_175 = &g_79;
            int32_t l_198 = 0x9D4CF236L;
             const int32_t **l_201 = &g_12;
            (***l_175) &= (((0 == (*g_169)) & (l_175 == &l_164)) > (safe_mod_func_int64_t_s_s (-10L, (safe_lshift_func_uint16_t_u_u (l_180, (0xE6F67040L ^ -10L))))));
            for (g_75 = 0; (g_75 == 15); g_75 = safe_add_func_uint16_t_u_u (g_75, 1))
            {
                int32_t *l_194 = &g_195;
            }
        }
        return (*g_12);
    }
    
    
    
    
    
    
    
    int32_t * func_23(int32_t ** p_24)
    {
        int32_t l_38 = -6L;
         const int32_t **l_142 = &g_12;
        uint32_t l_162 = 3L;
        int32_t *l_163 = &g_18;
        (*g_11) = func_25((((func_35(func_35(l_38)) ^ l_38) >= ((safe_rshift_func_int16_t_s_s (l_38, l_38)) && func_41((l_38 > l_38)))) >= -8L), l_38, 0x95652091L, l_38, g_73);
        if ((safe_unary_minus_func_uint16_t_u (-4L)))
        {
            int32_t *l_140 = &g_75;
            for (g_13 = 0; (g_13 >= -22); g_13 = safe_sub_func_uint64_t_u_u (g_13, 0))
            {
                int32_t *l_139 = &g_13;
                return l_139;
            }
            if (g_73)
                goto lbl_141;
    lbl_141:
            (*l_140) &= (***g_121);
            return (*p_24);
        }
        else
        {
            int16_t l_151 = -1L;
            int32_t *** const l_157 = &g_79;
            (*l_142) = func_51(1L, l_142, (safe_div_func_int64_t_s_s (((safe_sub_func_uint16_t_u_u ((safe_div_func_int64_t_s_s ((safe_mod_func_int16_t_s_s (l_151, l_151)), (l_151 == l_151))), g_152)) & (safe_sub_func_int32_t_s_s (l_151, (safe_sub_func_int32_t_s_s (func_35((**l_142)), (*g_12)))))), l_151)));
            (*g_33) ^= ((&g_122 == l_157) < ((*l_157) != p_24));
        }
        if (g_73)
            goto lbl_161;
    lbl_161:
        for (g_18 = 0; (g_18 >= 8); g_18 = safe_add_func_uint32_t_u_u (g_18, 4))
        {
            int64_t l_160 = 0L;
            (*l_142) = 0;
            if (l_160)
                break;
        }
        (*l_163) = l_162;
        return l_163;
    }
    
    
    
    
    
    
    
     const int32_t * func_25(int32_t p_26, int32_t p_27, const int32_t p_28, int32_t p_29, uint16_t p_30)
    {
         const int32_t *l_34 = &g_18;
        (*g_33) = (safe_div_func_uint16_t_u_u (0xA5F27A41L, 0xB8575526L));
        return l_34;
    }
    
    
    
    
    
    
    
    int32_t func_35(int8_t p_36)
    {
        int32_t *l_37 = &g_13;
        (*l_37) = (l_37 == l_37);
        return (*l_37);
    }
    
    
    
    
    
    
    
     const int32_t func_41(int32_t p_42)
    {
        int32_t * const *l_45 = 0;
        int32_t *l_62 = &g_18;
        int32_t **l_61 = &l_62;
        uint32_t l_107 = 0x37596CDDL;
        if (((safe_lshift_func_int16_t_s_s ((0 == l_45), 2L)) == ((!func_46(l_61, (**l_61), g_8, (p_42 < ((*l_62) | g_18)))) == (safe_mod_func_uint16_t_u_u ((safe_div_func_int64_t_s_s (-9L, (safe_add_func_uint16_t_u_u (3L, (!p_42))))), (safe_mul_func_int16_t_s_s ((safe_div_func_uint16_t_u_u ((g_73 > g_73), (p_42 || g_73))), (g_73 >= (g_74 != &g_75)))))))))
        {
            int16_t l_76 = 0x0510L;
            int32_t **l_90 = &l_62;
            (*g_74) = func_46(&l_62, g_8, p_42, l_76);
            if ((safe_rshift_func_int8_t_s_u (func_46(g_79, (safe_mul_func_int8_t_s_s ((l_76 < (l_76 > func_46(&l_62, p_42, p_42, l_76))), (((safe_div_func_int32_t_s_s (l_76, (*g_74))) != (safe_div_func_uint16_t_u_u ((*g_74), p_42))) & (**g_79)))), (safe_add_func_int64_t_s_s (((safe_add_func_int8_t_s_s ((*g_74), l_76)) && ((*g_79) == (*g_79))), p_42)), (**g_79)), 8L)))
            {
                int32_t l_91 = -9L;
                 const int32_t **l_109 = &g_12;
                if (((func_46(l_90, l_91, g_8, p_42) || func_46(&l_62, p_42, p_42, (l_90 != &l_62))) ^ (*g_74)))
                {
                    return p_42;
                }
                else
                {
                    int32_t *l_94 = &g_75;
                     const int32_t **l_116 = &g_12;
                    for (g_75 = 0; (g_75 == 0); g_75 = safe_add_func_int64_t_s_s (g_75, 3))
                    {
                        uint32_t l_100 = 8L;
                        if (p_42)
                            break;
                        (*g_79) = 0;
                        if (l_91)
                            goto lbl_95;
    lbl_95:
                        l_94 = (*g_79);
                        (**l_61) = (((safe_mul_func_int8_t_s_s ((safe_mul_func_uint16_t_u_u (p_42, (l_100 == (p_42 == p_42)))), (*l_62))) > (safe_add_func_uint64_t_u_u (p_42, (((&g_33 == &l_62) <= p_42) != p_42)))) || l_91);
                    }
                    if (func_46(&g_74, 0xCC43L, l_91, g_73))
                    {
                        uint16_t l_108 = -6L;
                        (*l_62) = (func_46(&g_74, ((*g_11) == l_94), (p_42 | (p_42 > -1L)), ((safe_add_func_int8_t_s_s (l_107, p_42)) && (~l_91))) || (l_108 == 0xC1773A67L));
                        (*g_11) = func_51(g_73, l_109, g_8);
                    }
                    else
                    {
                         const uint16_t l_113 = 0xFF94L;
                         const int32_t *l_115 = &l_91;
                        int32_t **l_117 = &g_74;
                        uint32_t l_118 = 0xDDF0F57BL;
                        if (p_42)
                        {
                            int32_t **l_112 = &g_74;
                            (**l_61) = (-1L <= (((safe_sub_func_int16_t_s_s ((0 != (*l_90)), func_46(l_112, g_75, l_113, p_42))) || (safe_unary_minus_func_uint8_t_u (func_46(l_112, g_18, p_42, p_42)))) != 0x132C5A17L));
                        }
                        else
                        {
    lbl_119:
                            (*l_61) = &p_42;
                            (*l_109) = l_115;
                            (*l_90) = func_51((p_42 > ((**l_90) || p_42)), l_116, (p_42 & p_42));
                        }
                        if (p_42)
                            goto lbl_120;
                        if (g_75)
                            goto lbl_119;
    lbl_120:
                        (*g_79) = func_51(g_73, l_109, g_18);
                        return p_42;
                    }
                    (*g_121) = l_116;
                }
                (*l_109) = func_51((**l_90), l_109, 0L);
                for (l_76 = 21; (l_76 != -2); l_76 = safe_add_func_uint32_t_u_u (l_76, 1))
                {
                    (**l_61) = p_42;
                    (*l_109) = 0;
                }
            }
            else
            {
                int32_t **l_125 = 0;
                int32_t l_127 = 0x96D32418L;
                 const uint8_t l_132 = 5L;
                (*g_126) = l_125;
                (*g_122) = &p_42;
                (*g_74) &= (p_42 < (l_107 ^ (**l_90)));
                return l_132;
            }
        }
        else
        {
             const uint32_t l_135 = 0xBF7ADE52L;
            (***g_126) = ((((safe_sub_func_uint8_t_u_u ((0 != (*g_126)), (l_135 & p_42))) < (-7L >= l_135)) > (**g_79)) <= p_42);
            return l_135;
        }
        return p_42;
    }
    
    
    
    
    
    
    
     const int32_t func_46(int32_t ** p_47, uint16_t p_48, const int8_t p_49, int32_t p_50)
    {
         const int32_t **l_59 = &g_12;
         const int32_t l_60 = 0xF6DAE1DCL;
        (*g_11) = func_51((0 != (*p_47)), l_59, g_8);
        return l_60;
    }
    
    
    
    
    
    
    
    int32_t * func_51( const int32_t p_52, const int32_t ** p_53, int32_t p_54)
    {
        int32_t *l_58 = &g_18;
        for (g_18 = 0; (g_18 <= 0); g_18 = safe_sub_func_int32_t_s_s (g_18, 1))
        {
            int32_t *l_57 = 0;
            return l_57;
        }
        (*p_53) = l_58;
        return &g_18;
    }
    
    
    
    
    
    int main()
    {
        int print_hash_value = 0;
        platform_main_begin();
        func_1();
        csmith_sink_ = g_8;
        csmith_sink_ = g_13;
        csmith_sink_ = g_18;
        csmith_sink_ = g_73;
        csmith_sink_ = g_75;
        csmith_sink_ = g_152;
        csmith_sink_ = g_195;
        csmith_sink_ = g_385;
        platform_main_end(0);
        return 0;
    }
    
    c file icon foo_pp.c (45,746 bytes) 2011-02-12 05:25 +

-Relationships
has duplicate 0000836closedpascal Unexpected error (File "cil/ocamlutil/cilutil.ml", line 918, characters 10-16: Assertion failed). 
+Relationships

-Notes

~0001478

pascal (reporter)

Fixed by commit 11865.
+Notes

-Issue History
Date Modified Username Field Change
2011-02-12 05:25 regehr New Issue
2011-02-12 05:25 regehr Status new => assigned
2011-02-12 05:25 regehr Assigned To => pascal
2011-02-12 05:25 regehr File Added: foo_pp.c
2011-02-12 06:24 pascal Note Added: 0001478
2011-02-12 06:24 pascal Status assigned => resolved
2011-02-12 06:24 pascal Resolution open => fixed
2011-05-25 09:34 pascal Relationship added has duplicate 0000836
2011-10-10 14:13 signoles Fixed in Version => Frama-C Nitrogen-20111001
2011-10-10 14:14 signoles Status resolved => closed
2018-01-12 14:26 signoles Category Plug-in > value analysis => Plug-in > Eva
+Issue History