struct  printf_arguments {
   int i ;
   double d ;
   char  *3s  &4;
   long long ll ;
};
 extern void __ccuredInit(void) ;
 extern void abort_deepcopy(char  * errmsg  ) ;
 extern char  * strchr(char  *   , int   ) ;
 extern void exit(int   ) ;
//

char  *26/*1*/strchr_wrapper(char  * str  , int chr  )  &28;
char  * /*2*/strchr_wrapper(char  * str  , int chr  ) ;
void foo(char  * s  ) ;
 void foo(char  * s  ) 
{ char  *16res  &17;
  char  *18tmp  &19;
  char  * ( * p_strchr)(char  *   , int   ) ;
  char  * tmp___0 ;

  {
  tmp = ( char  *18)/*1*/strchr_wrapper (s, 'q');
  res  = tmp;
  p_strchr = & /*2*/strchr_wrapper ;
  tmp___0 = (char  * )((*p_strchr))(s, 'q');
  if ((unsigned int )res != (unsigned int )tmp___0) {
    exit (1);
  }
  res = res  + 1;
  return;
}
}
 extern char  *38/*3*/__mkptr_string(char  * p  )  &40;
char  *26/*1*/strchr_wrapper(char  * str  , int chr  )  &28;
 char  *26/*1*/strchr_wrapper(char  * str  , int chr  ) 
{ char  * result ;
  char  *36tmp  &37;

  {
  result = (char  * )strchr (str, chr);
  tmp = ( char  *36)/*3*/__mkptr_string ((char  * )result);
   return (tmp);
}
}
 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 ;

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