/* Generated by CIL v. 1.3.5 */
/* print_CIL_Input is false */

#define CCURED_SPLIT_ARGUMENTS
// #define CCURED_ALLOW_PARTIAL_ELEMENTS_IN_SEQUENCE
// #define CCURED_LOG_NON_POINTERS
#define CCURED_USE_STRINGS
// #define CCURED_FAIL_IS_TERSE
// #define CCURED_ALWAYS_STOP_ON_ERROR
// Include the definition of the checkers
#define CCURED
#define CCURED_POST
#include "ccuredcheck.h"
static struct RTTI_ELEMENT ( __attribute__((__unused__)) RTTI_ARRAY)[4]  = {      {0, "scalar", 0}, 
        {1, "void", -1}, 
        {2, "Sbar", 1}, 
        {3, "Sfoo", -2}};
struct printf_arguments {
   int i ;
   double d ;
   char * __ROSTRING  s ;
   long long ll ;
};
struct meta_fseqp_int {
   void *_e ;
}   ;
struct fseqp_int {
   int * __FSEQ  _p ;
   struct meta_fseqp_int _ms ;
}   ;
typedef struct fseqp_int fseqp_int;
struct foo {
   fseqp_int f1 ;
   int f2 ;
};
struct bar {
   struct fseqp_int f3 ;
   int f4 ;
   int f5 ;
};
extern void __ccuredInit(void) ;
extern  __attribute__((__noreturn__)) void abort_deepcopy(char *errmsg ) ;
struct foo gfoo  __RTTI   ;
struct bar gbar  ;
struct meta_rtti_s_foo {
   struct RTTI_ELEMENT *_t ;
}   ;
struct rtti_s_foo {
   struct foo * __RTTI  _p ;
   struct meta_rtti_s_foo _ms ;
}   ;
typedef struct rtti_s_foo rtti_s_foo;
rtti_s_foo g_rs  ;
int main(void) ;
int main(void) 
{ int acc ;
  struct foo * __RTTI  __cil_tmp2 ;
  struct foo * __RTTI  __cil_tmp3 ;
  int * __FSEQ  __cil_tmp4 ;
  struct RTTI_ELEMENT *__cil_tmp2_t8 ;
  struct RTTI_ELEMENT *__cil_tmp3_t9 ;
  void *__cil_tmp4_e10 ;

  {
  __ccuredAlwaysStopOnError = 0;
  __ccuredUseStrings = 1;
  __ccuredLogNonPointers = 0;
  __ccuredInit();
  acc = 0;
  __cil_tmp2 = (struct foo */* __RTTI  */)((struct foo *)((struct foo */* __RTTI  */)((struct foo *)(& gfoo))));
  __cil_tmp2_t8 = & RTTI_ARRAY[3];
  g_rs._ms._t = __cil_tmp2_t8;
  g_rs._p = __cil_tmp2;
  CHECK_NULL((void *)g_rs._p);
  acc += (g_rs._p)->f2;
  __cil_tmp3 = (struct foo */* __RTTI  */)((struct foo *)((struct foo */* __RTTI  */)((struct foo *)((struct foo */* __RTTI  */)((struct foo *)(& gbar))))));
  __cil_tmp3_t9 = & RTTI_ARRAY[2];
  g_rs._ms._t = __cil_tmp3_t9;
  g_rs._p = __cil_tmp3;
  CHECK_NULL((void *)g_rs._p);
  acc += (g_rs._p)->f2;
  if ((unsigned int )g_rs._p) {
    CHECK_RTTICAST(g_rs._ms._t, & RTTI_ARRAY[2]);
  }
  CHECK_NULL((void *)((struct bar *)g_rs._p));
  acc += ((struct bar *)g_rs._p)->f5;
  CHECK_FSEQARITH((void *)gfoo.f1._p, sizeof(int ), (void *)(gfoo.f1._p + 1), gfoo.f1._ms._e,
                  0);
  __cil_tmp4 = gfoo.f1._p + 1;
  __cil_tmp4_e10 = gfoo.f1._ms._e;
  gfoo.f1._ms._e = __cil_tmp4_e10;
  gfoo.f1._p = __cil_tmp4;
  return (acc);
}
}
