/* 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 ;
};
struct meta_wildp_void {
   void *_b ;
}   ;
struct wildp_void {
   void * __WILD  _p ;
   struct meta_wildp_void _ms ;
}   ;
typedef struct wildp_void wildp_void;
struct meta_wildp_p_void {
   void *_b ;
}   ;
struct wildp_wildp_void {
   wildp_void * __WILD  _p ;
   struct meta_wildp_p_void _ms ;
}   ;
typedef struct wildp_wildp_void wildp_wildp_void;
struct meta_wildp_int {
   void *_b ;
}   ;
struct wildp_int {
   int * __WILD  _p ;
   struct meta_wildp_int _ms ;
}   ;
typedef struct wildp_int wildp_int;
struct parent {
   wildp_wildp_void vtbl ;
   wildp_int f1 ;
};
typedef struct parent Parent;
struct child {
   struct wildp_wildp_void vtbl ;
   struct wildp_int f2 ;
   int f3 ;
};
typedef struct child Child;
struct meta_wildp_void___0 {
   void *_b ;
}   ;
struct meta_wildp_Parent {
   void *_b ;
}   ;
extern void __ccuredInit(void) ;
extern  __attribute__((__noreturn__)) void abort_deepcopy(char *errmsg ) ;
struct meta_wildp_void___1 {
   void *_b ;
}   ;
struct wildp_void___1 {
   void * __WILD  _p ;
   struct meta_wildp_void___1 _ms ;
}   ;
typedef struct wildp_void___1 wildp_void___1;
struct __argumentStructure1 {
   wildp_void___1 __res ;
   struct wildp_void___1 self_rtti ;
   struct wildp_void___1 x ;
};
struct meta_wildp_s___argumentStructure1 {
   void *_b ;
}   ;
struct __functionDescriptor foo_P__descriptor ;
void foo_P_t(void * __WILD  __thePArgs , void *__thePArgs_b )  __TAGGED  ;
void foo_P_t(void * __WILD  __thePArgs , void *__thePArgs_b ) 
{ int volatile   ___first_local ;
  void * __WILD  self_rtti ;
  Parent * __WILD  x ;
  Parent * __WILD  self ;
  struct __argumentStructure1 * __WILD  __pArgs ;
  struct __argumentStructure1 * __WILD  __cil_tmp6 ;
  unsigned int _tlen7 ;
  void * __WILD  __cil_tmp8 ;
  unsigned int _tlen9 ;
  Parent * __WILD  __cil_tmp10 ;
  Parent * __WILD  __cil_tmp11 ;
  unsigned int _tlen12 ;
  void * __WILD  __cil_tmp13 ;
  unsigned int _tlen14 ;
  void *self_rtti_b27 ;
  void *x_b28 ;
  void *self_b29 ;
  void *__pArgs_b30 ;
  void *__cil_tmp6_b31 ;
  void *__cil_tmp8_b32 ;
  void *__cil_tmp10_b33 ;
  void *__cil_tmp11_b34 ;
  void *__cil_tmp13_b35 ;

  {
  __pArgs_b30 = (void *)0;
  self_b29 = (void *)0;
  x_b28 = (void *)0;
  self_rtti_b27 = (void *)0;
  __cil_tmp6 = (struct __argumentStructure1 */* __WILD  */)__thePArgs;
  __cil_tmp6_b31 = __thePArgs_b;
  __pArgs_b30 = __cil_tmp6_b31;
  __pArgs = __cil_tmp6;
  _tlen7 = CHECK_FETCHLENGTH((void *)(& __pArgs->self_rtti), __pArgs_b30, 0);
  CHECK_BOUNDS_LEN(__pArgs_b30, _tlen7, (void *)(& __pArgs->self_rtti), sizeof(struct wildp_void___1 ),
                   sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERREAD(__pArgs_b30, _tlen7, (void *)(& __pArgs->self_rtti));
  __cil_tmp8 = (void */* __WILD  */)__pArgs->self_rtti._p;
  __cil_tmp8_b32 = __pArgs->self_rtti._ms._b;
  self_rtti_b27 = __cil_tmp8_b32;
  self_rtti = __cil_tmp8;
  _tlen9 = _tlen7;
  CHECK_BOUNDS_LEN(__pArgs_b30, _tlen9, (void *)(& __pArgs->x), sizeof(struct wildp_void___1 ),
                   sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERREAD(__pArgs_b30, _tlen9, (void *)(& __pArgs->x));
  __cil_tmp10 = (Parent */* __WILD  */)__pArgs->x._p;
  __cil_tmp10_b33 = __pArgs->x._ms._b;
  x_b28 = __cil_tmp10_b33;
  x = __cil_tmp10;
  __cil_tmp11 = (Parent */* __WILD  */)self_rtti;
  __cil_tmp11_b34 = self_rtti_b27;
  self_b29 = __cil_tmp11_b34;
  self = __cil_tmp11;
  {
  _tlen12 = CHECK_FETCHLENGTH((void *)(& self->f1), self_b29, 0);
  CHECK_BOUNDS_LEN(self_b29, _tlen12, (void *)(& self->f1), sizeof(wildp_int ), sizeof(wildp_int ));
  CHECK_WILDPOINTERREAD(self_b29, _tlen12, (void *)(& self->f1));
  __cil_tmp13 = (void */* __WILD  */)self->f1._p;
  __cil_tmp13_b35 = self->f1._ms._b;
  _tlen14 = _tlen7;
  CHECK_BOUNDS_LEN(__pArgs_b30, _tlen14, (void *)(& __pArgs->__res), sizeof(wildp_void___1 ),
                   sizeof(wildp_void___1 ));
  CHECK_WILDPOINTERWRITE(__pArgs_b30, _tlen14, (void *)(& __pArgs->__res), __cil_tmp13_b35,
                         (void *)__cil_tmp13, (void *)(& ___first_local));
  __pArgs->__res._ms._b = __cil_tmp13_b35;
  __pArgs->__res._p = __cil_tmp13;
  goto return_label;
  }

  return_label: /* CIL Label */ 
  return;
}
}
struct __argumentStructure2 {
   struct wildp_void___1 __res ;
   struct wildp_void___1 self_rtti ;
};
struct meta_wildp_Parent___0 {
   void *_b ;
}   ;
struct meta_wildp_s___argumentStructure2 {
   void *_b ;
}   ;
struct __functionDescriptor bar_P__descriptor ;
void bar_P_t(void * __WILD  __thePArgs , void *__thePArgs_b )  __TAGGED  ;
void bar_P_t(void * __WILD  __thePArgs , void *__thePArgs_b ) 
{ int volatile   ___first_local ;
  void * __WILD  self_rtti ;
  Parent * __WILD  self ;
  struct __argumentStructure2 * __WILD  __pArgs ;
  struct __argumentStructure2 * __WILD  __cil_tmp5 ;
  unsigned int _tlen6 ;
  void * __WILD  __cil_tmp7 ;
  Parent * __WILD  __cil_tmp8 ;
  unsigned int _tlen9 ;
  void * __WILD  __cil_tmp10 ;
  unsigned int _tlen11 ;
  void *self_rtti_b22 ;
  void *self_b23 ;
  void *__pArgs_b24 ;
  void *__cil_tmp5_b25 ;
  void *__cil_tmp7_b26 ;
  void *__cil_tmp8_b27 ;
  void *__cil_tmp10_b28 ;

  {
  __pArgs_b24 = (void *)0;
  self_b23 = (void *)0;
  self_rtti_b22 = (void *)0;
  __cil_tmp5 = (struct __argumentStructure2 */* __WILD  */)__thePArgs;
  __cil_tmp5_b25 = __thePArgs_b;
  __pArgs_b24 = __cil_tmp5_b25;
  __pArgs = __cil_tmp5;
  _tlen6 = CHECK_FETCHLENGTH((void *)(& __pArgs->self_rtti), __pArgs_b24, 0);
  CHECK_BOUNDS_LEN(__pArgs_b24, _tlen6, (void *)(& __pArgs->self_rtti), sizeof(struct wildp_void___1 ),
                   sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERREAD(__pArgs_b24, _tlen6, (void *)(& __pArgs->self_rtti));
  __cil_tmp7 = (void */* __WILD  */)__pArgs->self_rtti._p;
  __cil_tmp7_b26 = __pArgs->self_rtti._ms._b;
  self_rtti_b22 = __cil_tmp7_b26;
  self_rtti = __cil_tmp7;
  __cil_tmp8 = (Parent */* __WILD  */)self_rtti;
  __cil_tmp8_b27 = self_rtti_b22;
  self_b23 = __cil_tmp8_b27;
  self = __cil_tmp8;
  {
  _tlen9 = CHECK_FETCHLENGTH((void *)(& self->f1), self_b23, 0);
  CHECK_BOUNDS_LEN(self_b23, _tlen9, (void *)(& self->f1), sizeof(wildp_int ), sizeof(wildp_int ));
  CHECK_WILDPOINTERREAD(self_b23, _tlen9, (void *)(& self->f1));
  __cil_tmp10 = (void */* __WILD  */)self->f1._p;
  __cil_tmp10_b28 = self->f1._ms._b;
  _tlen11 = _tlen6;
  CHECK_BOUNDS_LEN(__pArgs_b24, _tlen11, (void *)(& __pArgs->__res), sizeof(struct wildp_void___1 ),
                   sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERWRITE(__pArgs_b24, _tlen11, (void *)(& __pArgs->__res), __cil_tmp10_b28,
                         (void *)__cil_tmp10, (void *)(& ___first_local));
  __pArgs->__res._ms._b = __cil_tmp10_b28;
  __pArgs->__res._p = __cil_tmp10;
  goto return_label;
  }

  return_label: /* CIL Label */ 
  return;
}
}
struct __argumentStructure3 {
   struct wildp_void___1 __res ;
   struct wildp_void___1 self_rtti ;
   struct wildp_void___1 x ;
};
struct meta_wildp_Child {
   void *_b ;
}   ;
struct meta_wildp_s___argumentStructure3 {
   void *_b ;
}   ;
struct __functionDescriptor foo_C__descriptor ;
void foo_C_t(void * __WILD  __thePArgs , void *__thePArgs_b )  __TAGGED  ;
void foo_C_t(void * __WILD  __thePArgs , void *__thePArgs_b ) 
{ int volatile   ___first_local ;
  void * __WILD  self_rtti ;
  Parent * __WILD  x ;
  Child * __WILD  self ;
  struct __argumentStructure3 * __WILD  __pArgs ;
  struct __argumentStructure3 * __WILD  __cil_tmp6 ;
  unsigned int _tlen7 ;
  void * __WILD  __cil_tmp8 ;
  unsigned int _tlen9 ;
  Parent * __WILD  __cil_tmp10 ;
  Child * __WILD  __cil_tmp11 ;
  unsigned int _tlen12 ;
  unsigned int _tlen13 ;
  void * __WILD  __cil_tmp14 ;
  unsigned int _tlen15 ;
  void *self_rtti_b28 ;
  void *x_b29 ;
  void *self_b30 ;
  void *__pArgs_b31 ;
  void *__cil_tmp6_b32 ;
  void *__cil_tmp8_b33 ;
  void *__cil_tmp10_b34 ;
  void *__cil_tmp11_b35 ;
  void *__cil_tmp14_b36 ;

  {
  __pArgs_b31 = (void *)0;
  self_b30 = (void *)0;
  x_b29 = (void *)0;
  self_rtti_b28 = (void *)0;
  __cil_tmp6 = (struct __argumentStructure3 */* __WILD  */)__thePArgs;
  __cil_tmp6_b32 = __thePArgs_b;
  __pArgs_b31 = __cil_tmp6_b32;
  __pArgs = __cil_tmp6;
  _tlen7 = CHECK_FETCHLENGTH((void *)(& __pArgs->self_rtti), __pArgs_b31, 0);
  CHECK_BOUNDS_LEN(__pArgs_b31, _tlen7, (void *)(& __pArgs->self_rtti), sizeof(struct wildp_void___1 ),
                   sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERREAD(__pArgs_b31, _tlen7, (void *)(& __pArgs->self_rtti));
  __cil_tmp8 = (void */* __WILD  */)__pArgs->self_rtti._p;
  __cil_tmp8_b33 = __pArgs->self_rtti._ms._b;
  self_rtti_b28 = __cil_tmp8_b33;
  self_rtti = __cil_tmp8;
  _tlen9 = _tlen7;
  CHECK_BOUNDS_LEN(__pArgs_b31, _tlen9, (void *)(& __pArgs->x), sizeof(struct wildp_void___1 ),
                   sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERREAD(__pArgs_b31, _tlen9, (void *)(& __pArgs->x));
  __cil_tmp10 = (Parent */* __WILD  */)__pArgs->x._p;
  __cil_tmp10_b34 = __pArgs->x._ms._b;
  x_b29 = __cil_tmp10_b34;
  x = __cil_tmp10;
  __cil_tmp11 = (Child */* __WILD  */)self_rtti;
  __cil_tmp11_b35 = self_rtti_b28;
  self_b30 = __cil_tmp11_b35;
  self = __cil_tmp11;
  {
  _tlen12 = CHECK_FETCHLENGTH((void *)(& self->f2), self_b30, 0);
  CHECK_BOUNDS_LEN(self_b30, _tlen12, (void *)(& self->f2), sizeof(struct wildp_int ),
                   sizeof(struct wildp_int ));
  CHECK_WILDPOINTERREAD(self_b30, _tlen12, (void *)(& self->f2));
  _tlen13 = _tlen12;
  CHECK_BOUNDS_LEN(self_b30, _tlen13, (void *)(& self->f3), sizeof(int ), sizeof(int ));
  __cil_tmp14 = (void */* __WILD  */)(self->f2._p + self->f3);
  __cil_tmp14_b36 = self->f2._ms._b;
  _tlen15 = _tlen7;
  CHECK_BOUNDS_LEN(__pArgs_b31, _tlen15, (void *)(& __pArgs->__res), sizeof(struct wildp_void___1 ),
                   sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERWRITE(__pArgs_b31, _tlen15, (void *)(& __pArgs->__res), __cil_tmp14_b36,
                         (void *)__cil_tmp14, (void *)(& ___first_local));
  __pArgs->__res._ms._b = __cil_tmp14_b36;
  __pArgs->__res._p = __cil_tmp14;
  goto return_label;
  }

  return_label: /* CIL Label */ 
  return;
}
}
struct _tagged_a_s_wildp_void {
   unsigned int _len ;
   struct wildp_void ( __WILD  _data)[2]  __attribute__((__packed__)) ;
   int _tags[(sizeof(struct wildp_void /* __WILD  */[2]) + 127U) >> 7]  __attribute__((__packed__)) ;
};
typedef struct _tagged_a_s_wildp_void _tagged_a_s_wildp_void;
struct meta_wildp_fun {
   void *_b ;
}   ;
_tagged_a_s_wildp_void vtbl_P_t  __TAGGED   =    {(sizeof(struct wildp_void /* __WILD  */[2]) + 3U) >> 2, {{(void */* __WILD  */)((void ( __NOUNROLL  (*/* __WILD  */))(void * __WILD   ,
                                                                                                                          void * ))(& foo_P_t)),
                                                              {& foo_P__descriptor._pfun}},
                                                             {(void */* __WILD  */)((void ( __NOUNROLL  (*/* __WILD  */))(void * __WILD   ,
                                                                                                                          void * ))(& bar_P_t)),
                                                              {& bar_P__descriptor._pfun}}},
    {10U}};
_tagged_a_s_wildp_void vtbl_C_t  __TAGGED   =    {(sizeof(struct wildp_void /* __WILD  */[2]) + 3U) >> 2, {{(void */* __WILD  */)((void ( __NOUNROLL  (*/* __WILD  */))(void * __WILD   ,
                                                                                                                          void * ))(& foo_C_t)),
                                                              {& foo_C__descriptor._pfun}},
                                                             {(void */* __WILD  */)((void ( __NOUNROLL  (*/* __WILD  */))(void * __WILD   ,
                                                                                                                          void * ))(& bar_P_t)),
                                                              {& bar_P__descriptor._pfun}}},
    {10U}};
struct _tagged_a_int {
   unsigned int _len ;
   int ( __WILD  _data)[8]  __attribute__((__packed__)) ;
   int _tags[(sizeof(int /* __WILD  */[8]) + 127U) >> 7]  __attribute__((__packed__)) ;
};
typedef struct _tagged_a_int _tagged_a_int;
_tagged_a_int array_t  __TAGGED   =    {(sizeof(int /* __WILD  */[8]) + 3U) >> 2};
void ctor_P_w(Parent * __WILD  p , void *p_b ) ;
void ctor_P_w(Parent * __WILD  p , void *p_b ) 
{ int volatile   ___first_local ;
  wildp_void * __WILD  __cil_tmp2 ;
  unsigned int _tlen3 ;
  int * __WILD  __cil_tmp5 ;
  unsigned int _tlen6 ;
  void *__cil_tmp2_b11 ;
  void *__cil_tmp5_b12 ;

  {
  __cil_tmp2 = (wildp_void */* __WILD  */)(& vtbl_P_t._data[0]);
  __cil_tmp2_b11 = & vtbl_P_t._data;
  _tlen3 = CHECK_FETCHLENGTH((void *)(& p->vtbl), p_b, 0);
  CHECK_BOUNDS_LEN(p_b, _tlen3, (void *)(& p->vtbl), sizeof(wildp_wildp_void ), sizeof(wildp_wildp_void ));
  CHECK_WILDPOINTERWRITE(p_b, _tlen3, (void *)(& p->vtbl), __cil_tmp2_b11, (void *)__cil_tmp2,
                         (void *)(& ___first_local));
  p->vtbl._ms._b = __cil_tmp2_b11;
  p->vtbl._p = __cil_tmp2;
  __cil_tmp5 = (int */* __WILD  */)(& array_t._data[0]);
  __cil_tmp5_b12 = & array_t._data;
  _tlen6 = _tlen3;
  CHECK_BOUNDS_LEN(p_b, _tlen6, (void *)(& p->f1), sizeof(wildp_int ), sizeof(wildp_int ));
  CHECK_WILDPOINTERWRITE(p_b, _tlen6, (void *)(& p->f1), __cil_tmp5_b12, (void *)__cil_tmp5,
                         (void *)(& ___first_local));
  p->f1._ms._b = __cil_tmp5_b12;
  p->f1._p = __cil_tmp5;
  return;
}
}
void ctor_C_w(Child * __WILD  c , void *c_b ) ;
void ctor_C_w(Child * __WILD  c , void *c_b ) 
{ int volatile   ___first_local ;
  wildp_void * __WILD  __cil_tmp2 ;
  unsigned int _tlen3 ;
  int * __WILD  __cil_tmp5 ;
  unsigned int _tlen6 ;
  unsigned int _tlen7 ;
  void *__cil_tmp2_b12 ;
  void *__cil_tmp5_b13 ;

  {
  __cil_tmp2 = (wildp_void */* __WILD  */)(& vtbl_C_t._data[0]);
  __cil_tmp2_b12 = & vtbl_C_t._data;
  _tlen3 = CHECK_FETCHLENGTH((void *)(& c->vtbl), c_b, 0);
  CHECK_BOUNDS_LEN(c_b, _tlen3, (void *)(& c->vtbl), sizeof(struct wildp_wildp_void ),
                   sizeof(struct wildp_wildp_void ));
  CHECK_WILDPOINTERWRITE(c_b, _tlen3, (void *)(& c->vtbl), __cil_tmp2_b12, (void *)__cil_tmp2,
                         (void *)(& ___first_local));
  c->vtbl._ms._b = __cil_tmp2_b12;
  c->vtbl._p = __cil_tmp2;
  __cil_tmp5 = (int */* __WILD  */)(& array_t._data[0]);
  __cil_tmp5_b13 = & array_t._data;
  _tlen6 = _tlen3;
  CHECK_BOUNDS_LEN(c_b, _tlen6, (void *)(& c->f2), sizeof(struct wildp_int ), sizeof(struct wildp_int ));
  CHECK_WILDPOINTERWRITE(c_b, _tlen6, (void *)(& c->f2), __cil_tmp5_b13, (void *)__cil_tmp5,
                         (void *)(& ___first_local));
  c->f2._ms._b = __cil_tmp5_b13;
  c->f2._p = __cil_tmp5;
  _tlen7 = _tlen3;
  CHECK_BOUNDS_LEN(c_b, _tlen7, (void *)(& c->f3), sizeof(int ), sizeof(int ));
  CHECK_ZEROTAGS(c_b, _tlen7, (void *)(& c->f3), sizeof(int ));
  c->f3 = 5;
  return;
}
}
extern void ( /* missing proto */  pfoo1_t)(void * __WILD   , void * )  __TAGGED  ;
struct __argumentStructure5 {
   struct wildp_void___1 __res ;
   struct wildp_void___1 fld1 ;
   struct wildp_void___1 fld2 ;
};
struct __argumentStructure4 {
   struct wildp_void___1 __res ;
   struct wildp_void___1 fld1 ;
   struct wildp_void___1 fld2 ;
};
struct _tagged_Parent {
   unsigned int _len ;
   Parent _data  __attribute__((__packed__)) ;
   int _tags[(sizeof(Parent ) + 127U) >> 7]  __attribute__((__packed__)) ;
};
typedef struct _tagged_Parent _tagged_Parent;
struct _tagged_Child {
   unsigned int _len ;
   Child _data  __attribute__((__packed__)) ;
   int _tags[(sizeof(Child ) + 127U) >> 7]  __attribute__((__packed__)) ;
};
typedef struct _tagged_Child _tagged_Child;
struct _tagged_s___argumentStructure4 {
   unsigned int _len ;
   struct __argumentStructure4 _data  __attribute__((__packed__)) ;
   int _tags[(sizeof(struct __argumentStructure4 ) + 127U) >> 7]  __attribute__((__packed__)) ;
};
typedef struct _tagged_s___argumentStructure4 _tagged_s___argumentStructure4;
struct _tagged_s___argumentStructure5 {
   unsigned int _len ;
   struct __argumentStructure5 _data  __attribute__((__packed__)) ;
   int _tags[(sizeof(struct __argumentStructure5 ) + 127U) >> 7]  __attribute__((__packed__)) ;
};
typedef struct _tagged_s___argumentStructure5 _tagged_s___argumentStructure5;
int main(void) ;
int main(void) 
{ int volatile   ___first_local ;
  _tagged_Parent p  __TAGGED  ;
  _tagged_Child c  __TAGGED  ;
  Parent * __WILD  pp ;
  Parent * __WILD  pc ;
  Child * __WILD  pc1 ;
  void ( __NOUNROLL  (* __WILD  pfoo))(void * __WILD   , void * ) ;
  _tagged_s___argumentStructure4 __theActualArgs7  __TAGGED  ;
  _tagged_s___argumentStructure5 __theActualArgs8  __TAGGED  ;
  int __retres9 ;
  unsigned int iter10 ;
  Parent * __WILD  __cil_tmp11 ;
  Parent * __WILD  __cil_tmp12 ;
  Parent * __WILD  __cil_tmp13 ;
  Child * __WILD  __cil_tmp14 ;
  Child * __WILD  __cil_tmp15 ;
  unsigned int _tlen16 ;
  unsigned int _tlen17 ;
  void ( __NOUNROLL  (* __WILD  __cil_tmp18))(void * __WILD   , void * ) ;
  void * __WILD  __cil_tmp19 ;
  unsigned int _tlen20 ;
  void * __WILD  __cil_tmp22 ;
  unsigned int _tlen23 ;
  void * __WILD  __cil_tmp24 ;
  unsigned int _tlen25 ;
  unsigned int _tlen26 ;
  void ( __NOUNROLL  (* __WILD  __cil_tmp27))(void * __WILD   , void * ) ;
  void * __WILD  __cil_tmp28 ;
  unsigned int _tlen29 ;
  void * __WILD  __cil_tmp30 ;
  unsigned int _tlen31 ;
  void * __WILD  __cil_tmp32 ;
  void *pp_b50 ;
  void *pc_b51 ;
  void *pc1_b52 ;
  void *pfoo_b53 ;
  void *__cil_tmp11_b54 ;
  void *__cil_tmp12_b55 ;
  void *__cil_tmp13_b56 ;
  void *__cil_tmp14_b57 ;
  void *__cil_tmp15_b58 ;
  void *__cil_tmp18_b59 ;
  void *__cil_tmp19_b60 ;
  void *__cil_tmp22_b61 ;
  void *__cil_tmp24_b62 ;
  void *__cil_tmp27_b63 ;
  void *__cil_tmp28_b64 ;
  void *__cil_tmp30_b65 ;
  void *__cil_tmp32_b66 ;

  {
  __theActualArgs8._len = (sizeof(struct __argumentStructure5 ) + 3U) >> 2;
  iter10 = 0;
  while (iter10 < (int )((sizeof(struct __argumentStructure5 ) + 127U) >> 7)) {
    __theActualArgs8._tags[iter10] = 0;
    iter10 ++;
  }
  __theActualArgs7._len = (sizeof(struct __argumentStructure4 ) + 3U) >> 2;
  iter10 = 0;
  while (iter10 < (int )((sizeof(struct __argumentStructure4 ) + 127U) >> 7)) {
    __theActualArgs7._tags[iter10] = 0;
    iter10 ++;
  }
  pfoo_b53 = (void *)0;
  pc1_b52 = (void *)0;
  pc_b51 = (void *)0;
  pp_b50 = (void *)0;
  c._len = (sizeof(Child ) + 3U) >> 2;
  iter10 = 0;
  while (iter10 < (int )((sizeof(Child ) + 127U) >> 7)) {
    c._tags[iter10] = 0;
    iter10 ++;
  }
  p._len = (sizeof(Parent ) + 3U) >> 2;
  iter10 = 0;
  while (iter10 < (int )((sizeof(Parent ) + 127U) >> 7)) {
    p._tags[iter10] = 0;
    iter10 ++;
  }
  __ccuredAlwaysStopOnError = 0;
  __ccuredUseStrings = 1;
  __ccuredLogNonPointers = 0;
  __ccuredInit();
  __cil_tmp11 = (Parent */* __WILD  */)(& p._data);
  __cil_tmp11_b54 = & p._data;
  pp_b50 = __cil_tmp11_b54;
  pp = __cil_tmp11;
  __cil_tmp12 = (Parent */* __WILD  */)(& c._data);
  __cil_tmp12_b55 = & c._data;
  pc_b51 = __cil_tmp12_b55;
  pc = __cil_tmp12;
  __cil_tmp13 = (Parent */* __WILD  */)(& p._data);
  __cil_tmp13_b56 = & p._data;
  ctor_P_w(__cil_tmp13, __cil_tmp13_b56);
  __cil_tmp14 = (Child */* __WILD  */)(& c._data);
  __cil_tmp14_b57 = & c._data;
  ctor_C_w(__cil_tmp14, __cil_tmp14_b57);
  __cil_tmp15 = (Child */* __WILD  */)pc;
  __cil_tmp15_b58 = pc_b51;
  pc1_b52 = __cil_tmp15_b58;
  pc1 = __cil_tmp15;
  _tlen16 = CHECK_FETCHLENGTH((void *)(& pp->vtbl), pp_b50, 0);
  CHECK_BOUNDS_LEN(pp_b50, _tlen16, (void *)(& pp->vtbl), sizeof(wildp_wildp_void ),
                   sizeof(wildp_wildp_void ));
  CHECK_WILDPOINTERREAD(pp_b50, _tlen16, (void *)(& pp->vtbl));
  _tlen17 = CHECK_FETCHLENGTH((void *)pp->vtbl._p, pp->vtbl._ms._b, 0);
  CHECK_BOUNDS_LEN(pp->vtbl._ms._b, _tlen17, (void *)pp->vtbl._p, sizeof(wildp_void ),
                   sizeof(wildp_void ));
  CHECK_WILDPOINTERREAD(pp->vtbl._ms._b, _tlen17, (void *)pp->vtbl._p);
  __cil_tmp18 = (void ( __NOUNROLL  (*/* __WILD  */))(void * __WILD   , void * ))(pp->vtbl._p)->_p;
  __cil_tmp18_b59 = (pp->vtbl._p)->_ms._b;
  pfoo_b53 = __cil_tmp18_b59;
  pfoo = __cil_tmp18;
  __cil_tmp19 = (void */* __WILD  */)((void */* __WILD  */)pp);
  __cil_tmp19_b60 = pp_b50;
  _tlen20 = CHECK_FETCHLENGTH((void *)(& __theActualArgs7._data.fld1), (void *)(& __theActualArgs7._data),
                              0);
  CHECK_BOUNDS_LEN((void *)(& __theActualArgs7._data), _tlen20, (void *)(& __theActualArgs7._data.fld1),
                   sizeof(struct wildp_void___1 ), sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERWRITE((void *)(& __theActualArgs7._data), _tlen20, (void *)(& __theActualArgs7._data.fld1),
                         __cil_tmp19_b60, (void *)__cil_tmp19, (void *)(& ___first_local));
  __theActualArgs7._data.fld1._ms._b = __cil_tmp19_b60;
  __theActualArgs7._data.fld1._p = __cil_tmp19;
  __cil_tmp22 = (void */* __WILD  */)pc;
  __cil_tmp22_b61 = pc_b51;
  _tlen23 = _tlen20;
  CHECK_BOUNDS_LEN((void *)(& __theActualArgs7._data), _tlen23, (void *)(& __theActualArgs7._data.fld2),
                   sizeof(struct wildp_void___1 ), sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERWRITE((void *)(& __theActualArgs7._data), _tlen23, (void *)(& __theActualArgs7._data.fld2),
                         __cil_tmp22_b61, (void *)__cil_tmp22, (void *)(& ___first_local));
  __theActualArgs7._data.fld2._ms._b = __cil_tmp22_b61;
  __theActualArgs7._data.fld2._p = __cil_tmp22;
  CHECK_FUNCTIONPOINTER((void *)pfoo, pfoo_b53, 1);
  __cil_tmp24 = (void */* __WILD  */)(& __theActualArgs7._data);
  __cil_tmp24_b62 = & __theActualArgs7._data;
  (*pfoo)(__cil_tmp24, __cil_tmp24_b62);
  _tlen25 = CHECK_FETCHLENGTH((void *)(& pc->vtbl), pc_b51, 0);
  CHECK_BOUNDS_LEN(pc_b51, _tlen25, (void *)(& pc->vtbl), sizeof(wildp_wildp_void ),
                   sizeof(wildp_wildp_void ));
  CHECK_WILDPOINTERREAD(pc_b51, _tlen25, (void *)(& pc->vtbl));
  _tlen26 = CHECK_FETCHLENGTH((void *)pc->vtbl._p, pc->vtbl._ms._b, 0);
  CHECK_BOUNDS_LEN(pc->vtbl._ms._b, _tlen26, (void *)pc->vtbl._p, sizeof(wildp_void ),
                   sizeof(wildp_void ));
  CHECK_WILDPOINTERREAD(pc->vtbl._ms._b, _tlen26, (void *)pc->vtbl._p);
  __cil_tmp27 = (void ( __NOUNROLL  (*/* __WILD  */))(void * __WILD   , void * ))(pc->vtbl._p)->_p;
  __cil_tmp27_b63 = (pc->vtbl._p)->_ms._b;
  pfoo_b53 = __cil_tmp27_b63;
  pfoo = __cil_tmp27;
  __cil_tmp28 = (void */* __WILD  */)((void */* __WILD  */)pc);
  __cil_tmp28_b64 = pc_b51;
  _tlen29 = CHECK_FETCHLENGTH((void *)(& __theActualArgs8._data.fld1), (void *)(& __theActualArgs8._data),
                              0);
  CHECK_BOUNDS_LEN((void *)(& __theActualArgs8._data), _tlen29, (void *)(& __theActualArgs8._data.fld1),
                   sizeof(struct wildp_void___1 ), sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERWRITE((void *)(& __theActualArgs8._data), _tlen29, (void *)(& __theActualArgs8._data.fld1),
                         __cil_tmp28_b64, (void *)__cil_tmp28, (void *)(& ___first_local));
  __theActualArgs8._data.fld1._ms._b = __cil_tmp28_b64;
  __theActualArgs8._data.fld1._p = __cil_tmp28;
  __cil_tmp30 = (void */* __WILD  */)pp;
  __cil_tmp30_b65 = pp_b50;
  _tlen31 = _tlen29;
  CHECK_BOUNDS_LEN((void *)(& __theActualArgs8._data), _tlen31, (void *)(& __theActualArgs8._data.fld2),
                   sizeof(struct wildp_void___1 ), sizeof(struct wildp_void___1 ));
  CHECK_WILDPOINTERWRITE((void *)(& __theActualArgs8._data), _tlen31, (void *)(& __theActualArgs8._data.fld2),
                         __cil_tmp30_b65, (void *)__cil_tmp30, (void *)(& ___first_local));
  __theActualArgs8._data.fld2._ms._b = __cil_tmp30_b65;
  __theActualArgs8._data.fld2._p = __cil_tmp30;
  __cil_tmp32 = (void */* __WILD  */)(& __theActualArgs8._data);
  __cil_tmp32_b66 = & __theActualArgs8._data;
  pfoo1_t(__cil_tmp32, __cil_tmp32_b66);
  __retres9 = 0;
  return (__retres9);
}
}
struct __functionDescriptor foo_P__descriptor  =    {0, (void (*)())(& foo_P_t), 1};
struct __functionDescriptor bar_P__descriptor  =    {0, (void (*)())(& bar_P_t), 1};
struct __functionDescriptor foo_C__descriptor  =    {0, (void (*)())(& foo_C_t), 1};
