/* 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, "Sfoo", -1}, 
        {3, "Sbar", -2}};
struct printf_arguments {
   int i ;
   double d ;
   char * __ROSTRING  s ;
   long long ll ;
};
struct foo {
   int f1 ;
};
struct bar {
   int *f1 ;
   int f2 ;
};
extern void __ccuredInit(void) ;
extern  __attribute__((__noreturn__)) void abort_deepcopy(char *errmsg ) ;
struct foo gfoo  ;
struct bar gbar  ;
struct meta_rtti_void {
   struct RTTI_ELEMENT *_t ;
}   ;
struct rtti_void {
   void * __RTTI  _p ;
   struct meta_rtti_void _ms ;
}   ;
typedef struct rtti_void rtti_void;
rtti_void g_rs  ;
int main(void) ;
int main(void) 
{ int acc ;
  void * __RTTI  __cil_tmp2 ;
  void * __RTTI  __cil_tmp3 ;
  struct RTTI_ELEMENT *__cil_tmp2_t6 ;
  struct RTTI_ELEMENT *__cil_tmp3_t7 ;

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