/* 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"
struct printf_arguments {
   int i ;
   double d ;
   char * __ROSTRING  s ;
   long long ll ;
};
extern void __ccuredInit(void) ;
extern  __attribute__((__noreturn__)) void abort_deepcopy(char *errmsg ) ;
extern char *strchr(char * , int  ) ;
extern void exit(int  ) ;
struct meta_fseqp_char {
   void *_e ;
}   ;
struct fseqp_char {
   char * __FSEQ  _p ;
   struct meta_fseqp_char _ms ;
}   ;
typedef struct fseqp_char fseqp_char;
fseqp_char /*1*/strchr_wrapper_fs(char *str , int chr ) ;
char */*2*/strchr_wrapper(char *str , int chr ) ;
void foo(char *s ) ;
void foo(char *s ) 
{ char * __FSEQ  res ;
  char * __FSEQ  tmp ;
  char *(*p_strchr)(char * , int  ) ;
  char *tmp___0 ;
  fseqp_char __cil_tmp6 ;
  char * __FSEQ  __cil_tmp7 ;
  char * __FSEQ  __cil_tmp8 ;
  char *__cil_tmp9 ;
  char * __FSEQ  __cil_tmp10 ;
  void *res_e16 ;
  void *tmp_e17 ;
  void *__cil_tmp7_e18 ;
  void *__cil_tmp8_e19 ;
  void *__cil_tmp10_e20 ;

  {
  tmp___0 = (char *)0;
  p_strchr = (char *(*)(char * , int  ))0;
  tmp_e17 = (void *)0;
  tmp = (char */* __FSEQ  */)0;
  res_e16 = (void *)0;
  res = (char */* __FSEQ  */)0;
  __cil_tmp6 = /*1*/strchr_wrapper_fs((char *)s, 'q');
  __cil_tmp7 = __cil_tmp6._p;
  __cil_tmp7_e18 = __cil_tmp6._ms._e;
  tmp_e17 = __cil_tmp7_e18;
  tmp = __cil_tmp7;
  __cil_tmp8 = tmp;
  __cil_tmp8_e19 = tmp_e17;
  res_e16 = __cil_tmp8_e19;
  res = __cil_tmp8;
  p_strchr = (char *(*)(char * , int  ))(& /*2*/strchr_wrapper);
  CHECK_NULL((void *)p_strchr);
  __cil_tmp9 = (*p_strchr)((char *)s, 'q');
  tmp___0 = (char *)__cil_tmp9;
  if ((unsigned int )res != (unsigned int )tmp___0) {
    exit(1);
  }
  CHECK_FSEQARITH((void *)res, sizeof(char ), (void *)(res + 1), res_e16, 0);
  __cil_tmp10 = res + 1;
  __cil_tmp10_e20 = res_e16;
  res_e16 = __cil_tmp10_e20;
  res = __cil_tmp10;
  return;
}
}
extern struct fseqp_char /*3*/__mkptr_string_fs(char *p ) ;
fseqp_char /*1*/strchr_wrapper_fs(char *str , int chr ) ;
fseqp_char /*1*/strchr_wrapper_fs(char *str , int chr ) 
{ char *result ;
  char * __FSEQ  tmp ;
  char *__cil_tmp5 ;
  struct fseqp_char __cil_tmp6 ;
  char * __FSEQ  __cil_tmp7 ;
  fseqp_char __cil_tmp8 ;
  void *tmp_e11 ;
  void *__cil_tmp7_e12 ;

  {
  tmp_e11 = (void *)0;
  tmp = (char */* __FSEQ  */)0;
  result = (char *)0;
  __cil_tmp5 = strchr((char *)str, chr);
  result = (char *)__cil_tmp5;
  __cil_tmp6 = /*3*/__mkptr_string_fs((char *)((char *)result));
  __cil_tmp7 = __cil_tmp6._p;
  __cil_tmp7_e12 = __cil_tmp6._ms._e;
  tmp_e11 = __cil_tmp7_e12;
  tmp = __cil_tmp7;
  __cil_tmp8._p = tmp;
  __cil_tmp8._ms._e = tmp_e11;
  return (__cil_tmp8);
}
}
extern char */*4*/__mkptr_string(char *p ) ;
char */*2*/strchr_wrapper(char *str , int chr ) ;
char */*2*/strchr_wrapper(char *str , int chr ) 
{ char *result ;
  char *tmp ;
  char *__cil_tmp5 ;
  char *__cil_tmp6 ;

  {
  tmp = (char *)0;
  result = (char *)0;
  __cil_tmp5 = strchr((char *)str, chr);
  result = (char *)__cil_tmp5;
  __cil_tmp6 = /*4*/__mkptr_string((char *)((char *)result));
  tmp = (char *)__cil_tmp6;
  return ((char *)tmp);
}
}
