/* 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)[3]  = {      {0, "scalar", 0}, 
        {1, "void", -1}, 
        {2, "AutoRTTI:TSBase(int )", -1}};
struct printf_arguments {
   int i ;
   double d ;
   char * __ROSTRING  s ;
   long long ll ;
};
union int_or_ptr {
   int i ;
   int *p ;
} __TAGGED  ;
struct tagged_int_or_ptr {
   struct RTTI_ELEMENT *__tag ;
   union int_or_ptr __data ;
} __TAGGED  ;
extern void __ccuredInit(void) ;
extern  __attribute__((__noreturn__)) void abort_deepcopy(char *errmsg ) ;
int main(void) ;
int main(void) 
{ struct tagged_int_or_ptr x ;
  int i ;
  int __retres3 ;
  struct RTTI_ELEMENT *__cil_tmp4 ;
  struct RTTI_ELEMENT *__cil_tmp7 ;

  {
  x.__tag = (struct RTTI_ELEMENT *)0;
  __ccuredAlwaysStopOnError = 0;
  __ccuredUseStrings = 1;
  __ccuredLogNonPointers = 0;
  __ccuredInit();
  __cil_tmp4 = & RTTI_ARRAY[0];
  x.__tag = (struct RTTI_ELEMENT *)__cil_tmp4;
  x.__data.i = 5;
  CHECK_RTTIUNIONTAG(x.__tag, & RTTI_ARRAY[0]);
  i = x.__data.i;
  if ((unsigned int )x.__data.p) {
    CHECK_RTTIUNIONTAG(x.__tag, & RTTI_ARRAY[2]);
  }
  CHECK_NULL((void *)x.__data.p);
  i = *(x.__data.p);
  __cil_tmp7 = & RTTI_ARRAY[2];
  x.__tag = (struct RTTI_ELEMENT *)__cil_tmp7;
  x.__data.p = (int *)(& i);
  CHECK_RTTIUNIONTAG(x.__tag, & RTTI_ARRAY[0]);
  i = x.__data.i;
  if ((unsigned int )x.__data.p) {
    CHECK_RTTIUNIONTAG(x.__tag, & RTTI_ARRAY[2]);
  }
  CHECK_NULL((void *)x.__data.p);
  i = *(x.__data.p);
  __retres3 = 0;
  return (__retres3);
}
}
